????
Current Path : C:/opt/pgsql/share/extension/ |
Current File : C:/opt/pgsql/share/extension/mobilitydb--1.1.1.sql |
/***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * set.sql * Functions for sets of values. */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE TYPE intset; CREATE TYPE bigintset; CREATE TYPE floatset; CREATE TYPE textset; CREATE TYPE dateset; CREATE TYPE tstzset; CREATE FUNCTION intset_in(cstring) RETURNS intset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intset_out(intset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intset_recv(internal) RETURNS intset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intset_send(intset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintset_in(cstring) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintset_out(bigintset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintset_recv(internal) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintset_send(bigintset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatset_in(cstring) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatset_out(floatset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatset_recv(internal) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatset_send(floatset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textset_in(cstring) RETURNS textset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textset_out(textset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textset_recv(internal) RETURNS textset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textset_send(textset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateset_in(cstring) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateset_out(dateset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateset_recv(internal) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateset_send(dateset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzset_in(cstring) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzset_out(tstzset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzset_recv(internal) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzset_send(tstzset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_analyze(internal) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_analyze' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE intset ( internallength = variable, input = intset_in, output = intset_out, receive = intset_recv, send = intset_send, alignment = double, storage = extended, analyze = span_analyze ); CREATE TYPE bigintset ( internallength = variable, input = bigintset_in, output = bigintset_out, receive = bigintset_recv, send = bigintset_send, alignment = double, storage = extended, analyze = span_analyze ); CREATE TYPE floatset ( internallength = variable, input = floatset_in, output = floatset_out, receive = floatset_recv, send = floatset_send, alignment = double, storage = extended, analyze = span_analyze ); CREATE TYPE textset ( internallength = variable, input = textset_in, output = textset_out, receive = textset_recv, send = textset_send, alignment = double, storage = extended ); CREATE TYPE dateset ( internallength = variable, input = dateset_in, output = dateset_out, receive = dateset_recv, send = dateset_send, alignment = double, storage = extended ); CREATE TYPE tstzset ( internallength = variable, input = tstzset_in, output = tstzset_out, receive = tstzset_recv, send = tstzset_send, alignment = double, storage = extended, analyze = span_analyze ); /******************************************************************************/ -- Input/output in WKT, WKB, and HexWKB format CREATE FUNCTION intsetFromBinary(bytea) RETURNS intset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintsetFromBinary(bytea) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatsetFromBinary(bytea) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textsetFromBinary(bytea) RETURNS textset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datesetFromBinary(bytea) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzsetFromBinary(bytea) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intsetFromHexWKB(text) RETURNS intset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintsetFromHexWKB(text) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatsetFromHexWKB(text) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textsetFromHexWKB(text) RETURNS textset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datesetFromHexWKB(text) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzsetFromHexWKB(text) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(intset) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(bigintset) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(floatset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(textset) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(dateset) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tstzset) RETURNS text AS 'MODULE_PATHNAME', 'Set_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(intset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(bigintset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(floatset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(textset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(dateset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tstzset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(intset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(bigintset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(floatset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(textset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(dateset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tstzset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor functions ******************************************************************************/ CREATE FUNCTION set(integer[]) RETURNS intset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(bigint[]) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(float[]) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(text[]) RETURNS textset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(date[]) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(timestamptz[]) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Conversion functions ******************************************************************************/ CREATE FUNCTION set(integer) RETURNS intset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(float) RETURNS floatset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(text) RETURNS textset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(date) RETURNS dateset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(timestamptz) RETURNS tstzset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (integer AS intset) WITH FUNCTION set(integer); CREATE CAST (bigint AS bigintset) WITH FUNCTION set(bigint); CREATE CAST (float AS floatset) WITH FUNCTION set(float); CREATE CAST (text AS textset) WITH FUNCTION set(text); CREATE CAST (date AS dateset) WITH FUNCTION set(date); CREATE CAST (timestamptz AS tstzset) WITH FUNCTION set(timestamptz); CREATE FUNCTION floatset(intset) RETURNS floatset AS 'MODULE_PATHNAME', 'Intset_to_floatset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intset(floatset) RETURNS intset AS 'MODULE_PATHNAME', 'Floatset_to_intset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intset AS floatset) WITH FUNCTION floatset(intset); CREATE CAST (floatset AS intset) WITH FUNCTION intset(floatset); CREATE FUNCTION tstzset(dateset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Dateset_to_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateset(tstzset) RETURNS dateset AS 'MODULE_PATHNAME', 'Tstzset_to_dateset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (dateset AS tstzset) WITH FUNCTION tstzset(dateset); CREATE CAST (tstzset AS dateset) WITH FUNCTION dateset(tstzset); /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION memSize(intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(bigintset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(floatset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(textset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tstzset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(bigintset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(floatset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(textset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(tstzset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(bigintset) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(floatset) RETURNS float AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(textset) RETURNS text AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(dateset) RETURNS date AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tstzset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(bigintset) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(floatset) RETURNS float AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(textset) RETURNS text AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(dateset) RETURNS date AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tstzset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(intset, integer) RETURNS integer AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(bigintset, integer) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(floatset, integer) RETURNS float AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(textset, integer) RETURNS text AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(dateset, integer) RETURNS date AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(tstzset, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /* Values is a reserved word in SQL */ CREATE FUNCTION getValues(intset) RETURNS integer[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(bigintset) RETURNS bigint[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(floatset) RETURNS float[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(textset) RETURNS text[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(dateset) RETURNS date[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(tstzset) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shift(intset, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Numset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(bigintset, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Numset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(floatset, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Numset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(dateset, integer) RETURNS dateset AS 'MODULE_PATHNAME', 'Numset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(tstzset, interval) RETURNS tstzset AS 'MODULE_PATHNAME', 'Tstzset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(intset, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Numset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(bigintset, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Numset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(floatset, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Numset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(dateset, integer) RETURNS dateset AS 'MODULE_PATHNAME', 'Numset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(tstzset, interval) RETURNS tstzset AS 'MODULE_PATHNAME', 'Tstzset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(intset, integer, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Numset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(bigintset, bigint, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Numset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(floatset, float, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Numset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(dateset, integer, integer) RETURNS dateset AS 'MODULE_PATHNAME', 'Numset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(tstzset, interval, interval) RETURNS tstzset AS 'MODULE_PATHNAME', 'Tstzset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(floatset, integer DEFAULT 0) RETURNS floatset AS 'MODULE_PATHNAME', 'Floatset_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION degrees(floatset, bool DEFAULT FALSE) RETURNS floatset AS 'MODULE_PATHNAME', 'Floatset_degrees' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION radians(floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Floatset_radians' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(textset) RETURNS textset AS 'MODULE_PATHNAME', 'Textset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(textset) RETURNS textset AS 'MODULE_PATHNAME', 'Textset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION initcap(textset) RETURNS textset AS 'MODULE_PATHNAME', 'Textset_initcap' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Transform a set to a set of values ******************************************************************************/ CREATE FUNCTION unnest(intset) RETURNS SETOF integer AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(bigintset) RETURNS SETOF bigint AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(floatset) RETURNS SETOF float AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(textset) RETURNS SETOF text AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(dateset) RETURNS SETOF date AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(tstzset) RETURNS SETOF timestamptz AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Temporal text concatenation *****************************************************************************/ CREATE FUNCTION textset_cat(text, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Textcat_text_textset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION textset_cat(textset, text) RETURNS textset AS 'MODULE_PATHNAME', 'Textcat_textset_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR || ( PROCEDURE = textset_cat, LEFTARG = text, RIGHTARG = textset ); CREATE OPERATOR || ( PROCEDURE = textset_cat, LEFTARG = textset, RIGHTARG = text ); /****************************************************************************** * Aggregate functions ******************************************************************************/ -- The function is not STRICT CREATE FUNCTION set_union_transfn(internal, integer) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, bigint) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, float) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, text) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, date) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, timestamptz) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not STRICT CREATE FUNCTION set_union_transfn(internal, intset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, bigintset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, floatset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, textset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, dateset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, tstzset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION intset_union_finalfn(internal) RETURNS intset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION bigintset_union_finalfn(internal) RETURNS bigintset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION floatset_union_finalfn(internal) RETURNS floatset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION dateset_union_finalfn(internal) RETURNS dateset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tstzset_union_finalfn(internal) RETURNS tstzset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION textset_union_finalfn(internal) RETURNS textset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE setUnion(integer) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = intset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(bigint) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = bigintset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(float) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = floatset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(text) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = textset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(date) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = dateset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(timestamptz) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = tstzset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(intset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = intset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(bigintset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = bigintset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(floatset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = floatset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(textset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = textset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(dateset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = dateset_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE setUnion(tstzset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = tstzset_union_finalfn, PARALLEL = safe ); /***************************************************************************** * Selectivity functions *****************************************************************************/ CREATE FUNCTION span_sel(internal, oid, internal, integer) RETURNS float AS 'MODULE_PATHNAME', 'Span_sel' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_joinsel(internal, oid, internal, smallint, internal) RETURNS float AS 'MODULE_PATHNAME', 'Span_joinsel' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Comparison functions for defining B-tree indexes ******************************************************************************/ CREATE FUNCTION set_eq(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(intset, intset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(bigintset, bigintset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(floatset, floatset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(textset, textset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(dateset, dateset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(tstzset, tstzset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(intset, intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(bigintset, bigintset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(floatset, floatset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(textset, textset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(dateset, dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(tstzset, tstzset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = intset, RIGHTARG = intset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = bigintset, RIGHTARG = bigintset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = floatset, RIGHTARG = floatset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = textset, RIGHTARG = textset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = dateset, RIGHTARG = dateset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = tstzset, RIGHTARG = tstzset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR CLASS intset_btree_ops DEFAULT FOR TYPE intset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(intset, intset); CREATE OPERATOR CLASS bigintset_btree_ops DEFAULT FOR TYPE bigintset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(bigintset, bigintset); CREATE OPERATOR CLASS floatset_btree_ops DEFAULT FOR TYPE floatset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(floatset, floatset); CREATE OPERATOR CLASS textset_btree_ops DEFAULT FOR TYPE textset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(textset, textset); CREATE OPERATOR CLASS dateset_btree_ops DEFAULT FOR TYPE dateset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(dateset, dateset); CREATE OPERATOR CLASS tstzset_btree_ops DEFAULT FOR TYPE tstzset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(tstzset, tstzset); /****************************************************************************** * Hash functions for defining hash indexes ******************************************************************************/ CREATE FUNCTION set_hash(intset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(bigintset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(floatset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(textset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(tstzset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(intset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(bigintset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(floatset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(textset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(dateset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(tstzset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS intset_hash_ops DEFAULT FOR TYPE intset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(intset), FUNCTION 2 set_hash_extended(intset, bigint); CREATE OPERATOR CLASS bigintset_hash_ops DEFAULT FOR TYPE bigintset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(bigintset), FUNCTION 2 set_hash_extended(bigintset, bigint); CREATE OPERATOR CLASS floatset_hash_ops DEFAULT FOR TYPE floatset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(floatset), FUNCTION 2 set_hash_extended(floatset, bigint); CREATE OPERATOR CLASS textset_hash_ops DEFAULT FOR TYPE textset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(textset), FUNCTION 2 set_hash_extended(textset, bigint); CREATE OPERATOR CLASS dateset_hash_ops DEFAULT FOR TYPE dateset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(dateset), FUNCTION 2 set_hash_extended(dateset, bigint); CREATE OPERATOR CLASS tstzset_hash_ops DEFAULT FOR TYPE tstzset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(tstzset), FUNCTION 2 set_hash_extended(tstzset, bigint); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * set_ops.sql * Operators for set types. */ /****************************************************************************** * Operators ******************************************************************************/ CREATE FUNCTION set_contains(intset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(bigintset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(floatset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(textset, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(dateset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(tstzset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = textset, RIGHTARG = text, COMMUTATOR = <@ ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = <@ ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = <@ ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = <@ ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_contained(integer, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(bigint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(float, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(text, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(date, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(timestamptz, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = text, RIGHTARG = textset, COMMUTATOR = @> ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = @> ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = @> ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = @> ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_overlaps(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = && ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = && ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_left(integer, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(intset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(bigint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(bigintset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(float, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(floatset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(text, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(textset, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(date, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(dateset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(timestamptz, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(tstzset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_left(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = text, RIGHTARG = textset, COMMUTATOR = >> ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = textset, RIGHTARG = text, COMMUTATOR = >> ); CREATE OPERATOR << ( PROCEDURE = set_left, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = >> ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = #>> ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = #>> ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = #>> ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = set_left, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_right(integer, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(intset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(bigint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(bigintset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(float, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(floatset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(text, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(textset, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(date, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(dateset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(timestamptz, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(tstzset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_right(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = text, RIGHTARG = textset, COMMUTATOR = << ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = textset, RIGHTARG = text, COMMUTATOR = << ); CREATE OPERATOR >> ( PROCEDURE = set_right, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = << ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = <<# ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = <<# ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = <<# ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = set_right, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_overleft(integer, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(intset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(bigint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(bigintset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(float, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(floatset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(text, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(textset, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(date, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(dateset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(timestamptz, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(tstzset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overleft(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = integer, RIGHTARG = intset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = intset, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = intset, RIGHTARG = intset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = bigint, RIGHTARG = bigintset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = bigintset, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = bigintset, RIGHTARG = bigintset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = float, RIGHTARG = floatset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = floatset, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = floatset, RIGHTARG = floatset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = text, RIGHTARG = textset ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = textset, RIGHTARG = text ); CREATE OPERATOR &< ( PROCEDURE = set_overleft, LEFTARG = textset, RIGHTARG = textset ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = date, RIGHTARG = dateset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = dateset, RIGHTARG = date, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = dateset, RIGHTARG = dateset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = timestamptz, RIGHTARG = tstzset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = tstzset, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = set_overleft, LEFTARG = tstzset, RIGHTARG = tstzset, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_overright(integer, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(intset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(intset, intset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(bigint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(bigintset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(bigintset, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(float, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(floatset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(floatset, floatset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(text, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(textset, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(textset, textset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(date, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(dateset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(dateset, dateset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(timestamptz, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(tstzset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overright(tstzset, tstzset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = integer, RIGHTARG = intset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = intset, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = intset, RIGHTARG = intset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = bigint, RIGHTARG = bigintset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = bigintset, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = bigintset, RIGHTARG = bigintset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = float, RIGHTARG = floatset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = floatset, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = floatset, RIGHTARG = floatset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = text, RIGHTARG = textset ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = textset, RIGHTARG = text ); CREATE OPERATOR &> ( PROCEDURE = set_overright, LEFTARG = textset, RIGHTARG = textset ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = date, RIGHTARG = dateset ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = dateset, RIGHTARG = date ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = dateset, RIGHTARG = dateset ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = timestamptz, RIGHTARG = tstzset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = tstzset, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = set_overright, LEFTARG = tstzset, RIGHTARG = tstzset, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION set_union(integer, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(intset, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(intset, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(bigint, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(bigintset, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(bigintset, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(float, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(floatset, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(floatset, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(text, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(textset, text) RETURNS textset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(textset, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(date, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(dateset, date) RETURNS dateset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(dateset, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(timestamptz, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(tstzset, timestamptz) RETURNS tstzset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(tstzset, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = text, RIGHTARG = textset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = textset, RIGHTARG = text, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = + ); /*****************************************************************************/ CREATE FUNCTION set_minus(integer, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(intset, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(intset, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(bigint, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(bigintset, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(bigintset, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(float, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(floatset, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(floatset, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(text, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(textset, text) RETURNS textset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(textset, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(date, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(dateset, date) RETURNS dateset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(dateset, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(timestamptz, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(tstzset, timestamptz) RETURNS tstzset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(tstzset, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = integer, RIGHTARG = intset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = intset, RIGHTARG = integer ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = intset, RIGHTARG = intset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = bigint, RIGHTARG = bigintset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = bigintset, RIGHTARG = bigint ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = bigintset, RIGHTARG = bigintset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = float, RIGHTARG = floatset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = floatset, RIGHTARG = float ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = floatset, RIGHTARG = floatset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = text, RIGHTARG = textset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = textset, RIGHTARG = text ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = textset, RIGHTARG = textset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = date, RIGHTARG = dateset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = dateset, RIGHTARG = date ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = dateset, RIGHTARG = dateset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = timestamptz, RIGHTARG = tstzset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = tstzset, RIGHTARG = timestamptz ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = tstzset, RIGHTARG = tstzset ); /*****************************************************************************/ CREATE FUNCTION set_intersection(integer, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(intset, integer) RETURNS intset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(intset, intset) RETURNS intset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(bigint, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(bigintset, bigint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(bigintset, bigintset) RETURNS bigintset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(float, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(floatset, float) RETURNS floatset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(floatset, floatset) RETURNS floatset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(text, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(textset, text) RETURNS textset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(textset, textset) RETURNS textset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(date, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(dateset, date) RETURNS dateset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(dateset, dateset) RETURNS dateset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(timestamptz, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(tstzset, timestamptz) RETURNS tstzset AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(tstzset, tstzset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = text, RIGHTARG = textset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = textset, RIGHTARG = text, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = textset, RIGHTARG = textset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = * ); /*****************************************************************************/ CREATE FUNCTION set_distance(integer, integer) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(integer, intset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(intset, integer) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(intset, intset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(bigint, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_value_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(bigint, bigintset) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(bigintset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(bigintset, bigintset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(float, float) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(float, floatset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(floatset, float) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(floatset, floatset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(date, date) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(date, dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(dateset, date) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(dateset, dateset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(timestamptz, timestamptz) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(timestamptz, tstzset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(tstzset, timestamptz) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(tstzset, tstzset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = integer, RIGHTARG = integer, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = integer, RIGHTARG = intset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = intset, RIGHTARG = integer, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = intset, RIGHTARG = intset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = bigint, RIGHTARG = bigint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = bigint, RIGHTARG = bigintset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = bigintset, RIGHTARG = bigint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = bigintset, RIGHTARG = bigintset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = float, RIGHTARG = float, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = float, RIGHTARG = floatset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = floatset, RIGHTARG = float, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = floatset, RIGHTARG = floatset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = date, RIGHTARG = date, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = date, RIGHTARG = dateset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = dateset, RIGHTARG = date, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = dateset, RIGHTARG = dateset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = timestamptz, RIGHTARG = timestamptz, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = timestamptz, RIGHTARG = tstzset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = tstzset, RIGHTARG = timestamptz, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = tstzset, RIGHTARG = tstzset, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * span.sql * SQL definitions for spans of values (a.k.a. ranges) */ CREATE TYPE intspan; CREATE TYPE bigintspan; CREATE TYPE floatspan; CREATE TYPE datespan; CREATE TYPE tstzspan; /* Forward reference of the types needed for the result of set operations */ CREATE TYPE intspanset; CREATE TYPE bigintspanset; CREATE TYPE floatspanset; CREATE TYPE datespanset; CREATE TYPE tstzspanset; CREATE FUNCTION intspan_in(cstring) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspan_out(intspan) RETURNS cstring AS 'MODULE_PATHNAME', 'Span_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspan_recv(internal) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspan_send(intspan) RETURNS bytea AS 'MODULE_PATHNAME', 'Span_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspan_in(cstring) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspan_out(bigintspan) RETURNS cstring AS 'MODULE_PATHNAME', 'Span_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspan_recv(internal) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspan_send(bigintspan) RETURNS bytea AS 'MODULE_PATHNAME', 'Span_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan_in(cstring) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan_out(floatspan) RETURNS cstring AS 'MODULE_PATHNAME', 'Span_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan_recv(internal) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan_send(floatspan) RETURNS bytea AS 'MODULE_PATHNAME', 'Span_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespan_in(cstring) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespan_out(datespan) RETURNS cstring AS 'MODULE_PATHNAME', 'Span_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespan_recv(internal) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespan_send(datespan) RETURNS bytea AS 'MODULE_PATHNAME', 'Span_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan_in(cstring) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan_out(tstzspan) RETURNS cstring AS 'MODULE_PATHNAME', 'Span_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan_recv(internal) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan_send(tstzspan) RETURNS bytea AS 'MODULE_PATHNAME', 'Span_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /* The span_analyze function is defined in file 001_set.in.sql */ CREATE TYPE intspan ( internallength = 24, input = intspan_in, output = intspan_out, receive = intspan_recv, send = intspan_send, alignment = double, analyze = span_analyze ); CREATE TYPE bigintspan ( internallength = 24, input = bigintspan_in, output = bigintspan_out, receive = bigintspan_recv, send = bigintspan_send, alignment = double, analyze = span_analyze ); CREATE TYPE floatspan ( internallength = 24, input = floatspan_in, output = floatspan_out, receive = floatspan_recv, send = floatspan_send, alignment = double, analyze = span_analyze ); CREATE TYPE datespan ( internallength = 24, input = datespan_in, output = datespan_out, receive = datespan_recv, send = datespan_send, alignment = double, analyze = span_analyze ); CREATE TYPE tstzspan ( internallength = 24, input = tstzspan_in, output = tstzspan_out, receive = tstzspan_recv, send = tstzspan_send, alignment = double, analyze = span_analyze ); /******************************************************************************/ -- Input/output in WKT, WKB and HexWKB format CREATE FUNCTION intspanFromBinary(bytea) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanFromBinary(bytea) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanFromBinary(bytea) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanFromBinary(bytea) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanFromBinary(bytea) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspanFromHexWKB(text) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanFromHexWKB(text) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanFromHexWKB(text) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanFromHexWKB(text) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanFromHexWKB(text) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(intspan) RETURNS text AS 'MODULE_PATHNAME', 'Span_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(bigintspan) RETURNS text AS 'MODULE_PATHNAME', 'Span_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(floatspan, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Span_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(datespan) RETURNS text AS 'MODULE_PATHNAME', 'Span_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tstzspan) RETURNS text AS 'MODULE_PATHNAME', 'Span_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(intspan, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Span_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(bigintspan, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Span_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(floatspan, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Span_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(datespan, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Span_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tstzspan, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Span_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(intspan, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Span_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(bigintspan, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Span_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(floatspan, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Span_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(datespan, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Span_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tstzspan, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Span_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor functions ******************************************************************************/ CREATE FUNCTION span(integer, integer, boolean DEFAULT true, boolean DEFAULT false) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(bigint, bigint, boolean DEFAULT true, boolean DEFAULT false) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(float, float, boolean DEFAULT true, boolean DEFAULT false) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(date, date, boolean DEFAULT true, boolean DEFAULT false) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(timestamptz, timestamptz, boolean DEFAULT true, boolean DEFAULT false) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Conversion functions ******************************************************************************/ CREATE FUNCTION span(integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Value_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Value_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Value_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(date) RETURNS datespan AS 'MODULE_PATHNAME', 'Value_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(timestamptz) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Value_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (integer AS intspan) WITH FUNCTION span(integer); CREATE CAST (bigint AS bigintspan) WITH FUNCTION span(bigint); CREATE CAST (float AS floatspan) WITH FUNCTION span(float); CREATE CAST (date AS datespan) WITH FUNCTION span(date); CREATE CAST (timestamptz AS tstzspan) WITH FUNCTION span(timestamptz); CREATE FUNCTION span(intset) RETURNS intspan AS 'MODULE_PATHNAME', 'Set_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(bigintset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Set_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(floatset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Set_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(dateset) RETURNS datespan AS 'MODULE_PATHNAME', 'Set_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(tstzset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Set_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intset AS intspan) WITH FUNCTION span(intset); CREATE CAST (bigintset AS bigintspan) WITH FUNCTION span(bigintset); CREATE CAST (floatset AS floatspan) WITH FUNCTION span(floatset); CREATE CAST (dateset AS datespan) WITH FUNCTION span(dateset); CREATE CAST (tstzset AS tstzspan) WITH FUNCTION span(tstzset); CREATE FUNCTION intspan(floatspan) RETURNS intspan AS 'MODULE_PATHNAME', 'Floatspan_to_intspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan(intspan) RETURNS floatspan AS 'MODULE_PATHNAME', 'Intspan_to_floatspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intspan AS floatspan) WITH FUNCTION floatspan(intspan); CREATE CAST (floatspan AS intspan) WITH FUNCTION intspan(floatspan); CREATE FUNCTION datespan(tstzspan) RETURNS datespan AS 'MODULE_PATHNAME', 'Tstzspan_to_datespan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan(datespan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Datespan_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (datespan AS tstzspan) WITH FUNCTION tstzspan(datespan); CREATE CAST (tstzspan AS datespan) WITH FUNCTION datespan(tstzspan); CREATE FUNCTION span(int4range) RETURNS intspan AS 'MODULE_PATHNAME', 'Range_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(daterange) RETURNS datespan AS 'MODULE_PATHNAME', 'Range_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(tstzrange) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Range_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION range(intspan) RETURNS int4range AS 'MODULE_PATHNAME', 'Span_to_range' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION range(datespan) RETURNS daterange AS 'MODULE_PATHNAME', 'Span_to_range' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION range(tstzspan) RETURNS tstzrange AS 'MODULE_PATHNAME', 'Span_to_range' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (int4range AS intspan) WITH FUNCTION span(int4range); CREATE CAST (daterange AS datespan) WITH FUNCTION span(daterange); CREATE CAST (tstzrange AS tstzspan) WITH FUNCTION span(tstzrange); CREATE CAST (intspan AS int4range) WITH FUNCTION range(intspan); CREATE CAST (datespan AS daterange) WITH FUNCTION range(datespan); CREATE CAST (tstzspan AS tstzrange) WITH FUNCTION range(tstzspan); /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION lower(intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Span_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(datespan) RETURNS date AS 'MODULE_PATHNAME', 'Span_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(tstzspan) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Span_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Span_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(datespan) RETURNS date AS 'MODULE_PATHNAME', 'Span_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(tstzspan) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Span_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(intspan) RETURNS int AS 'MODULE_PATHNAME', 'Numspan_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Numspan_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Numspan_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(datespan) RETURNS interval AS 'MODULE_PATHNAME', 'Datespan_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tstzspan) RETURNS interval AS 'MODULE_PATHNAME', 'Tstzspan_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shift(intspan, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Numspan_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(bigintspan, bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Numspan_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(floatspan, float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Numspan_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(datespan, integer) RETURNS datespan AS 'MODULE_PATHNAME', 'Numspan_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(tstzspan, interval) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(intspan, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Numspan_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(bigintspan, bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Numspan_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(floatspan, float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Numspan_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(datespan, integer) RETURNS datespan AS 'MODULE_PATHNAME', 'Numspan_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(tstzspan, interval) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(intspan, integer, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Numspan_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(bigintspan, bigint, bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Numspan_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(floatspan, float, float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Numspan_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(datespan, integer, integer) RETURNS datespan AS 'MODULE_PATHNAME', 'Numspan_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(tstzspan, interval, interval) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(floatspan, integer DEFAULT 0) RETURNS floatspan AS 'MODULE_PATHNAME', 'Floatspan_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Selectivity functions *****************************************************************************/ -- Functions span_sel and span_joinsel are defined in the file defining the -- set type -- Functions for debugging the selectivity code -- Given a table, column, and span returns the estimate of what proportion -- of the table would be returned by a query using the given operator. CREATE FUNCTION _mobdb_span_sel(tbl regclass, col text, oper regoper, i intspan) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _mobdb_span_sel(tbl regclass, col text, oper regoper, b bigintspan) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _mobdb_span_sel(tbl regclass, col text, oper regoper, f floatspan) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _mobdb_span_sel(tbl regclass, col text, oper regoper, p datespan) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _mobdb_span_sel(tbl regclass, col text, oper regoper, p tstzspan) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- Given two tables and columns, returns estimate of the proportion of rows a -- given join operator will return relative to the number of rows an -- unconstrained table join would return CREATE OR REPLACE FUNCTION _mobdb_span_joinsel(tbl1 regclass, col1 text, tbl2 regclass, col2 text, oper regoper) RETURNS float AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Comparison operators ******************************************************************************/ CREATE FUNCTION span_eq(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_eq(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_eq(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_eq(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_eq(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ne(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ne(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ne(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ne(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ne(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_lt(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_lt(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_lt(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_lt(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_lt(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_le(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_le(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_le(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_le(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_le(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ge(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ge(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ge(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ge(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_ge(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gt(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gt(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gt(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gt(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gt(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Span_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_cmp(intspan, intspan) RETURNS int4 AS 'MODULE_PATHNAME', 'Span_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_cmp(bigintspan, bigintspan) RETURNS int4 AS 'MODULE_PATHNAME', 'Span_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_cmp(floatspan, floatspan) RETURNS int4 AS 'MODULE_PATHNAME', 'Span_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_cmp(datespan, datespan) RETURNS int4 AS 'MODULE_PATHNAME', 'Span_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_cmp(tstzspan, tstzspan) RETURNS int4 AS 'MODULE_PATHNAME', 'Span_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( PROCEDURE = span_eq, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( PROCEDURE = span_eq, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( PROCEDURE = span_eq, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( PROCEDURE = span_eq, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( PROCEDURE = span_eq, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = span_ne, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = span_ne, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = span_ne, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = span_ne, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = span_ne, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( PROCEDURE = span_lt, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( PROCEDURE = span_lt, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( PROCEDURE = span_lt, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( PROCEDURE = span_lt, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( PROCEDURE = span_lt, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( PROCEDURE = span_le, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( PROCEDURE = span_le, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( PROCEDURE = span_le, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( PROCEDURE = span_le, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( PROCEDURE = span_le, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( PROCEDURE = span_ge, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( PROCEDURE = span_ge, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( PROCEDURE = span_ge, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( PROCEDURE = span_ge, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( PROCEDURE = span_ge, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( PROCEDURE = span_gt, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( PROCEDURE = span_gt, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( PROCEDURE = span_gt, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( PROCEDURE = span_gt, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( PROCEDURE = span_gt, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR CLASS intspan_btree_ops DEFAULT FOR TYPE intspan USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 span_cmp(intspan, intspan); CREATE OPERATOR CLASS bigintspan_btree_ops DEFAULT FOR TYPE bigintspan USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 span_cmp(bigintspan, bigintspan); CREATE OPERATOR CLASS floatspan_btree_ops DEFAULT FOR TYPE floatspan USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 span_cmp(floatspan, floatspan); CREATE OPERATOR CLASS datespan_btree_ops DEFAULT FOR TYPE datespan USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 span_cmp(datespan, datespan); CREATE OPERATOR CLASS tstzspan_btree_ops DEFAULT FOR TYPE tstzspan USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 span_cmp(tstzspan, tstzspan); /******************************************************************************/ CREATE FUNCTION span_hash(intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash(bigintspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash(floatspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash(datespan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash(tstzspan) RETURNS integer AS 'MODULE_PATHNAME', 'Span_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash_extended(intspan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash_extended(bigintspan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash_extended(floatspan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash_extended(datespan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_hash_extended(tstzspan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Span_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS intspan_hash_ops DEFAULT FOR TYPE intspan USING hash AS OPERATOR 1 = , FUNCTION 1 span_hash(intspan), FUNCTION 2 span_hash_extended(intspan, bigint); CREATE OPERATOR CLASS bigintspan_hash_ops DEFAULT FOR TYPE bigintspan USING hash AS OPERATOR 1 = , FUNCTION 1 span_hash(bigintspan), FUNCTION 2 span_hash_extended(bigintspan, bigint); CREATE OPERATOR CLASS floatspan_hash_ops DEFAULT FOR TYPE floatspan USING hash AS OPERATOR 1 = , FUNCTION 1 span_hash(floatspan), FUNCTION 2 span_hash_extended(floatspan, bigint); CREATE OPERATOR CLASS datespan_hash_ops DEFAULT FOR TYPE datespan USING hash AS OPERATOR 1 = , FUNCTION 1 span_hash(datespan), FUNCTION 2 span_hash_extended(datespan, bigint); CREATE OPERATOR CLASS tstzspan_hash_ops DEFAULT FOR TYPE tstzspan USING hash AS OPERATOR 1 = , FUNCTION 1 span_hash(tstzspan), FUNCTION 2 span_hash_extended(tstzspan, bigint); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * span_ops.sql * Operators for span types. */ /****************************************************************************** * Topological operators ******************************************************************************/ CREATE FUNCTION span_contains(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_contained(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_overlaps(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_adjacent(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); /****************************************************************************** * Position operators ******************************************************************************/ CREATE FUNCTION span_left(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_right(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_overleft(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = integer, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspan, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspan, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigint, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspan, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspan, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = float, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspan, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspan, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = date, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespan, RIGHTARG = date, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespan, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = timestamptz, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspan, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspan, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION span_overright(integer, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspan, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspan, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = integer, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspan, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspan, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(bigint, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspan, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspan, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigint, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspan, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspan, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(float, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspan, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspan, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = float, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspan, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspan, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(date, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespan, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespan, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = date, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespan, RIGHTARG = date, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespan, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(timestamptz, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspan, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspan, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = timestamptz, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspan, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspan, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); /***************************************************************************** * Set operators *****************************************************************************/ CREATE FUNCTION span_union(integer, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspan, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspan, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = + ); CREATE FUNCTION span_union(bigint, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspan, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspan, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = + ); CREATE FUNCTION span_union(float, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspan, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspan, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = + ); CREATE FUNCTION span_union(date, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespan, date) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespan, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = + ); CREATE FUNCTION span_union(timestamptz, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspan, timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspan, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = + ); /******************************************************************************/ CREATE FUNCTION span_intersection(integer, intspan) RETURNS intspan AS 'MODULE_PATHNAME', 'Intersection_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspan, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Intersection_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspan, intspan) RETURNS intspan AS 'MODULE_PATHNAME', 'Intersection_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = * ); CREATE FUNCTION span_intersection(bigint, bigintspan) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Intersection_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspan, bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Intersection_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspan, bigintspan) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Intersection_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = * ); CREATE FUNCTION span_intersection(float, floatspan) RETURNS floatspan AS 'MODULE_PATHNAME', 'Intersection_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspan, float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Intersection_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspan, floatspan) RETURNS floatspan AS 'MODULE_PATHNAME', 'Intersection_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = * ); CREATE FUNCTION span_intersection(date, datespan) RETURNS datespan AS 'MODULE_PATHNAME', 'Intersection_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespan, date) RETURNS datespan AS 'MODULE_PATHNAME', 'Intersection_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespan, datespan) RETURNS datespan AS 'MODULE_PATHNAME', 'Intersection_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = * ); CREATE FUNCTION span_intersection(timestamptz, tstzspan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Intersection_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspan, timestamptz) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Intersection_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspan, tstzspan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Intersection_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = * ); /******************************************************************************/ CREATE FUNCTION span_minus(integer, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspan, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspan, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = - ); CREATE FUNCTION span_minus(bigint, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspan, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspan, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = - ); CREATE FUNCTION span_minus(float, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspan, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspan, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = - ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = - ); CREATE FUNCTION span_minus(date, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespan, date) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespan, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = date, RIGHTARG = datespan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespan, RIGHTARG = date ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespan, RIGHTARG = datespan ); CREATE FUNCTION span_minus(timestamptz, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspan, timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspan, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = timestamptz, RIGHTARG = tstzspan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspan, RIGHTARG = timestamptz ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspan, RIGHTARG = tstzspan ); /***************************************************************************** * Distance operators *****************************************************************************/ CREATE FUNCTION span_distance(integer, intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspan, integer) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspan, intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = integer, RIGHTARG = intspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspan, RIGHTARG = integer, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspan, RIGHTARG = intspan, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(bigint, bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspan, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspan, bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigint, RIGHTARG = bigintspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspan, RIGHTARG = bigint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspan, RIGHTARG = bigintspan, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(float, floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspan, float) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspan, floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = float, RIGHTARG = floatspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspan, RIGHTARG = float, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspan, RIGHTARG = floatspan, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(date, datespan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespan, date) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespan, datespan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = date, RIGHTARG = datespan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespan, RIGHTARG = date, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespan, RIGHTARG = datespan, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(timestamptz, tstzspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(tstzspan, timestamptz) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(tstzspan, tstzspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = timestamptz, RIGHTARG = tstzspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = tstzspan, RIGHTARG = timestamptz, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = tstzspan, RIGHTARG = tstzspan, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * spanset.sql * Functions for set of spans of values (a.k.a. multiranges). */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE FUNCTION intspanset_in(cstring) RETURNS intspanset AS 'MODULE_PATHNAME', 'Spanset_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanset_in(cstring) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Spanset_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanset_in(cstring) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Spanset_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanset_in(cstring) RETURNS datespanset AS 'MODULE_PATHNAME', 'Spanset_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanset_in(cstring) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Spanset_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspanset_out(intspanset) RETURNS cstring AS 'MODULE_PATHNAME', 'Spanset_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanset_out(bigintspanset) RETURNS cstring AS 'MODULE_PATHNAME', 'Spanset_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanset_out(floatspanset) RETURNS cstring AS 'MODULE_PATHNAME', 'Spanset_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanset_out(datespanset) RETURNS cstring AS 'MODULE_PATHNAME', 'Spanset_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanset_out(tstzspanset) RETURNS cstring AS 'MODULE_PATHNAME', 'Spanset_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspanset_recv(internal) RETURNS intspanset AS 'MODULE_PATHNAME', 'Spanset_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanset_recv(internal) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Spanset_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanset_recv(internal) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Spanset_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanset_recv(internal) RETURNS datespanset AS 'MODULE_PATHNAME', 'Spanset_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanset_recv(internal) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Spanset_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspanset_send(intspanset) RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspanset_send(bigintspanset) RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanset_send(floatspanset) RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespanset_send(datespanset) RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanset_send(tstzspanset) RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /* The span_analyze function is defined in file 001_set.in.sql */ CREATE TYPE intspanset ( internallength = variable, input = intspanset_in, output = intspanset_out, receive = intspanset_recv, send = intspanset_send, alignment = double, -- The following line makes NULL if size < 128 storage = extended, analyze = span_analyze ); CREATE TYPE bigintspanset ( internallength = variable, input = bigintspanset_in, output = bigintspanset_out, receive = bigintspanset_recv, send = bigintspanset_send, alignment = double, -- The following line makes NULL if size < 128 storage = extended, analyze = span_analyze ); CREATE TYPE floatspanset ( internallength = variable, input = floatspanset_in, output = floatspanset_out, receive = floatspanset_recv, send = floatspanset_send, alignment = double, -- The following line makes NULL if size < 128 storage = extended, analyze = span_analyze ); CREATE TYPE datespanset ( internallength = variable, input = datespanset_in, output = datespanset_out, receive = datespanset_recv, send = datespanset_send, alignment = double, storage = extended, analyze = span_analyze ); CREATE TYPE tstzspanset ( internallength = variable, input = tstzspanset_in, output = tstzspanset_out, receive = tstzspanset_recv, send = tstzspanset_send, alignment = double, storage = extended, analyze = span_analyze ); /******************************************************************************/ -- Input/output in WKB and HexWKB format CREATE FUNCTION intspansetFromBinary(bytea) RETURNS intspanset AS 'MODULE_PATHNAME', 'Spanset_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspansetFromBinary(bytea) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Spanset_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspansetFromBinary(bytea) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Spanset_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespansetFromBinary(bytea) RETURNS datespanset AS 'MODULE_PATHNAME', 'Spanset_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspansetFromBinary(bytea) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Spanset_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION intspansetFromHexWKB(text) RETURNS intspanset AS 'MODULE_PATHNAME', 'Spanset_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspansetFromHexWKB(text) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Spanset_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspansetFromHexWKB(text) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Spanset_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespansetFromHexWKB(text) RETURNS datespanset AS 'MODULE_PATHNAME', 'Spanset_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspansetFromHexWKB(text) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Spanset_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(intspanset) RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(bigintspanset) RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(floatspanset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(datespanset) RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tstzspanset) RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(intspanset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(bigintspanset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(floatspanset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(datespanset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tstzspanset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Spanset_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(intspanset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(bigintspanset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(floatspanset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(datespanset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tstzspanset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Spanset_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor functions ******************************************************************************/ CREATE FUNCTION spanset(intspan[]) RETURNS intspanset AS 'MODULE_PATHNAME', 'Spanset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(bigintspan[]) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Spanset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(floatspan[]) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Spanset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(datespan[]) RETURNS datespanset AS 'MODULE_PATHNAME', 'Spanset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(tstzspan[]) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Spanset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Conversion functions ******************************************************************************/ CREATE FUNCTION spanset(integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Value_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Value_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Value_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(date) RETURNS datespanset AS 'MODULE_PATHNAME', 'Value_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Value_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (integer AS intspanset) WITH FUNCTION spanset(integer); CREATE CAST (bigint AS bigintspanset) WITH FUNCTION spanset(bigint); CREATE CAST (float AS floatspanset) WITH FUNCTION spanset(float); CREATE CAST (date AS datespanset) WITH FUNCTION spanset(date); CREATE CAST (timestamptz AS tstzspanset) WITH FUNCTION spanset(timestamptz); CREATE FUNCTION spanset(intset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Set_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(bigintset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Set_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(floatset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Set_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(dateset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Set_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(tstzset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Set_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intset AS intspanset) WITH FUNCTION spanset(intset); CREATE CAST (bigintset AS bigintspanset) WITH FUNCTION spanset(bigintset); CREATE CAST (floatset AS floatspanset) WITH FUNCTION spanset(floatset); CREATE CAST (dateset AS datespanset) WITH FUNCTION spanset(dateset); CREATE CAST (tstzset AS tstzspanset) WITH FUNCTION spanset(tstzset); CREATE FUNCTION spanset(intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Span_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Span_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Span_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Span_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Span_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intspan AS intspanset) WITH FUNCTION spanset(intspan); CREATE CAST (bigintspan AS bigintspanset) WITH FUNCTION spanset(bigintspan); CREATE CAST (floatspan AS floatspanset) WITH FUNCTION spanset(floatspan); CREATE CAST (datespan AS datespanset) WITH FUNCTION spanset(datespan); CREATE CAST (tstzspan AS tstzspanset) WITH FUNCTION spanset(tstzspan); CREATE FUNCTION span(intspanset) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanset_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(bigintspanset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanset_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(floatspanset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanset_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(datespanset) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanset_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span(tstzspanset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanset_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intspanset AS intspan) WITH FUNCTION span(intspanset); CREATE CAST (bigintspanset AS bigintspan) WITH FUNCTION span(bigintspanset); CREATE CAST (floatspanset AS floatspan) WITH FUNCTION span(floatspanset); CREATE CAST (datespanset AS datespan) WITH FUNCTION span(datespanset); CREATE CAST (tstzspanset AS tstzspan) WITH FUNCTION span(tstzspanset); CREATE FUNCTION intspanset(floatspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Floatspanset_to_intspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspanset(intspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intspanset_to_floatspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intspanset AS floatspanset) WITH FUNCTION floatspanset(intspanset); CREATE CAST (floatspanset AS intspanset) WITH FUNCTION intspanset(floatspanset); CREATE FUNCTION datespanset(tstzspanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Tstzspanset_to_datespanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspanset(datespanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Datespanset_to_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (datespanset AS tstzspanset) WITH FUNCTION tstzspanset(datespanset); CREATE CAST (tstzspanset AS datespanset) WITH FUNCTION datespanset(tstzspanset); -- if POSTGRESQL_VERSION_NUMBER >= 140000 CREATE FUNCTION multirange(intspanset) RETURNS int4multirange AS 'MODULE_PATHNAME', 'Spanset_to_multirange' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION multirange(datespanset) RETURNS datemultirange AS 'MODULE_PATHNAME', 'Spanset_to_multirange' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION multirange(tstzspanset) RETURNS tstzmultirange AS 'MODULE_PATHNAME', 'Spanset_to_multirange' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(int4multirange) RETURNS intspanset AS 'MODULE_PATHNAME', 'Multirange_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(datemultirange) RETURNS datespanset AS 'MODULE_PATHNAME', 'Multirange_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset(tstzmultirange) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Multirange_to_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (intspanset AS int4multirange) WITH FUNCTION multirange(intspanset); CREATE CAST (datespanset AS datemultirange) WITH FUNCTION multirange(datespanset); CREATE CAST (tstzspanset AS tstzmultirange) WITH FUNCTION multirange(tstzspanset); CREATE CAST (int4multirange AS intspanset) WITH FUNCTION spanset(int4multirange); CREATE CAST (datemultirange AS datespanset) WITH FUNCTION spanset(datemultirange); CREATE CAST (tstzmultirange AS tstzspanset) WITH FUNCTION spanset(tstzmultirange); -- endif POSTGRESQL_VERSION_NUMBER >= 140000 /****************************************************************************** * Accessor Functions ******************************************************************************/ CREATE FUNCTION memSize(intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(bigintspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(floatspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tstzspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(bigintspanset) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(floatspanset) RETURNS float AS 'MODULE_PATHNAME', 'Spanset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(datespanset) RETURNS date AS 'MODULE_PATHNAME', 'Spanset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(tstzspanset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Spanset_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(bigintspanset) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(floatspanset) RETURNS float AS 'MODULE_PATHNAME', 'Spanset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(datespanset) RETURNS date AS 'MODULE_PATHNAME', 'Spanset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upper(tstzspanset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Spanset_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Spanset_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(intspanset, boundspan boolean DEFAULT FALSE) RETURNS int AS 'MODULE_PATHNAME', 'Numspanset_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(bigintspanset, boundspan boolean DEFAULT FALSE) RETURNS bigint AS 'MODULE_PATHNAME', 'Numspanset_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION width(floatspanset, boundspan boolean DEFAULT FALSE) RETURNS float AS 'MODULE_PATHNAME', 'Numspanset_width' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(datespanset, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Datespanset_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tstzspanset, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Tstzspanset_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSpans(intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_num_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSpans(bigintspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_num_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSpans(floatspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_num_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSpans(datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_num_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSpans(tstzspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_num_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSpan(intspanset) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanset_start_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSpan(bigintspanset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanset_start_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSpan(floatspanset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanset_start_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSpan(datespanset) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanset_start_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSpan(tstzspanset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanset_start_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSpan(intspanset) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanset_end_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSpan(bigintspanset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanset_end_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSpan(floatspanset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanset_end_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSpan(datespanset) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanset_end_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSpan(tstzspanset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanset_end_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanN(intspanset, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanset_span_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanN(bigintspanset, integer) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanset_span_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanN(floatspanset, integer) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanset_span_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanN(datespanset, integer) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanset_span_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanN(tstzspanset, integer) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanset_span_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spans(intspanset) RETURNS intspan[] AS 'MODULE_PATHNAME', 'Spanset_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spans(bigintspanset) RETURNS bigintspan[] AS 'MODULE_PATHNAME', 'Spanset_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spans(floatspanset) RETURNS floatspan[] AS 'MODULE_PATHNAME', 'Spanset_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spans(datespanset) RETURNS datespan[] AS 'MODULE_PATHNAME', 'Spanset_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spans(tstzspanset) RETURNS tstzspan[] AS 'MODULE_PATHNAME', 'Spanset_spans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numDates(datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Datespanset_num_dates' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startDate(datespanset) RETURNS date AS 'MODULE_PATHNAME', 'Datespanset_start_date' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endDate(datespanset) RETURNS date AS 'MODULE_PATHNAME', 'Datespanset_end_date' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dateN(datespanset, integer) RETURNS date AS 'MODULE_PATHNAME', 'Datespanset_date_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dates(datespanset) RETURNS dateset AS 'MODULE_PATHNAME', 'Datespanset_dates' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tstzspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Tstzspanset_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tstzspanset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tstzspanset_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tstzspanset) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tstzspanset_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tstzspanset, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tstzspanset_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tstzspanset) RETURNS tstzset AS 'MODULE_PATHNAME', 'Tstzspanset_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shift(intspanset, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Numspanset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(bigintspanset, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Numspanset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(floatspanset, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Numspanset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(datespanset, integer) RETURNS datespanset AS 'MODULE_PATHNAME', 'Numspanset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shift(tstzspanset, interval) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Tstzspanset_shift' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(intspanset, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Numspanset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(bigintspanset, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Numspanset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(floatspanset, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Numspanset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(datespanset, integer) RETURNS datespanset AS 'MODULE_PATHNAME', 'Numspanset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scale(tstzspanset, interval) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Tstzspanset_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(intspanset, integer, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Numspanset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(bigintspanset, bigint, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Numspanset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(floatspanset, float, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Numspanset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(datespanset, integer, integer) RETURNS datespanset AS 'MODULE_PATHNAME', 'Numspanset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScale(tstzspanset, interval, interval) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Tstzspanset_shift_scale' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(floatspanset, integer DEFAULT 0) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Floatspanset_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Comparison operators ******************************************************************************/ CREATE FUNCTION spanset_eq(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_eq(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_eq(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_eq(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_eq(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ne(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ne(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ne(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ne(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ne(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_lt(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_lt(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_lt(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_lt(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_lt(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_le(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_le(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_le(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_le(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_le(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ge(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ge(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ge(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ge(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_ge(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gt(intspanset, intspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gt(bigintspanset, bigintspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gt(floatspanset, floatspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gt(datespanset, datespanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gt(tstzspanset, tstzspanset) RETURNS bool AS 'MODULE_PATHNAME', 'Spanset_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_cmp(intspanset, intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_cmp(bigintspanset, bigintspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_cmp(floatspanset, floatspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_cmp(datespanset, datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_cmp(tstzspanset, tstzspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR < ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = intspanset, RIGHTARG = intspanset, PROCEDURE = spanset_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = bigintspanset, RIGHTARG = bigintspanset, PROCEDURE = spanset_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = floatspanset, RIGHTARG = floatspanset, PROCEDURE = spanset_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = datespanset, RIGHTARG = datespanset, PROCEDURE = spanset_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = tstzspanset, RIGHTARG = tstzspanset, PROCEDURE = spanset_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR CLASS intspanset_btree_ops DEFAULT FOR TYPE intspanset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 spanset_cmp(intspanset, intspanset); CREATE OPERATOR CLASS bigintspanset_btree_ops DEFAULT FOR TYPE bigintspanset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 spanset_cmp(bigintspanset, bigintspanset); CREATE OPERATOR CLASS floatspanset_btree_ops DEFAULT FOR TYPE floatspanset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 spanset_cmp(floatspanset, floatspanset); CREATE OPERATOR CLASS datespanset_btree_ops DEFAULT FOR TYPE datespanset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 spanset_cmp(datespanset, datespanset); CREATE OPERATOR CLASS tstzspanset_btree_ops DEFAULT FOR TYPE tstzspanset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 spanset_cmp(tstzspanset, tstzspanset); /******************************************************************************/ CREATE FUNCTION spanset_hash(intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash(bigintspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash(floatspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash(datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash(tstzspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Spanset_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash_extended(intspanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash_extended(bigintspanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash_extended(floatspanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash_extended(datespanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_hash_extended(tstzspanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Spanset_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS intspanset_hash_ops DEFAULT FOR TYPE intspanset USING hash AS OPERATOR 1 = , FUNCTION 1 spanset_hash(intspanset), FUNCTION 2 spanset_hash_extended(intspanset, bigint); CREATE OPERATOR CLASS bigintspanset_hash_ops DEFAULT FOR TYPE bigintspanset USING hash AS OPERATOR 1 = , FUNCTION 1 spanset_hash(bigintspanset), FUNCTION 2 spanset_hash_extended(bigintspanset, bigint); CREATE OPERATOR CLASS floatspanset_hash_ops DEFAULT FOR TYPE floatspanset USING hash AS OPERATOR 1 = , FUNCTION 1 spanset_hash(floatspanset), FUNCTION 2 spanset_hash_extended(floatspanset, bigint); CREATE OPERATOR CLASS datespanset_hash_ops DEFAULT FOR TYPE datespanset USING hash AS OPERATOR 1 = , FUNCTION 1 spanset_hash(datespanset), FUNCTION 2 spanset_hash_extended(datespanset, bigint); CREATE OPERATOR CLASS tstzspanset_hash_ops DEFAULT FOR TYPE tstzspanset USING hash AS OPERATOR 1 = , FUNCTION 1 spanset_hash(tstzspanset), FUNCTION 2 spanset_hash_extended(tstzspanset, bigint); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * spanset_ops.sql * Operators for span set types. */ CREATE FUNCTION tprecision(timestamptz, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS timestamptz AS 'MODULE_PATHNAME', 'Timestamptz_tprecision' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tprecision(tstzset, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tstzset AS 'MODULE_PATHNAME', 'Tstzset_tprecision' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tprecision(tstzspan, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_tprecision' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tprecision(tstzspanset, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Tstzspanset_tprecision' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /****************************************************************************** * Operators ******************************************************************************/ CREATE FUNCTION span_contains(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contains(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contains(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = span_contains, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = <@, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_contained(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_contained(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_contained(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = span_contained, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = @>, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_overlaps(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overlaps(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overlaps(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR && ( PROCEDURE = span_overlaps, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = &&, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_left(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR << ( PROCEDURE = span_left, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = >>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_left(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_left(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = span_left, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = #>>, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_right(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >> ( PROCEDURE = span_right, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = <<, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_right(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_right(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = span_right, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = <<#, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_overleft(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = integer, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspan, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspanset, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspanset, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = intspanset, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigint, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspan, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspanset, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspanset, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = float, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspan, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspanset, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspanset, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &< ( PROCEDURE = span_overleft, LEFTARG = floatspanset, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = date, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespan, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespanset, RIGHTARG = date, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespanset, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = datespanset, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overleft(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overleft(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = timestamptz, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspan, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspanset, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspanset, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = span_overleft, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_overright(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = integer, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspan, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspanset, RIGHTARG = integer, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspanset, RIGHTARG = intspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = intspanset, RIGHTARG = intspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigint, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspan, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspanset, RIGHTARG = bigint, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspanset, RIGHTARG = bigintspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = float, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspan, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspanset, RIGHTARG = float, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspanset, RIGHTARG = floatspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR &> ( PROCEDURE = span_overright, LEFTARG = floatspanset, RIGHTARG = floatspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = date, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespan, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespanset, RIGHTARG = date, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespanset, RIGHTARG = datespan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = datespanset, RIGHTARG = datespanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_overright(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_overright(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = timestamptz, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspan, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspanset, RIGHTARG = timestamptz, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspanset, RIGHTARG = tstzspan, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = span_overright, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_adjacent(integer, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspan, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspanset, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspanset, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(intspanset, intspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(bigint, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspan, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspanset, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspanset, bigintspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(bigintspanset, bigintspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(float, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspan, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspanset, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspanset, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(floatspanset, floatspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(date, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespan, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespanset, date) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespanset, datespan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(datespanset, datespanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE FUNCTION span_adjacent(timestamptz, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspan, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspanset, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspanset, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_adjacent(tstzspanset, tstzspanset) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = span_adjacent, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = -|-, RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION span_union(integer, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspan, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspanset, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspanset, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(intspanset, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Union_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = + ); CREATE FUNCTION span_union(bigint, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspan, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspanset, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspanset, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(bigintspanset, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Union_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = + ); CREATE FUNCTION span_union(float, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspan, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspanset, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspanset, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(floatspanset, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Union_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = + ); CREATE FUNCTION span_union(date, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespan, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespanset, date) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespanset, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(datespanset, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Union_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = + ); CREATE FUNCTION span_union(timestamptz, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspan, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspanset, timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspanset, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_union(tstzspanset, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Union_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = span_union, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = + ); /*****************************************************************************/ CREATE FUNCTION span_minus(integer, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspan, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspanset, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspanset, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(intspanset, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Minus_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = integer, RIGHTARG = intspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspan, RIGHTARG = intspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspanset, RIGHTARG = integer ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspanset, RIGHTARG = intspan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = intspanset, RIGHTARG = intspanset ); CREATE FUNCTION span_minus(bigint, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspan, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspanset, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspanset, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(bigintspanset, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Minus_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigint, RIGHTARG = bigintspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspan, RIGHTARG = bigintspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspanset, RIGHTARG = bigint ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspanset, RIGHTARG = bigintspan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = bigintspanset, RIGHTARG = bigintspanset ); CREATE FUNCTION span_minus(float, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspan, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspanset, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspanset, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(floatspanset, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Minus_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = float, RIGHTARG = floatspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspan, RIGHTARG = floatspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspanset, RIGHTARG = float ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspanset, RIGHTARG = floatspan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = floatspanset, RIGHTARG = floatspanset ); CREATE FUNCTION span_minus(date, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespan, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespanset, date) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespanset, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(datespanset, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Minus_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = date, RIGHTARG = datespanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespan, RIGHTARG = datespanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespanset, RIGHTARG = date ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespanset, RIGHTARG = datespan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = datespanset, RIGHTARG = datespanset ); CREATE FUNCTION span_minus(timestamptz, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspan, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspanset, timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspanset, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_minus(tstzspanset, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Minus_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = timestamptz, RIGHTARG = tstzspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspan, RIGHTARG = tstzspanset ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspanset, RIGHTARG = timestamptz ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspanset, RIGHTARG = tstzspan ); CREATE OPERATOR - ( PROCEDURE = span_minus, LEFTARG = tstzspanset, RIGHTARG = tstzspanset ); /*****************************************************************************/ CREATE FUNCTION span_intersection(integer, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Intersection_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspan, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Intersection_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspanset, integer) RETURNS intspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspanset, intspan) RETURNS intspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(intspanset, intspanset) RETURNS intspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = * ); CREATE FUNCTION span_intersection(bigint, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Intersection_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspan, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Intersection_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspanset, bigint) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspanset, bigintspan) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(bigintspanset, bigintspanset) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = * ); CREATE FUNCTION span_intersection(float, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intersection_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspan, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intersection_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspanset, float) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspanset, floatspan) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(floatspanset, floatspanset) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = * ); CREATE FUNCTION span_intersection(date, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Intersection_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespan, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Intersection_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespanset, date) RETURNS date AS 'MODULE_PATHNAME', 'Intersection_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespanset, datespan) RETURNS datespanset AS 'MODULE_PATHNAME', 'Intersection_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(datespanset, datespanset) RETURNS datespanset AS 'MODULE_PATHNAME', 'Intersection_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = * ); CREATE FUNCTION span_intersection(timestamptz, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Intersection_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspan, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Intersection_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspanset, timestamptz) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspanset, tstzspan) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_intersection(tstzspanset, tstzspanset) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Intersection_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = span_intersection, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = * ); /***************************************************************************** * Distance operators *****************************************************************************/ CREATE FUNCTION span_distance(integer, intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspan, intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspanset, integer) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspanset, intspan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(intspanset, intspanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = integer, RIGHTARG = intspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspan, RIGHTARG = intspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspanset, RIGHTARG = integer, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspanset, RIGHTARG = intspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = intspanset, RIGHTARG = intspanset, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(bigint, bigintspanset) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspan, bigintspanset) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspanset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspanset, bigintspan) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(bigintspanset, bigintspanset) RETURNS bigint AS 'MODULE_PATHNAME', 'Distance_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigint, RIGHTARG = bigintspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspan, RIGHTARG = bigintspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspanset, RIGHTARG = bigint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspanset, RIGHTARG = bigintspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = bigintspanset, RIGHTARG = bigintspanset, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(float, floatspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspan, floatspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspanset, float) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspanset, floatspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(floatspanset, floatspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = float, RIGHTARG = floatspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspan, RIGHTARG = floatspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspanset, RIGHTARG = float, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspanset, RIGHTARG = floatspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = floatspanset, RIGHTARG = floatspanset, COMMUTATOR = <-> ); CREATE FUNCTION span_distance(date, datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespan, datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespanset, date) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespanset, datespan) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_distance(datespanset, datespanset) RETURNS integer AS 'MODULE_PATHNAME', 'Distance_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = date, RIGHTARG = datespanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespan, RIGHTARG = datespanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespanset, RIGHTARG = date, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespanset, RIGHTARG = datespan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = span_distance, LEFTARG = datespanset, RIGHTARG = datespanset, COMMUTATOR = <-> ); CREATE FUNCTION time_distance(timestamptz, tstzspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION time_distance(tstzspan, tstzspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_span_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION time_distance(tstzspanset, timestamptz) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION time_distance(tstzspanset, tstzspan) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION time_distance(tstzspanset, tstzspanset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_spanset_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = time_distance, LEFTARG = timestamptz, RIGHTARG = tstzspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = time_distance, LEFTARG = tstzspan, RIGHTARG = tstzspanset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = time_distance, LEFTARG = tstzspanset, RIGHTARG = timestamptz, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = time_distance, LEFTARG = tstzspanset, RIGHTARG = tstzspan, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = time_distance, LEFTARG = tstzspanset, RIGHTARG = tstzspanset, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * span_gist.sql * R-tree GiST, Quad-tree SP-GiST, and Kd-tree SP-GiST indexes for span types */ /****************************************************************************** * R-tree GiST indexes ******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, intspan, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_union(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_union' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_penalty(internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_penalty' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_same(intspan, intspan, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, intspan, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_fetch(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_fetch' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intspan_rtree_ops DEFAULT FOR TYPE intspan USING gist AS -- strictly left OPERATOR 1 << (intspan, integer), OPERATOR 1 << (intspan, intspan), OPERATOR 1 << (intspan, intspanset), -- overlaps or left OPERATOR 2 &< (intspan, integer), OPERATOR 2 &< (intspan, intspan), OPERATOR 2 &< (intspan, intspanset), -- overlaps OPERATOR 3 && (intspan, intspan), OPERATOR 3 && (intspan, intspanset), -- overlaps or right OPERATOR 4 &> (intspan, integer), OPERATOR 4 &> (intspan, intspan), OPERATOR 4 &> (intspan, intspanset), -- strictly right OPERATOR 5 >> (intspan, integer), OPERATOR 5 >> (intspan, intspan), OPERATOR 5 >> (intspan, intspanset), -- contains OPERATOR 7 @> (intspan, integer), OPERATOR 7 @> (intspan, intspan), OPERATOR 7 @> (intspan, intspanset), -- contained by OPERATOR 8 <@ (intspan, intspan), OPERATOR 8 <@ (intspan, intspanset), -- adjacent OPERATOR 17 -|- (intspan, intspan), OPERATOR 17 -|- (intspan, intspanset), -- equals OPERATOR 18 = (intspan, intspan), -- nearest approach distance OPERATOR 25 <-> (intspan, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, intspan, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(intspan, intspan, internal), FUNCTION 8 span_gist_distance(internal, intspan, smallint, oid, internal), FUNCTION 9 span_gist_fetch(internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, bigintspan, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_same(bigintspan, bigintspan, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, bigintspan, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS bigintspan_rtree_ops DEFAULT FOR TYPE bigintspan USING gist AS -- strictly left OPERATOR 1 << (bigintspan, bigint), OPERATOR 1 << (bigintspan, bigintspan), OPERATOR 1 << (bigintspan, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspan, bigint), OPERATOR 2 &< (bigintspan, bigintspan), OPERATOR 2 &< (bigintspan, bigintspanset), -- overlaps OPERATOR 3 && (bigintspan, bigintspan), OPERATOR 3 && (bigintspan, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspan, bigint), OPERATOR 4 &> (bigintspan, bigintspan), OPERATOR 4 &> (bigintspan, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspan, bigint), OPERATOR 5 >> (bigintspan, bigintspan), OPERATOR 5 >> (bigintspan, bigintspanset), -- contains OPERATOR 7 @> (bigintspan, bigint), OPERATOR 7 @> (bigintspan, bigintspan), OPERATOR 7 @> (bigintspan, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspan, bigintspan), OPERATOR 8 <@ (bigintspan, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspan, bigintspan), OPERATOR 17 -|- (bigintspan, bigintspanset), -- equals OPERATOR 18 = (bigintspan, bigintspan), -- nearest approach distance OPERATOR 25 <-> (bigintspan, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, bigintspan, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(bigintspan, bigintspan, internal), FUNCTION 8 span_gist_distance(internal, bigintspan, smallint, oid, internal), FUNCTION 9 span_gist_fetch(internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, floatspan, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_same(floatspan, floatspan, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, floatspan, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS floatspan_rtree_ops DEFAULT FOR TYPE floatspan USING gist AS -- strictly left OPERATOR 1 << (floatspan, float), OPERATOR 1 << (floatspan, floatspan), OPERATOR 1 << (floatspan, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspan, float), OPERATOR 2 &< (floatspan, floatspan), OPERATOR 2 &< (floatspan, floatspanset), -- overlaps OPERATOR 3 && (floatspan, floatspan), OPERATOR 3 && (floatspan, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspan, float), OPERATOR 4 &> (floatspan, floatspan), OPERATOR 4 &> (floatspan, floatspanset), -- strictly right OPERATOR 5 >> (floatspan, float), OPERATOR 5 >> (floatspan, floatspan), OPERATOR 5 >> (floatspan, floatspanset), -- contains OPERATOR 7 @> (floatspan, float), OPERATOR 7 @> (floatspan, floatspan), OPERATOR 7 @> (floatspan, floatspanset), -- contained by OPERATOR 8 <@ (floatspan, floatspan), OPERATOR 8 <@ (floatspan, floatspanset), -- adjacent OPERATOR 17 -|- (floatspan, floatspan), OPERATOR 17 -|- (floatspan, floatspanset), -- equals OPERATOR 18 = (floatspan, floatspan), -- nearest approach distance OPERATOR 25 <-> (floatspan, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 span_gist_consistent(internal, floatspan, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(floatspan, floatspan, internal), FUNCTION 8 span_gist_distance(internal, floatspan, smallint, oid, internal), FUNCTION 9 span_gist_fetch(internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, datespan, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_same(datespan, datespan, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, datespan, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS datespan_rtree_ops DEFAULT FOR TYPE datespan USING gist AS -- strictly left OPERATOR 1 <<# (datespan, date), OPERATOR 1 <<# (datespan, datespan), OPERATOR 1 <<# (datespan, datespanset), -- overlaps or left OPERATOR 2 &<# (datespan, date), OPERATOR 2 &<# (datespan, datespan), OPERATOR 2 &<# (datespan, datespanset), -- overlaps OPERATOR 3 && (datespan, datespan), OPERATOR 3 && (datespan, datespanset), -- overlaps or right OPERATOR 4 #&> (datespan, date), OPERATOR 4 #&> (datespan, datespan), OPERATOR 4 #&> (datespan, datespanset), -- strictly right OPERATOR 5 #>> (datespan, date), OPERATOR 5 #>> (datespan, datespan), OPERATOR 5 #>> (datespan, datespanset), -- contains OPERATOR 7 @> (datespan, date), OPERATOR 7 @> (datespan, datespan), OPERATOR 7 @> (datespan, datespanset), -- contained by OPERATOR 8 <@ (datespan, datespan), OPERATOR 8 <@ (datespan, datespanset), -- adjacent OPERATOR 17 -|- (datespan, datespan), OPERATOR 17 -|- (datespan, datespanset), -- equals OPERATOR 18 = (datespan, datespan), -- nearest approach distance OPERATOR 25 <-> (datespan, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, datespan, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(datespan, datespan, internal), FUNCTION 8 span_gist_distance(internal, datespan, smallint, oid, internal), FUNCTION 9 span_gist_fetch(internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, tstzspan, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_same(tstzspan, tstzspan, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tstzspan_rtree_ops DEFAULT FOR TYPE tstzspan USING gist AS -- overlaps OPERATOR 3 && (tstzspan, tstzspan), OPERATOR 3 && (tstzspan, tstzspanset), -- contains OPERATOR 7 @> (tstzspan, timestamptz), OPERATOR 7 @> (tstzspan, tstzspan), OPERATOR 7 @> (tstzspan, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspan, tstzspan), OPERATOR 8 <@ (tstzspan, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspan, tstzspan), OPERATOR 17 -|- (tstzspan, tstzspanset), -- equals OPERATOR 18 = (tstzspan, tstzspan), -- nearest approach distance OPERATOR 25 <-> (tstzspan, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspan, timestamptz), OPERATOR 28 &<# (tstzspan, tstzspan), OPERATOR 28 &<# (tstzspan, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspan, timestamptz), OPERATOR 29 <<# (tstzspan, tstzspan), OPERATOR 29 <<# (tstzspan, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspan, timestamptz), OPERATOR 30 #>> (tstzspan, tstzspan), OPERATOR 30 #>> (tstzspan, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspan, timestamptz), OPERATOR 31 #&> (tstzspan, tstzspan), OPERATOR 31 #&> (tstzspan, tstzspanset), -- functions FUNCTION 1 span_gist_consistent(internal, tstzspan, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(tstzspan, tstzspan, internal), FUNCTION 9 span_gist_fetch(internal); /****************************************************************************** * Quad-tree SP-GiST indexes ******************************************************************************/ CREATE FUNCTION intspan_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Intspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintspan_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Bigintspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Floatspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION datespan_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Datespan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tstzspan_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tstzspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_quadtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_quadtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_quadtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_quadtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_quadtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_quadtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_spgist_leaf_consistent(internal, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_spgist_leaf_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intspan_quadtree_ops DEFAULT FOR TYPE intspan USING spgist AS -- strictly left OPERATOR 1 << (intspan, integer), OPERATOR 1 << (intspan, intspan), OPERATOR 1 << (intspan, intspanset), -- overlaps or left OPERATOR 2 &< (intspan, integer), OPERATOR 2 &< (intspan, intspan), OPERATOR 2 &< (intspan, intspanset), -- overlaps OPERATOR 3 && (intspan, intspan), OPERATOR 3 && (intspan, intspanset), -- overlaps or right OPERATOR 4 &> (intspan, integer), OPERATOR 4 &> (intspan, intspan), OPERATOR 4 &> (intspan, intspanset), -- strictly right OPERATOR 5 >> (intspan, integer), OPERATOR 5 >> (intspan, intspan), OPERATOR 5 >> (intspan, intspanset), -- contains OPERATOR 7 @> (intspan, integer), OPERATOR 7 @> (intspan, intspan), OPERATOR 7 @> (intspan, intspanset), -- contained by OPERATOR 8 <@ (intspan, intspan), OPERATOR 8 <@ (intspan, intspanset), -- adjacent OPERATOR 17 -|- (intspan, intspan), OPERATOR 17 -|- (intspan, intspanset), -- equals OPERATOR 18 = (intspan, intspan), -- nearest approach distance OPERATOR 25 <-> (intspan, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintspan_quadtree_ops DEFAULT FOR TYPE bigintspan USING spgist AS -- strictly left OPERATOR 1 << (bigintspan, bigint), OPERATOR 1 << (bigintspan, bigintspan), OPERATOR 1 << (bigintspan, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspan, bigint), OPERATOR 2 &< (bigintspan, bigintspan), OPERATOR 2 &< (bigintspan, bigintspanset), -- overlaps OPERATOR 3 && (bigintspan, bigintspan), OPERATOR 3 && (bigintspan, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspan, bigint), OPERATOR 4 &> (bigintspan, bigintspan), OPERATOR 4 &> (bigintspan, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspan, bigint), OPERATOR 5 >> (bigintspan, bigintspan), OPERATOR 5 >> (bigintspan, bigintspanset), -- contains OPERATOR 7 @> (bigintspan, bigint), OPERATOR 7 @> (bigintspan, bigintspan), OPERATOR 7 @> (bigintspan, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspan, bigintspan), OPERATOR 8 <@ (bigintspan, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspan, bigintspan), OPERATOR 17 -|- (bigintspan, bigintspanset), -- equals OPERATOR 18 = (bigintspan, bigintspan), -- nearest approach distance OPERATOR 25 <-> (bigintspan, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 bigintspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS floatspan_quadtree_ops DEFAULT FOR TYPE floatspan USING spgist AS -- strictly left OPERATOR 1 << (floatspan, float), OPERATOR 1 << (floatspan, floatspan), OPERATOR 1 << (floatspan, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspan, float), OPERATOR 2 &< (floatspan, floatspan), OPERATOR 2 &< (floatspan, floatspanset), -- overlaps OPERATOR 3 && (floatspan, floatspan), OPERATOR 3 && (floatspan, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspan, float), OPERATOR 4 &> (floatspan, floatspan), OPERATOR 4 &> (floatspan, floatspanset), -- strictly right OPERATOR 5 >> (floatspan, float), OPERATOR 5 >> (floatspan, floatspan), OPERATOR 5 >> (floatspan, floatspanset), -- contains OPERATOR 7 @> (floatspan, float), OPERATOR 7 @> (floatspan, floatspan), OPERATOR 7 @> (floatspan, floatspanset), -- contained by OPERATOR 8 <@ (floatspan, floatspan), OPERATOR 8 <@ (floatspan, floatspanset), -- adjacent OPERATOR 17 -|- (floatspan, floatspan), OPERATOR 17 -|- (floatspan, floatspanset), -- equals OPERATOR 18 = (floatspan, floatspan), -- nearest approach distance OPERATOR 25 <-> (floatspan, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS datespan_quadtree_ops DEFAULT FOR TYPE datespan USING spgist AS -- overlaps OPERATOR 3 && (datespan, datespan), OPERATOR 3 && (datespan, datespanset), -- contains OPERATOR 7 @> (datespan, date), OPERATOR 7 @> (datespan, datespan), OPERATOR 7 @> (datespan, datespanset), -- contained by OPERATOR 8 <@ (datespan, datespan), OPERATOR 8 <@ (datespan, datespanset), -- adjacent OPERATOR 17 -|- (datespan, datespan), OPERATOR 17 -|- (datespan, datespanset), -- equals OPERATOR 18 = (datespan, datespan), -- nearest approach distance OPERATOR 25 <-> (datespan, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (datespan, date), OPERATOR 28 &<# (datespan, datespan), OPERATOR 28 &<# (datespan, datespanset), -- strictly before OPERATOR 29 <<# (datespan, date), OPERATOR 29 <<# (datespan, datespan), OPERATOR 29 <<# (datespan, datespanset), -- strictly after OPERATOR 30 #>> (datespan, date), OPERATOR 30 #>> (datespan, datespan), OPERATOR 30 #>> (datespan, datespanset), -- overlaps or after OPERATOR 31 #&> (datespan, date), OPERATOR 31 #&> (datespan, datespan), OPERATOR 31 #&> (datespan, datespanset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzspan_quadtree_ops DEFAULT FOR TYPE tstzspan USING spgist AS -- overlaps OPERATOR 3 && (tstzspan, tstzspan), OPERATOR 3 && (tstzspan, tstzspanset), -- contains OPERATOR 7 @> (tstzspan, timestamptz), OPERATOR 7 @> (tstzspan, tstzspan), OPERATOR 7 @> (tstzspan, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspan, tstzspan), OPERATOR 8 <@ (tstzspan, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspan, tstzspan), OPERATOR 17 -|- (tstzspan, tstzspanset), -- equals OPERATOR 18 = (tstzspan, tstzspan), -- nearest approach distance OPERATOR 25 <-> (tstzspan, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspan, timestamptz), OPERATOR 28 &<# (tstzspan, tstzspan), OPERATOR 28 &<# (tstzspan, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspan, timestamptz), OPERATOR 29 <<# (tstzspan, tstzspan), OPERATOR 29 <<# (tstzspan, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspan, timestamptz), OPERATOR 30 #>> (tstzspan, tstzspan), OPERATOR 30 #>> (tstzspan, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspan, timestamptz), OPERATOR 31 #&> (tstzspan, tstzspan), OPERATOR 31 #&> (tstzspan, tstzspanset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /****************************************************************************** * Kd-tree SP-GiST indexes ******************************************************************************/ CREATE FUNCTION span_kdtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_kdtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_kdtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_kdtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_kdtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Span_kdtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intspan_kdtree_ops FOR TYPE intspan USING spgist AS -- strictly left OPERATOR 1 << (intspan, integer), OPERATOR 1 << (intspan, intspan), OPERATOR 1 << (intspan, intspanset), -- overlaps or left OPERATOR 2 &< (intspan, integer), OPERATOR 2 &< (intspan, intspan), OPERATOR 2 &< (intspan, intspanset), -- overlaps OPERATOR 3 && (intspan, intspan), OPERATOR 3 && (intspan, intspanset), -- overlaps or right OPERATOR 4 &> (intspan, integer), OPERATOR 4 &> (intspan, intspan), OPERATOR 4 &> (intspan, intspanset), -- strictly right OPERATOR 5 >> (intspan, integer), OPERATOR 5 >> (intspan, intspan), OPERATOR 5 >> (intspan, intspanset), -- contains OPERATOR 7 @> (intspan, integer), OPERATOR 7 @> (intspan, intspan), OPERATOR 7 @> (intspan, intspanset), -- contained by OPERATOR 8 <@ (intspan, intspan), OPERATOR 8 <@ (intspan, intspanset), -- adjacent OPERATOR 17 -|- (intspan, intspan), OPERATOR 17 -|- (intspan, intspanset), -- equals OPERATOR 18 = (intspan, intspan), -- nearest approach distance OPERATOR 25 <-> (intspan, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspan, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintspan_kdtree_ops FOR TYPE bigintspan USING spgist AS -- strictly left OPERATOR 1 << (bigintspan, bigint), OPERATOR 1 << (bigintspan, bigintspan), OPERATOR 1 << (bigintspan, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspan, bigint), OPERATOR 2 &< (bigintspan, bigintspan), OPERATOR 2 &< (bigintspan, bigintspanset), -- overlaps OPERATOR 3 && (bigintspan, bigintspan), OPERATOR 3 && (bigintspan, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspan, bigint), OPERATOR 4 &> (bigintspan, bigintspan), OPERATOR 4 &> (bigintspan, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspan, bigint), OPERATOR 5 >> (bigintspan, bigintspan), OPERATOR 5 >> (bigintspan, bigintspanset), -- contains OPERATOR 7 @> (bigintspan, bigint), OPERATOR 7 @> (bigintspan, bigintspan), OPERATOR 7 @> (bigintspan, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspan, bigintspan), OPERATOR 8 <@ (bigintspan, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspan, bigintspan), OPERATOR 17 -|- (bigintspan, bigintspanset), -- equals OPERATOR 18 = (bigintspan, bigintspan), -- nearest approach distance OPERATOR 25 <-> (bigintspan, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspan, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 bigintspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS floatspan_kdtree_ops FOR TYPE floatspan USING spgist AS -- strictly left OPERATOR 1 << (floatspan, float), OPERATOR 1 << (floatspan, floatspan), OPERATOR 1 << (floatspan, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspan, float), OPERATOR 2 &< (floatspan, floatspan), OPERATOR 2 &< (floatspan, floatspanset), -- overlaps OPERATOR 3 && (floatspan, floatspan), OPERATOR 3 && (floatspan, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspan, float), OPERATOR 4 &> (floatspan, floatspan), OPERATOR 4 &> (floatspan, floatspanset), -- strictly right OPERATOR 5 >> (floatspan, float), OPERATOR 5 >> (floatspan, floatspan), OPERATOR 5 >> (floatspan, floatspanset), -- contains OPERATOR 7 @> (floatspan, float), OPERATOR 7 @> (floatspan, floatspan), OPERATOR 7 @> (floatspan, floatspanset), -- contained by OPERATOR 8 <@ (floatspan, floatspan), OPERATOR 8 <@ (floatspan, floatspanset), -- adjacent OPERATOR 17 -|- (floatspan, floatspan), OPERATOR 17 -|- (floatspan, floatspanset), -- equals OPERATOR 18 = (floatspan, floatspan), -- nearest approach distance OPERATOR 25 <-> (floatspan, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspan, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS datespan_kdtree_ops FOR TYPE datespan USING spgist AS -- overlaps OPERATOR 3 && (datespan, datespan), OPERATOR 3 && (datespan, datespanset), -- contains OPERATOR 7 @> (datespan, date), OPERATOR 7 @> (datespan, datespan), OPERATOR 7 @> (datespan, datespanset), -- contained by OPERATOR 8 <@ (datespan, datespan), OPERATOR 8 <@ (datespan, datespanset), -- adjacent OPERATOR 17 -|- (datespan, datespan), OPERATOR 17 -|- (datespan, datespanset), -- equals OPERATOR 18 = (datespan, datespan), -- nearest approach distance OPERATOR 25 <-> (datespan, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespan, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (datespan, date), OPERATOR 28 &<# (datespan, datespan), OPERATOR 28 &<# (datespan, datespanset), -- strictly before OPERATOR 29 <<# (datespan, date), OPERATOR 29 <<# (datespan, datespan), OPERATOR 29 <<# (datespan, datespanset), -- strictly after OPERATOR 30 #>> (datespan, date), OPERATOR 30 #>> (datespan, datespan), OPERATOR 30 #>> (datespan, datespanset), -- overlaps or after OPERATOR 31 #&> (datespan, date), OPERATOR 31 #&> (datespan, datespan), OPERATOR 31 #&> (datespan, datespanset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzspan_kdtree_ops FOR TYPE tstzspan USING spgist AS -- overlaps OPERATOR 3 && (tstzspan, tstzspan), OPERATOR 3 && (tstzspan, tstzspanset), -- contains OPERATOR 7 @> (tstzspan, timestamptz), OPERATOR 7 @> (tstzspan, tstzspan), OPERATOR 7 @> (tstzspan, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspan, tstzspan), OPERATOR 8 <@ (tstzspan, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspan, tstzspan), OPERATOR 17 -|- (tstzspan, tstzspanset), -- equals OPERATOR 18 = (tstzspan, tstzspan), -- nearest approach distance OPERATOR 25 <-> (tstzspan, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspan, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspan, timestamptz), OPERATOR 28 &<# (tstzspan, tstzspan), OPERATOR 28 &<# (tstzspan, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspan, timestamptz), OPERATOR 29 <<# (tstzspan, tstzspan), OPERATOR 29 <<# (tstzspan, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspan, timestamptz), OPERATOR 30 #>> (tstzspan, tstzspan), OPERATOR 30 #>> (tstzspan, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspan, timestamptz), OPERATOR 31 #&> (tstzspan, tstzspan), OPERATOR 31 #&> (tstzspan, tstzspanset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * spanset_gist.sql * R-tree GiST and Quad-tree SP-GiST indexes for span set types */ /****************************************************************************** * R-tree GiST indexes ******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, intspanset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_consistent(internal, bigintspanset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_consistent(internal, floatspanset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_consistent(internal, datespanset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_consistent(internal, tstzspanset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanset_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intspanset_rtree_ops DEFAULT FOR TYPE intspanset USING gist AS STORAGE intspan, -- strictly left OPERATOR 1 << (intspanset, integer), OPERATOR 1 << (intspanset, intspan), OPERATOR 1 << (intspanset, intspanset), -- overlaps or left OPERATOR 2 &< (intspanset, integer), OPERATOR 2 &< (intspanset, intspan), OPERATOR 2 &< (intspanset, intspanset), -- overlaps OPERATOR 3 && (intspanset, intspan), OPERATOR 3 && (intspanset, intspanset), -- overlaps or right OPERATOR 4 &> (intspanset, integer), OPERATOR 4 &> (intspanset, intspan), OPERATOR 4 &> (intspanset, intspanset), -- strictly right OPERATOR 5 >> (intspanset, integer), OPERATOR 5 >> (intspanset, intspan), OPERATOR 5 >> (intspanset, intspanset), -- contains OPERATOR 7 @> (intspanset, integer), OPERATOR 7 @> (intspanset, intspan), OPERATOR 7 @> (intspanset, intspanset), -- contained by OPERATOR 8 <@ (intspanset, intspan), OPERATOR 8 <@ (intspanset, intspanset), -- adjacent OPERATOR 17 -|- (intspanset, intspan), OPERATOR 17 -|- (intspanset, intspanset), -- equals OPERATOR 18 = (intspanset, intspanset), -- nearest approach distance OPERATOR 25 <-> (intspanset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, intspanset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 spanset_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(intspan, intspan, internal), FUNCTION 8 span_gist_distance(internal, intspan, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintspanset_rtree_ops DEFAULT FOR TYPE bigintspanset USING gist AS STORAGE bigintspan, -- strictly left OPERATOR 1 << (bigintspanset, bigint), OPERATOR 1 << (bigintspanset, bigintspan), OPERATOR 1 << (bigintspanset, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspanset, bigint), OPERATOR 2 &< (bigintspanset, bigintspan), OPERATOR 2 &< (bigintspanset, bigintspanset), -- overlaps OPERATOR 3 && (bigintspanset, bigintspan), OPERATOR 3 && (bigintspanset, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspanset, bigint), OPERATOR 4 &> (bigintspanset, bigintspan), OPERATOR 4 &> (bigintspanset, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspanset, bigint), OPERATOR 5 >> (bigintspanset, bigintspan), OPERATOR 5 >> (bigintspanset, bigintspanset), -- contains OPERATOR 7 @> (bigintspanset, bigint), OPERATOR 7 @> (bigintspanset, bigintspan), OPERATOR 7 @> (bigintspanset, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspanset, bigintspan), OPERATOR 8 <@ (bigintspanset, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspanset, bigintspan), OPERATOR 17 -|- (bigintspanset, bigintspanset), -- equals OPERATOR 18 = (bigintspanset, bigintspanset), -- nearest approach distance OPERATOR 25 <-> (bigintspanset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, bigintspanset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 spanset_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(bigintspan, bigintspan, internal), FUNCTION 8 span_gist_distance(internal, bigintspan, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS floatspanset_rtree_ops DEFAULT FOR TYPE floatspanset USING gist AS STORAGE floatspan, -- strictly left OPERATOR 1 << (floatspanset, float), OPERATOR 1 << (floatspanset, floatspan), OPERATOR 1 << (floatspanset, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspanset, float), OPERATOR 2 &< (floatspanset, floatspan), OPERATOR 2 &< (floatspanset, floatspanset), -- overlaps OPERATOR 3 && (floatspanset, floatspan), OPERATOR 3 && (floatspanset, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspanset, float), OPERATOR 4 &> (floatspanset, floatspan), OPERATOR 4 &> (floatspanset, floatspanset), -- strictly right OPERATOR 5 >> (floatspanset, float), OPERATOR 5 >> (floatspanset, floatspan), OPERATOR 5 >> (floatspanset, floatspanset), -- contains OPERATOR 7 @> (floatspanset, float), OPERATOR 7 @> (floatspanset, floatspan), OPERATOR 7 @> (floatspanset, floatspanset), -- contained by OPERATOR 8 <@ (floatspanset, floatspan), OPERATOR 8 <@ (floatspanset, floatspanset), -- adjacent OPERATOR 17 -|- (floatspanset, floatspan), OPERATOR 17 -|- (floatspanset, floatspanset), -- equals OPERATOR 18 = (floatspanset, floatspanset), -- nearest approach distance OPERATOR 25 <-> (floatspanset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 span_gist_consistent(internal, floatspanset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 spanset_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(floatspan, floatspan, internal), FUNCTION 8 span_gist_distance(internal, floatspan, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS datespanset_rtree_ops DEFAULT FOR TYPE datespanset USING gist AS STORAGE datespan, -- overlaps OPERATOR 3 && (datespanset, datespan), OPERATOR 3 && (datespanset, datespanset), -- contains OPERATOR 7 @> (datespanset, date), OPERATOR 7 @> (datespanset, datespan), OPERATOR 7 @> (datespanset, datespanset), -- contained by OPERATOR 8 <@ (datespanset, datespan), OPERATOR 8 <@ (datespanset, datespanset), -- adjacent OPERATOR 17 -|- (datespanset, datespan), OPERATOR 17 -|- (datespanset, datespanset), -- equals OPERATOR 18 = (datespanset, datespanset), -- nearest approach distance OPERATOR 25 <-> (datespanset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (datespanset, date), OPERATOR 28 &<# (datespanset, datespan), OPERATOR 28 &<# (datespanset, datespanset), -- strictly before OPERATOR 29 <<# (datespanset, date), OPERATOR 29 <<# (datespanset, datespan), OPERATOR 29 <<# (datespanset, datespanset), -- strictly after OPERATOR 30 #>> (datespanset, date), OPERATOR 30 #>> (datespanset, datespan), OPERATOR 30 #>> (datespanset, datespanset), -- overlaps or after OPERATOR 31 #&> (datespanset, date), OPERATOR 31 #&> (datespanset, datespan), OPERATOR 31 #&> (datespanset, datespanset), -- functions FUNCTION 1 span_gist_consistent(internal, datespanset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 spanset_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(datespan, datespan, internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzspanset_rtree_ops DEFAULT FOR TYPE tstzspanset USING gist AS STORAGE tstzspan, -- overlaps OPERATOR 3 && (tstzspanset, tstzspan), OPERATOR 3 && (tstzspanset, tstzspanset), -- contains OPERATOR 7 @> (tstzspanset, timestamptz), OPERATOR 7 @> (tstzspanset, tstzspan), OPERATOR 7 @> (tstzspanset, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspanset, tstzspan), OPERATOR 8 <@ (tstzspanset, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspanset, tstzspan), OPERATOR 17 -|- (tstzspanset, tstzspanset), -- equals OPERATOR 18 = (tstzspanset, tstzspanset), -- nearest approach distance OPERATOR 25 <-> (tstzspanset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspanset, timestamptz), OPERATOR 28 &<# (tstzspanset, tstzspan), OPERATOR 28 &<# (tstzspanset, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspanset, timestamptz), OPERATOR 29 <<# (tstzspanset, tstzspan), OPERATOR 29 <<# (tstzspanset, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspanset, timestamptz), OPERATOR 30 #>> (tstzspanset, tstzspan), OPERATOR 30 #>> (tstzspanset, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspanset, timestamptz), OPERATOR 31 #&> (tstzspanset, tstzspan), OPERATOR 31 #&> (tstzspanset, tstzspanset), -- functions FUNCTION 1 span_gist_consistent(internal, tstzspanset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 spanset_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(tstzspan, tstzspan, internal); /****************************************************************************** * Quad-tree SP-GiST indexes ******************************************************************************/ CREATE FUNCTION spanset_spgist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_spgist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intspanset_quadtree_ops DEFAULT FOR TYPE intspanset USING spgist AS -- strictly left OPERATOR 1 << (intspanset, integer), OPERATOR 1 << (intspanset, intspan), OPERATOR 1 << (intspanset, intspanset), -- overlaps or left OPERATOR 2 &< (intspanset, integer), OPERATOR 2 &< (intspanset, intspan), OPERATOR 2 &< (intspanset, intspanset), -- overlaps OPERATOR 3 && (intspanset, intspan), OPERATOR 3 && (intspanset, intspanset), -- overlaps or right OPERATOR 4 &> (intspanset, integer), OPERATOR 4 &> (intspanset, intspan), OPERATOR 4 &> (intspanset, intspanset), -- strictly right OPERATOR 5 >> (intspanset, integer), OPERATOR 5 >> (intspanset, intspan), OPERATOR 5 >> (intspanset, intspanset), -- contains OPERATOR 7 @> (intspanset, integer), OPERATOR 7 @> (intspanset, intspan), OPERATOR 7 @> (intspanset, intspanset), -- contained by OPERATOR 8 <@ (intspanset, intspan), OPERATOR 8 <@ (intspanset, intspanset), -- adjacent OPERATOR 17 -|- (intspanset, intspan), OPERATOR 17 -|- (intspanset, intspanset), -- equals OPERATOR 18 = (intspanset, intspanset), -- nearest approach distance OPERATOR 25 <-> (intspanset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintspanset_quadtree_ops DEFAULT FOR TYPE bigintspanset USING spgist AS -- strictly left OPERATOR 1 << (bigintspanset, bigint), OPERATOR 1 << (bigintspanset, bigintspan), OPERATOR 1 << (bigintspanset, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspanset, bigint), OPERATOR 2 &< (bigintspanset, bigintspan), OPERATOR 2 &< (bigintspanset, bigintspanset), -- overlaps OPERATOR 3 && (bigintspanset, bigintspan), OPERATOR 3 && (bigintspanset, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspanset, bigint), OPERATOR 4 &> (bigintspanset, bigintspan), OPERATOR 4 &> (bigintspanset, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspanset, bigint), OPERATOR 5 >> (bigintspanset, bigintspan), OPERATOR 5 >> (bigintspanset, bigintspanset), -- contains OPERATOR 7 @> (bigintspanset, bigint), OPERATOR 7 @> (bigintspanset, bigintspan), OPERATOR 7 @> (bigintspanset, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspanset, bigintspan), OPERATOR 8 <@ (bigintspanset, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspanset, bigintspan), OPERATOR 17 -|- (bigintspanset, bigintspanset), -- equals OPERATOR 18 = (bigintspanset, bigintspanset), -- nearest approach distance OPERATOR 25 <-> (bigintspanset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS floatspanset_quadtree_ops DEFAULT FOR TYPE floatspanset USING spgist AS -- strictly left OPERATOR 1 << (floatspanset, float), OPERATOR 1 << (floatspanset, floatspan), OPERATOR 1 << (floatspanset, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspanset, float), OPERATOR 2 &< (floatspanset, floatspan), OPERATOR 2 &< (floatspanset, floatspanset), -- overlaps OPERATOR 3 && (floatspanset, floatspan), OPERATOR 3 && (floatspanset, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspanset, float), OPERATOR 4 &> (floatspanset, floatspan), OPERATOR 4 &> (floatspanset, floatspanset), -- strictly right OPERATOR 5 >> (floatspanset, float), OPERATOR 5 >> (floatspanset, floatspan), OPERATOR 5 >> (floatspanset, floatspanset), -- contains OPERATOR 7 @> (floatspanset, float), OPERATOR 7 @> (floatspanset, floatspan), OPERATOR 7 @> (floatspanset, floatspanset), -- contained by OPERATOR 8 <@ (floatspanset, floatspan), OPERATOR 8 <@ (floatspanset, floatspanset), -- adjacent OPERATOR 17 -|- (floatspanset, floatspan), OPERATOR 17 -|- (floatspanset, floatspanset), -- equals OPERATOR 18 = (floatspanset, floatspanset), -- nearest approach distance OPERATOR 25 <-> (floatspanset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS datespanset_quadtree_ops DEFAULT FOR TYPE datespanset USING spgist AS -- overlaps OPERATOR 3 && (datespanset, datespan), OPERATOR 3 && (datespanset, datespanset), -- contains OPERATOR 7 @> (datespanset, date), OPERATOR 7 @> (datespanset, datespan), OPERATOR 7 @> (datespanset, datespanset), -- contained by OPERATOR 8 <@ (datespanset, datespan), OPERATOR 8 <@ (datespanset, datespanset), -- adjacent OPERATOR 17 -|- (datespanset, datespan), OPERATOR 17 -|- (datespanset, datespanset), -- equals OPERATOR 18 = (datespanset, datespanset), -- nearest approach distance OPERATOR 25 <-> (datespanset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (datespanset, date), OPERATOR 28 &<# (datespanset, datespan), OPERATOR 28 &<# (datespanset, datespanset), -- strictly before OPERATOR 29 <<# (datespanset, date), OPERATOR 29 <<# (datespanset, datespan), OPERATOR 29 <<# (datespanset, datespanset), -- strictly after OPERATOR 30 #>> (datespanset, date), OPERATOR 30 #>> (datespanset, datespan), OPERATOR 30 #>> (datespanset, datespanset), -- overlaps or after OPERATOR 31 #&> (datespanset, date), OPERATOR 31 #&> (datespanset, datespan), OPERATOR 31 #&> (datespanset, datespanset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzspanset_quadtree_ops DEFAULT FOR TYPE tstzspanset USING spgist AS -- overlaps OPERATOR 3 && (tstzspanset, tstzspan), OPERATOR 3 && (tstzspanset, tstzspanset), -- contains OPERATOR 7 @> (tstzspanset, timestamptz), OPERATOR 7 @> (tstzspanset, tstzspan), OPERATOR 7 @> (tstzspanset, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspanset, tstzspan), OPERATOR 8 <@ (tstzspanset, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspanset, tstzspan), OPERATOR 17 -|- (tstzspanset, tstzspanset), -- equals OPERATOR 18 = (tstzspanset, tstzspanset), -- nearest approach distance OPERATOR 25 <-> (tstzspanset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspanset, timestamptz), OPERATOR 28 &<# (tstzspanset, tstzspan), OPERATOR 28 &<# (tstzspanset, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspanset, timestamptz), OPERATOR 29 <<# (tstzspanset, tstzspan), OPERATOR 29 <<# (tstzspanset, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspanset, timestamptz), OPERATOR 30 #>> (tstzspanset, tstzspan), OPERATOR 30 #>> (tstzspanset, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspanset, timestamptz), OPERATOR 31 #&> (tstzspanset, tstzspan), OPERATOR 31 #&> (tstzspanset, tstzspanset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /****************************************************************************** * Kd-tree SP-GiST indexes ******************************************************************************/ CREATE OPERATOR CLASS intspanset_kdtree_ops FOR TYPE intspanset USING spgist AS -- strictly left OPERATOR 1 << (intspanset, integer), OPERATOR 1 << (intspanset, intspan), OPERATOR 1 << (intspanset, intspanset), -- overlaps or left OPERATOR 2 &< (intspanset, integer), OPERATOR 2 &< (intspanset, intspan), OPERATOR 2 &< (intspanset, intspanset), -- overlaps OPERATOR 3 && (intspanset, intspan), OPERATOR 3 && (intspanset, intspanset), -- overlaps or right OPERATOR 4 &> (intspanset, integer), OPERATOR 4 &> (intspanset, intspan), OPERATOR 4 &> (intspanset, intspanset), -- strictly right OPERATOR 5 >> (intspanset, integer), OPERATOR 5 >> (intspanset, intspan), OPERATOR 5 >> (intspanset, intspanset), -- contains OPERATOR 7 @> (intspanset, integer), OPERATOR 7 @> (intspanset, intspan), OPERATOR 7 @> (intspanset, intspanset), -- contained by OPERATOR 8 <@ (intspanset, intspan), OPERATOR 8 <@ (intspanset, intspanset), -- adjacent OPERATOR 17 -|- (intspanset, intspan), OPERATOR 17 -|- (intspanset, intspanset), -- equals OPERATOR 18 = (intspanset, intspanset), -- nearest approach distance OPERATOR 25 <-> (intspanset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intspanset, intspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintspanset_kdtree_ops FOR TYPE bigintspanset USING spgist AS -- strictly left OPERATOR 1 << (bigintspanset, bigint), OPERATOR 1 << (bigintspanset, bigintspan), OPERATOR 1 << (bigintspanset, bigintspanset), -- overlaps or left OPERATOR 2 &< (bigintspanset, bigint), OPERATOR 2 &< (bigintspanset, bigintspan), OPERATOR 2 &< (bigintspanset, bigintspanset), -- overlaps OPERATOR 3 && (bigintspanset, bigintspan), OPERATOR 3 && (bigintspanset, bigintspanset), -- overlaps or right OPERATOR 4 &> (bigintspanset, bigint), OPERATOR 4 &> (bigintspanset, bigintspan), OPERATOR 4 &> (bigintspanset, bigintspanset), -- strictly right OPERATOR 5 >> (bigintspanset, bigint), OPERATOR 5 >> (bigintspanset, bigintspan), OPERATOR 5 >> (bigintspanset, bigintspanset), -- contains OPERATOR 7 @> (bigintspanset, bigint), OPERATOR 7 @> (bigintspanset, bigintspan), OPERATOR 7 @> (bigintspanset, bigintspanset), -- contained by OPERATOR 8 <@ (bigintspanset, bigintspan), OPERATOR 8 <@ (bigintspanset, bigintspanset), -- adjacent OPERATOR 17 -|- (bigintspanset, bigintspan), OPERATOR 17 -|- (bigintspanset, bigintspanset), -- equals OPERATOR 18 = (bigintspanset, bigintspanset), -- nearest approach distance OPERATOR 25 <-> (bigintspanset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintspanset, bigintspanset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS floatspanset_kdtree_ops FOR TYPE floatspanset USING spgist AS -- strictly left OPERATOR 1 << (floatspanset, float), OPERATOR 1 << (floatspanset, floatspan), OPERATOR 1 << (floatspanset, floatspanset), -- overlaps or left OPERATOR 2 &< (floatspanset, float), OPERATOR 2 &< (floatspanset, floatspan), OPERATOR 2 &< (floatspanset, floatspanset), -- overlaps OPERATOR 3 && (floatspanset, floatspan), OPERATOR 3 && (floatspanset, floatspanset), -- overlaps or right OPERATOR 4 &> (floatspanset, float), OPERATOR 4 &> (floatspanset, floatspan), OPERATOR 4 &> (floatspanset, floatspanset), -- strictly right OPERATOR 5 >> (floatspanset, float), OPERATOR 5 >> (floatspanset, floatspan), OPERATOR 5 >> (floatspanset, floatspanset), -- contains OPERATOR 7 @> (floatspanset, float), OPERATOR 7 @> (floatspanset, floatspan), OPERATOR 7 @> (floatspanset, floatspanset), -- contained by OPERATOR 8 <@ (floatspanset, floatspan), OPERATOR 8 <@ (floatspanset, floatspanset), -- adjacent OPERATOR 17 -|- (floatspanset, floatspan), OPERATOR 17 -|- (floatspanset, floatspanset), -- equals OPERATOR 18 = (floatspanset, floatspanset), -- nearest approach distance OPERATOR 25 <-> (floatspanset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatspanset, floatspanset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS datespanset_kdtree_ops FOR TYPE datespanset USING spgist AS -- overlaps OPERATOR 3 && (datespanset, datespan), OPERATOR 3 && (datespanset, datespanset), -- contains OPERATOR 7 @> (datespanset, date), OPERATOR 7 @> (datespanset, datespan), OPERATOR 7 @> (datespanset, datespanset), -- contained by OPERATOR 8 <@ (datespanset, datespan), OPERATOR 8 <@ (datespanset, datespanset), -- adjacent OPERATOR 17 -|- (datespanset, datespan), OPERATOR 17 -|- (datespanset, datespanset), -- equals OPERATOR 18 = (datespanset, datespanset), -- nearest approach distance OPERATOR 25 <-> (datespanset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespan) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (datespanset, datespanset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (datespanset, date), OPERATOR 28 &<# (datespanset, datespan), OPERATOR 28 &<# (datespanset, datespanset), -- strictly before OPERATOR 29 <<# (datespanset, date), OPERATOR 29 <<# (datespanset, datespan), OPERATOR 29 <<# (datespanset, datespanset), -- strictly after OPERATOR 30 #>> (datespanset, date), OPERATOR 30 #>> (datespanset, datespan), OPERATOR 30 #>> (datespanset, datespanset), -- overlaps or after OPERATOR 31 #&> (datespanset, date), OPERATOR 31 #&> (datespanset, datespan), OPERATOR 31 #&> (datespanset, datespanset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzspanset_kdtree_ops FOR TYPE tstzspanset USING spgist AS -- overlaps OPERATOR 3 && (tstzspanset, tstzspan), OPERATOR 3 && (tstzspanset, tstzspanset), -- contains OPERATOR 7 @> (tstzspanset, timestamptz), OPERATOR 7 @> (tstzspanset, tstzspan), OPERATOR 7 @> (tstzspanset, tstzspanset), -- contained by OPERATOR 8 <@ (tstzspanset, tstzspan), OPERATOR 8 <@ (tstzspanset, tstzspanset), -- adjacent OPERATOR 17 -|- (tstzspanset, tstzspan), OPERATOR 17 -|- (tstzspanset, tstzspanset), -- equals OPERATOR 18 = (tstzspanset, tstzspanset), -- nearest approach distance OPERATOR 25 <-> (tstzspanset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspan) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzspanset, tstzspanset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzspanset, timestamptz), OPERATOR 28 &<# (tstzspanset, tstzspan), OPERATOR 28 &<# (tstzspanset, tstzspanset), -- strictly before OPERATOR 29 <<# (tstzspanset, timestamptz), OPERATOR 29 <<# (tstzspanset, tstzspan), OPERATOR 29 <<# (tstzspanset, tstzspanset), -- strictly after OPERATOR 30 #>> (tstzspanset, timestamptz), OPERATOR 30 #>> (tstzspanset, tstzspan), OPERATOR 30 #>> (tstzspanset, tstzspanset), -- overlaps or after OPERATOR 31 #&> (tstzspanset, timestamptz), OPERATOR 31 #&> (tstzspanset, tstzspan), OPERATOR 31 #&> (tstzspanset, tstzspanset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 spanset_spgist_compress(internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * set_gist.sql * R-tree GiST, Quad-tree SP-GiST, and Kd-tree SP-GiST indexes for set types */ /****************************************************************************** * R-tree GiST indexes ******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, intset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, intset, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intset_rtree_ops DEFAULT FOR TYPE intset USING gist AS STORAGE intspan, -- strictly left OPERATOR 1 << (intset, integer), OPERATOR 1 << (intset, intset), -- overlaps or left OPERATOR 2 &< (intset, integer), OPERATOR 2 &< (intset, intset), -- overlaps OPERATOR 3 && (intset, intset), -- overlaps or right OPERATOR 4 &> (intset, integer), OPERATOR 4 &> (intset, intset), -- strictly right OPERATOR 5 >> (intset, integer), OPERATOR 5 >> (intset, intset), -- contains OPERATOR 7 @> (intset, integer), OPERATOR 7 @> (intset, intset), -- contained by OPERATOR 8 <@ (intset, intset), -- equals OPERATOR 18 = (intset, intset), -- nearest approach distance OPERATOR 25 <-> (intset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intset, intset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, intset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 set_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(intspan, intspan, internal), FUNCTION 8 span_gist_distance(internal, intset, smallint, oid, internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, bigintset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, bigintset, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS bigintset_rtree_ops DEFAULT FOR TYPE bigintset USING gist AS STORAGE bigintspan, -- strictly left OPERATOR 1 << (bigintset, bigint), OPERATOR 1 << (bigintset, bigintset), -- overlaps or left OPERATOR 2 &< (bigintset, bigint), OPERATOR 2 &< (bigintset, bigintset), -- overlaps OPERATOR 3 && (bigintset, bigintset), -- overlaps or right OPERATOR 4 &> (bigintset, bigint), OPERATOR 4 &> (bigintset, bigintset), -- strictly right OPERATOR 5 >> (bigintset, bigint), OPERATOR 5 >> (bigintset, bigintset), -- contains OPERATOR 7 @> (bigintset, bigint), OPERATOR 7 @> (bigintset, bigintset), -- contained by OPERATOR 8 <@ (bigintset, bigintset), -- equals OPERATOR 18 = (bigintset, bigintset), -- nearest approach distance OPERATOR 25 <-> (bigintset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintset, bigintset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 span_gist_consistent(internal, bigintset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 set_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(bigintspan, bigintspan, internal), FUNCTION 8 span_gist_distance(internal, bigintset, smallint, oid, internal); /******************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, floatset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION span_gist_distance(internal, floatset, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Span_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS floatset_rtree_ops DEFAULT FOR TYPE floatset USING gist AS STORAGE floatspan, -- strictly left OPERATOR 1 << (floatset, float), OPERATOR 1 << (floatset, floatset), -- overlaps or left OPERATOR 2 &< (floatset, float), OPERATOR 2 &< (floatset, floatset), -- overlaps OPERATOR 3 && (floatset, floatset), -- overlaps or right OPERATOR 4 &> (floatset, float), OPERATOR 4 &> (floatset, floatset), -- strictly right OPERATOR 5 >> (floatset, float), OPERATOR 5 >> (floatset, floatset), -- contains OPERATOR 7 @> (floatset, float), OPERATOR 7 @> (floatset, floatset), -- contained by OPERATOR 8 <@ (floatset, floatset), -- equals OPERATOR 18 = (floatset, floatset), -- nearest approach distance OPERATOR 25 <-> (floatset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatset, floatset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 span_gist_consistent(internal, floatset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 set_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(floatspan, floatspan, internal), FUNCTION 8 span_gist_distance(internal, floatset, smallint, oid, internal); /*****************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, dateset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE OPERATOR CLASS dateset_rtree_ops DEFAULT FOR TYPE dateset USING gist AS STORAGE datespan, -- overlaps OPERATOR 3 && (dateset, dateset), -- contains OPERATOR 7 @> (dateset, date), OPERATOR 7 @> (dateset, dateset), -- contained by OPERATOR 8 <@ (dateset, dateset), -- equals OPERATOR 18 = (dateset, dateset), -- nearest approach distance OPERATOR 25 <-> (dateset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (dateset, dateset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (dateset, date), OPERATOR 28 &<# (dateset, dateset), -- strictly before OPERATOR 29 <<# (dateset, date), OPERATOR 29 <<# (dateset, dateset), -- strictly after OPERATOR 30 #>> (dateset, date), OPERATOR 30 #>> (dateset, dateset), -- overlaps or after OPERATOR 31 #&> (dateset, date), OPERATOR 31 #&> (dateset, dateset), -- functions FUNCTION 1 span_gist_consistent(internal, dateset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 set_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(datespan, datespan, internal); /*****************************************************************************/ CREATE FUNCTION span_gist_consistent(internal, tstzset, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE OPERATOR CLASS tstzset_rtree_ops DEFAULT FOR TYPE tstzset USING gist AS STORAGE tstzspan, -- overlaps OPERATOR 3 && (tstzset, tstzset), -- contains OPERATOR 7 @> (tstzset, timestamptz), OPERATOR 7 @> (tstzset, tstzset), -- contained by OPERATOR 8 <@ (tstzset, tstzset), -- equals OPERATOR 18 = (tstzset, tstzset), -- nearest approach distance OPERATOR 25 <-> (tstzset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzset, tstzset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzset, timestamptz), OPERATOR 28 &<# (tstzset, tstzset), -- strictly before OPERATOR 29 <<# (tstzset, timestamptz), OPERATOR 29 <<# (tstzset, tstzset), -- strictly after OPERATOR 30 #>> (tstzset, timestamptz), OPERATOR 30 #>> (tstzset, tstzset), -- overlaps or after OPERATOR 31 #&> (tstzset, timestamptz), OPERATOR 31 #&> (tstzset, tstzset), -- functions FUNCTION 1 span_gist_consistent(internal, tstzset, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 set_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(tstzspan, tstzspan, internal); /****************************************************************************** * Quad-tree SP-GiST indexes ******************************************************************************/ CREATE FUNCTION intset_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Intspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bigintset_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Bigintspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatset_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Floatspan_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_spgist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_spgist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intset_quadtree_ops DEFAULT FOR TYPE intset USING spgist AS -- strictly left OPERATOR 1 << (intset, integer), OPERATOR 1 << (intset, intset), -- overlaps or left OPERATOR 2 &< (intset, integer), OPERATOR 2 &< (intset, intset), -- overlaps OPERATOR 3 && (intset, intset), -- overlaps or right OPERATOR 4 &> (intset, integer), OPERATOR 4 &> (intset, intset), -- strictly right OPERATOR 5 >> (intset, integer), OPERATOR 5 >> (intset, intset), -- contains OPERATOR 7 @> (intset, integer), OPERATOR 7 @> (intset, intset), -- contained by OPERATOR 8 <@ (intset, intset), -- equals OPERATOR 18 = (intset, intset), -- nearest approach distance OPERATOR 25 <-> (intset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intset, intset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intset_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintset_quadtree_ops DEFAULT FOR TYPE bigintset USING spgist AS -- strictly left OPERATOR 1 << (bigintset, bigint), OPERATOR 1 << (bigintset, bigintset), -- overlaps or left OPERATOR 2 &< (bigintset, bigint), OPERATOR 2 &< (bigintset, bigintset), -- overlaps OPERATOR 3 && (bigintset, bigintset), -- overlaps or right OPERATOR 4 &> (bigintset, bigint), OPERATOR 4 &> (bigintset, bigintset), -- strictly right OPERATOR 5 >> (bigintset, bigint), OPERATOR 5 >> (bigintset, bigintset), -- contains OPERATOR 7 @> (bigintset, bigint), OPERATOR 7 @> (bigintset, bigintset), -- contained by OPERATOR 8 <@ (bigintset, bigintset), -- equals OPERATOR 18 = (bigintset, bigintset), -- nearest approach distance OPERATOR 25 <-> (bigintset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintset, bigintset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intset_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS floatset_quadtree_ops DEFAULT FOR TYPE floatset USING spgist AS -- strictly left OPERATOR 1 << (floatset, float), OPERATOR 1 << (floatset, floatset), -- overlaps or left OPERATOR 2 &< (floatset, float), OPERATOR 2 &< (floatset, floatset), -- overlaps OPERATOR 3 && (floatset, floatset), -- overlaps or right OPERATOR 4 &> (floatset, float), OPERATOR 4 &> (floatset, floatset), -- strictly right OPERATOR 5 >> (floatset, float), OPERATOR 5 >> (floatset, floatset), -- contains OPERATOR 7 @> (floatset, float), OPERATOR 7 @> (floatset, floatset), -- contained by OPERATOR 8 <@ (floatset, floatset), -- equals OPERATOR 18 = (floatset, floatset), -- nearest approach distance OPERATOR 25 <-> (floatset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatset, floatset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatset_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS dateset_quadtree_ops DEFAULT FOR TYPE dateset USING spgist AS -- overlaps OPERATOR 3 && (dateset, dateset), -- contains OPERATOR 7 @> (dateset, date), OPERATOR 7 @> (dateset, dateset), -- contained by OPERATOR 8 <@ (dateset, dateset), -- equals OPERATOR 18 = (dateset, dateset), -- nearest approach distance OPERATOR 25 <-> (dateset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (dateset, dateset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (dateset, date), OPERATOR 28 &<# (dateset, dateset), -- strictly before OPERATOR 29 <<# (dateset, date), OPERATOR 29 <<# (dateset, dateset), -- strictly after OPERATOR 30 #>> (dateset, date), OPERATOR 30 #>> (dateset, dateset), -- overlaps or after OPERATOR 31 #&> (dateset, date), OPERATOR 31 #&> (dateset, dateset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzset_quadtree_ops DEFAULT FOR TYPE tstzset USING spgist AS -- overlaps OPERATOR 3 && (tstzset, tstzset), -- contains OPERATOR 7 @> (tstzset, timestamptz), OPERATOR 7 @> (tstzset, tstzset), -- contained by OPERATOR 8 <@ (tstzset, tstzset), -- equals OPERATOR 18 = (tstzset, tstzset), -- nearest approach distance OPERATOR 25 <-> (tstzset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzset, tstzset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzset, timestamptz), OPERATOR 28 &<# (tstzset, tstzset), -- strictly before OPERATOR 29 <<# (tstzset, timestamptz), OPERATOR 29 <<# (tstzset, tstzset), -- strictly after OPERATOR 30 #>> (tstzset, timestamptz), OPERATOR 30 #>> (tstzset, tstzset), -- overlaps or after OPERATOR 31 #&> (tstzset, timestamptz), OPERATOR 31 #&> (tstzset, tstzset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /****************************************************************************** * Kd-tree indexes ******************************************************************************/ CREATE OPERATOR CLASS intset_kdtree_ops FOR TYPE intset USING spgist AS -- strictly left OPERATOR 1 << (intset, integer), OPERATOR 1 << (intset, intset), -- overlaps or left OPERATOR 2 &< (intset, integer), OPERATOR 2 &< (intset, intset), -- overlaps OPERATOR 3 && (intset, intset), -- overlaps or right OPERATOR 4 &> (intset, integer), OPERATOR 4 &> (intset, intset), -- strictly right OPERATOR 5 >> (intset, integer), OPERATOR 5 >> (intset, intset), -- contains OPERATOR 7 @> (intset, integer), OPERATOR 7 @> (intset, intset), -- contained by OPERATOR 8 <@ (intset, intset), -- equals OPERATOR 18 = (intset, intset), -- nearest approach distance OPERATOR 25 <-> (intset, integer) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (intset, intset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intset_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS bigintset_kdtree_ops FOR TYPE bigintset USING spgist AS -- strictly left OPERATOR 1 << (bigintset, bigint), OPERATOR 1 << (bigintset, bigintset), -- overlaps or left OPERATOR 2 &< (bigintset, bigint), OPERATOR 2 &< (bigintset, bigintset), -- overlaps OPERATOR 3 && (bigintset, bigintset), -- overlaps or right OPERATOR 4 &> (bigintset, bigint), OPERATOR 4 &> (bigintset, bigintset), -- strictly right OPERATOR 5 >> (bigintset, bigint), OPERATOR 5 >> (bigintset, bigintset), -- contains OPERATOR 7 @> (bigintset, bigint), OPERATOR 7 @> (bigintset, bigintset), -- contained by OPERATOR 8 <@ (bigintset, bigintset), -- equals OPERATOR 18 = (bigintset, bigintset), -- nearest approach distance OPERATOR 25 <-> (bigintset, bigint) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (bigintset, bigintset) FOR ORDER BY pg_catalog.integer_ops, -- functions FUNCTION 1 intset_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS floatset_kdtree_ops FOR TYPE floatset USING spgist AS -- strictly left OPERATOR 1 << (floatset, float), OPERATOR 1 << (floatset, floatset), -- overlaps or left OPERATOR 2 &< (floatset, float), OPERATOR 2 &< (floatset, floatset), -- overlaps OPERATOR 3 && (floatset, floatset), -- overlaps or right OPERATOR 4 &> (floatset, float), OPERATOR 4 &> (floatset, floatset), -- strictly right OPERATOR 5 >> (floatset, float), OPERATOR 5 >> (floatset, floatset), -- contains OPERATOR 7 @> (floatset, float), OPERATOR 7 @> (floatset, floatset), -- contained by OPERATOR 8 <@ (floatset, floatset), -- equals OPERATOR 18 = (floatset, floatset), -- nearest approach distance OPERATOR 25 <-> (floatset, float) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (floatset, floatset) FOR ORDER BY pg_catalog.float_ops, -- functions FUNCTION 1 floatset_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS dateset_kdtree_ops FOR TYPE dateset USING spgist AS -- overlaps OPERATOR 3 && (dateset, dateset), -- contains OPERATOR 7 @> (dateset, date), OPERATOR 7 @> (dateset, dateset), -- contained by OPERATOR 8 <@ (dateset, dateset), -- equals OPERATOR 18 = (dateset, dateset), -- nearest approach distance OPERATOR 25 <-> (dateset, date) FOR ORDER BY pg_catalog.integer_ops, OPERATOR 25 <-> (dateset, dateset) FOR ORDER BY pg_catalog.integer_ops, -- overlaps or before OPERATOR 28 &<# (dateset, date), OPERATOR 28 &<# (dateset, dateset), -- strictly before OPERATOR 29 <<# (dateset, date), OPERATOR 29 <<# (dateset, dateset), -- strictly after OPERATOR 30 #>> (dateset, date), OPERATOR 30 #>> (dateset, dateset), -- overlaps or after OPERATOR 31 #&> (dateset, date), OPERATOR 31 #&> (dateset, dateset), -- functions FUNCTION 1 datespan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tstzset_kdtree_ops FOR TYPE tstzset USING spgist AS -- overlaps OPERATOR 3 && (tstzset, tstzset), -- contains OPERATOR 7 @> (tstzset, timestamptz), OPERATOR 7 @> (tstzset, tstzset), -- contained by OPERATOR 8 <@ (tstzset, tstzset), -- equals OPERATOR 18 = (tstzset, tstzset), -- nearest approach distance OPERATOR 25 <-> (tstzset, timestamptz) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 <-> (tstzset, tstzset) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tstzset, timestamptz), OPERATOR 28 &<# (tstzset, tstzset), -- strictly before OPERATOR 29 <<# (tstzset, timestamptz), OPERATOR 29 <<# (tstzset, tstzset), -- strictly after OPERATOR 30 #>> (tstzset, timestamptz), OPERATOR 30 #>> (tstzset, tstzset), -- overlaps or after OPERATOR 31 #&> (tstzset, timestamptz), OPERATOR 31 #&> (tstzset, tstzset), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 set_spgist_compress(internal); /****************************************************************************** * GIN indexes ******************************************************************************/ CREATE FUNCTION set_gin_extract_value(integer, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_extract_query(integer, internal, int2, internal, internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_query' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_triconsistent(internal, int2, integer, int4, internal, internal, internal) RETURNS char AS 'MODULE_PATHNAME', 'Set_gin_triconsistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS intset_gin_ops DEFAULT FOR TYPE intset USING gin AS STORAGE integer, -- overlaps OPERATOR 10 && (intset, intset), -- contains value OPERATOR 20 @> (intset, integer), -- contains set OPERATOR 21 @> (intset, intset), -- contained OPERATOR 30 <@ (intset, intset), -- same OPERATOR 40 = (intset, intset), -- functions FUNCTION 2 set_gin_extract_value(integer, internal), FUNCTION 3 set_gin_extract_query(integer, internal, int2, internal, internal, internal, internal), FUNCTION 6 set_gin_triconsistent(internal, int2, integer, int4, internal, internal, internal); /******************************************************************************/ CREATE FUNCTION set_gin_extract_value(bigint, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_extract_query(bigint, internal, int2, internal, internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_query' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_triconsistent(internal, int2, bigint, int4, internal, internal, internal) RETURNS char AS 'MODULE_PATHNAME', 'Set_gin_triconsistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS bigintset_gin_ops DEFAULT FOR TYPE bigintset USING gin AS STORAGE bigint, -- overlaps OPERATOR 10 && (bigintset, bigintset), -- contains value OPERATOR 20 @> (bigintset, bigint), -- contains set OPERATOR 21 @> (bigintset, bigintset), -- contained OPERATOR 30 <@ (bigintset, bigintset), -- equal OPERATOR 40 = (bigintset, bigintset), -- functions FUNCTION 2 set_gin_extract_value(bigint, internal), FUNCTION 3 set_gin_extract_query(bigint, internal, int2, internal, internal, internal, internal), FUNCTION 6 set_gin_triconsistent(internal, int2, bigint, int4, internal, internal, internal); /******************************************************************************/ CREATE FUNCTION set_gin_extract_value(date, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_extract_query(date, internal, int2, internal, internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Set_gin_extract_query' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gin_triconsistent(internal, int2, date, int4, internal, internal, internal) RETURNS char AS 'MODULE_PATHNAME', 'Set_gin_triconsistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS dateset_gin_ops DEFAULT FOR TYPE dateset USING gin AS STORAGE date, -- overlaps OPERATOR 10 && (dateset, dateset), -- contains value OPERATOR 20 @> (dateset, date), -- contains set OPERATOR 21 @> (dateset, dateset), -- contained OPERATOR 30 <@ (dateset, dateset), -- same OPERATOR 40 = (dateset, dateset), -- functions FUNCTION 2 set_gin_extract_value(date, internal), FUNCTION 3 set_gin_extract_query(date, internal, int2, internal, internal, internal, internal), FUNCTION 6 set_gin_triconsistent(internal, int2, date, int4, internal, internal, internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * span_aggfuncs.sql * Aggregate functions for types whose bounding box is a span */ /*****************************************************************************/ -- span + span CREATE FUNCTION span_extent_transfn(intspan, intspan) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_combinefn(intspan, intspan) RETURNS intspan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(bigintspan, bigintspan) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_combinefn(bigintspan, bigintspan) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(floatspan, floatspan) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_combinefn(floatspan, floatspan) RETURNS floatspan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(datespan, datespan) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_combinefn(datespan, datespan) RETURNS datespan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(tstzspan, tstzspan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_combinefn(tstzspan, tstzspan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(intspan) ( SFUNC = span_extent_transfn, STYPE = intspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(bigintspan) ( SFUNC = span_extent_transfn, STYPE = bigintspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(floatspan) ( SFUNC = span_extent_transfn, STYPE = floatspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(datespan) ( SFUNC = span_extent_transfn, STYPE = datespan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(tstzspan) ( SFUNC = span_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /*****************************************************************************/ -- span + base CREATE FUNCTION span_extent_transfn(intspan, integer) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanbase_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(bigintspan, bigint) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanbase_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(floatspan, float) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanbase_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(datespan, date) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanbase_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION span_extent_transfn(tstzspan, timestamptz) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanbase_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(integer) ( SFUNC = span_extent_transfn, STYPE = intspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(bigint) ( SFUNC = span_extent_transfn, STYPE = bigintspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(float) ( SFUNC = span_extent_transfn, STYPE = floatspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(date) ( SFUNC = span_extent_transfn, STYPE = datespan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(timestamptz) ( SFUNC = span_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /*****************************************************************************/ -- span + <type> CREATE FUNCTION set_extent_transfn(intspan, intset) RETURNS intspan AS 'MODULE_PATHNAME', 'Set_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_extent_transfn(bigintspan, bigintset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Set_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_extent_transfn(floatspan, floatset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Set_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_extent_transfn(datespan, dateset) RETURNS datespan AS 'MODULE_PATHNAME', 'Set_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_extent_transfn(tstzspan, tstzset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Set_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(intset) ( SFUNC = set_extent_transfn, STYPE = intspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(bigintset) ( SFUNC = set_extent_transfn, STYPE = bigintspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(floatset) ( SFUNC = set_extent_transfn, STYPE = floatspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(dateset) ( SFUNC = set_extent_transfn, STYPE = datespan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(tstzset) ( SFUNC = set_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE FUNCTION spanset_extent_transfn(intspan, intspanset) RETURNS intspan AS 'MODULE_PATHNAME', 'Spanset_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_extent_transfn(bigintspan, bigintspanset) RETURNS bigintspan AS 'MODULE_PATHNAME', 'Spanset_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_extent_transfn(floatspan, floatspanset) RETURNS floatspan AS 'MODULE_PATHNAME', 'Spanset_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_extent_transfn(datespan, datespanset) RETURNS datespan AS 'MODULE_PATHNAME', 'Spanset_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_extent_transfn(tstzspan, tstzspanset) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Spanset_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(intspanset) ( SFUNC = spanset_extent_transfn, STYPE = intspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(bigintspanset) ( SFUNC = spanset_extent_transfn, STYPE = bigintspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(floatspanset) ( SFUNC = spanset_extent_transfn, STYPE = floatspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(datespanset) ( SFUNC = spanset_extent_transfn, STYPE = datespan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(tstzspanset) ( SFUNC = spanset_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = span_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /*****************************************************************************/ CREATE FUNCTION intspan_union_finalfn(internal) RETURNS intspanset AS 'MODULE_PATHNAME', 'Span_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION bigintspan_union_finalfn(internal) RETURNS bigintspanset AS 'MODULE_PATHNAME', 'Span_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION floatspan_union_finalfn(internal) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Span_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION datespan_union_finalfn(internal) RETURNS datespanset AS 'MODULE_PATHNAME', 'Span_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tstzspan_union_finalfn(internal) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Span_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE spanUnion(intspan) ( SFUNC = array_agg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = intspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(bigintspan) ( SFUNC = array_agg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = bigintspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(floatspan) ( SFUNC = array_agg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = floatspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(datespan) ( SFUNC = array_agg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = datespan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(tstzspan) ( SFUNC = array_agg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = tstzspan_union_finalfn, PARALLEL = safe ); /*****************************************************************************/ CREATE FUNCTION spanset_union_transfn(internal, intspanset) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_union_transfn(internal, bigintspanset) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_union_transfn(internal, floatspanset) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_union_transfn(internal, datespanset) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION spanset_union_transfn(internal, tstzspanset) RETURNS internal AS 'MODULE_PATHNAME', 'Spanset_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE spanUnion(intspanset) ( SFUNC = spanset_union_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = intspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(bigintspanset) ( SFUNC = spanset_union_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = bigintspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(floatspanset) ( SFUNC = spanset_union_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = floatspan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(datespanset) ( SFUNC = spanset_union_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = datespan_union_finalfn, PARALLEL = safe ); CREATE AGGREGATE spanUnion(tstzspanset) ( SFUNC = spanset_union_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 160000 COMBINEFUNC = array_agg_combine, SERIALFUNC = array_agg_serialize, DESERIALFUNC = array_agg_deserialize, -- endif POSTGRESQL_VERSION_NUMBER >= 160000 FINALFUNC = tstzspan_union_finalfn, PARALLEL = safe ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * geo_constructors.sql * SQL constructors for geometric types. */ CREATE FUNCTION point(float, float) RETURNS point AS 'MODULE_PATHNAME', 'point_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION line(float, float, float) RETURNS line AS 'MODULE_PATHNAME', 'line_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lseg(point, point) RETURNS lseg AS 'MODULE_PATHNAME', 'lseg_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION box(point, point) RETURNS box AS 'MODULE_PATHNAME', 'box_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION circle(point, float) RETURNS circle AS 'MODULE_PATHNAME', 'circle_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION path(point[]) RETURNS path AS 'MODULE_PATHNAME', 'path_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION polygon(point[]) RETURNS polygon AS 'MODULE_PATHNAME', 'poly_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tbox.sql * Functions for temporal bounding boxes. */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE TYPE tbox; CREATE FUNCTION tbox_in(cstring) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_out(tbox) RETURNS cstring AS 'MODULE_PATHNAME', 'Tbox_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_recv(internal) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_send(tbox) RETURNS bytea AS 'MODULE_PATHNAME', 'Tbox_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE tbox ( internallength = 56, input = tbox_in, output = tbox_out, receive = tbox_recv, send = tbox_send, storage = plain, alignment = double ); -- Input/output in WKB and HexWKB format CREATE FUNCTION tboxFromBinary(bytea) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tboxFromHexWKB(text) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tbox, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Tbox_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tbox, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Tbox_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tbox, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Tbox_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor functions ******************************************************************************/ CREATE FUNCTION tbox(integer, timestamptz) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_timestamptz_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(intspan, timestamptz) RETURNS tbox AS 'MODULE_PATHNAME', 'Numspan_timestamptz_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(float, timestamptz) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_timestamptz_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(floatspan, timestamptz) RETURNS tbox AS 'MODULE_PATHNAME', 'Numspan_timestamptz_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(integer, tstzspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_tstzspan_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(intspan, tstzspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Numspan_tstzspan_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(float, tstzspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_tstzspan_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(floatspan, tstzspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Numspan_tstzspan_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Conversion functions *****************************************************************************/ CREATE FUNCTION tbox(integer) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(float) RETURNS tbox AS 'MODULE_PATHNAME', 'Number_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(numeric) RETURNS tbox AS 'MODULE_PATHNAME', 'Numeric_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(timestamptz) RETURNS tbox AS 'MODULE_PATHNAME', 'Timestamptz_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(intset) RETURNS tbox AS 'MODULE_PATHNAME', 'Set_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(floatset) RETURNS tbox AS 'MODULE_PATHNAME', 'Set_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(tstzset) RETURNS tbox AS 'MODULE_PATHNAME', 'Set_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(intspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Span_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(floatspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Span_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(tstzspan) RETURNS tbox AS 'MODULE_PATHNAME', 'Span_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(intspanset) RETURNS tbox AS 'MODULE_PATHNAME', 'Spanset_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(floatspanset) RETURNS tbox AS 'MODULE_PATHNAME', 'Spanset_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(tstzspanset) RETURNS tbox AS 'MODULE_PATHNAME', 'Spanset_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (integer AS tbox) WITH FUNCTION tbox(integer); CREATE CAST (float AS tbox) WITH FUNCTION tbox(float); CREATE CAST (numeric AS tbox) WITH FUNCTION tbox(numeric); CREATE CAST (timestamptz AS tbox) WITH FUNCTION tbox(timestamptz); CREATE CAST (intset AS tbox) WITH FUNCTION tbox(intset); CREATE CAST (floatset AS tbox) WITH FUNCTION tbox(floatset); CREATE CAST (tstzset AS tbox) WITH FUNCTION tbox(tstzset); CREATE CAST (intspan AS tbox) WITH FUNCTION tbox(intspan); CREATE CAST (floatspan AS tbox) WITH FUNCTION tbox(floatspan); CREATE CAST (tstzspan AS tbox) WITH FUNCTION tbox(tstzspan); CREATE CAST (intspanset AS tbox) WITH FUNCTION tbox(intspanset); CREATE CAST (floatspanset AS tbox) WITH FUNCTION tbox(floatspanset); CREATE CAST (tstzspanset AS tbox) WITH FUNCTION tbox(tstzspanset); CREATE FUNCTION intspan(tbox) RETURNS intspan AS 'MODULE_PATHNAME', 'Tbox_to_intspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION floatspan(tbox) RETURNS floatspan AS 'MODULE_PATHNAME', 'Tbox_to_floatspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(tbox) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tbox_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tbox AS intspan) WITH FUNCTION intspan(tbox); CREATE CAST (tbox AS floatspan) WITH FUNCTION floatspan(tbox); CREATE CAST (tbox AS tstzspan) WITH FUNCTION timeSpan(tbox); /***************************************************************************** * Accessor functions *****************************************************************************/ CREATE FUNCTION hasX(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_hasx' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hasT(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_hast' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Xmin(tbox) RETURNS float AS 'MODULE_PATHNAME', 'Tbox_xmin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION XminInc(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_xmin_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Xmax(tbox) RETURNS float AS 'MODULE_PATHNAME', 'Tbox_xmax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION XmaxInc(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_xmax_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Tmin(tbox) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tbox_tmin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION TminInc(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_tmin_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Tmax(tbox) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tbox_tmax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION TmaxInc(tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_tmax_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shiftValue(tbox, integer) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftValue(tbox, float) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftTime(tbox, interval) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleValue(tbox, integer) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleValue(tbox, float) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tbox, interval) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleValue(tbox, integer, integer) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleValue(tbox, float, float) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tbox, interval, interval) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandValue(tbox, integer) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_expand_int' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandValue(tbox, float) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_expand_float' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandTime(tbox, interval) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_expand_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tbox, integer DEFAULT 0) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Selectivity functions *****************************************************************************/ CREATE FUNCTION tnumber_sel(internal, oid, internal, integer) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_sel' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION tnumber_joinsel(internal, oid, internal, smallint, internal) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_joinsel' LANGUAGE C IMMUTABLE STRICT; /***************************************************************************** * Topological operators *****************************************************************************/ CREATE FUNCTION tbox_contains(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_contained(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_overlaps(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_same(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_adjacent(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = tbox_contains, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = tbox_contained, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = tbox_overlaps, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = tbox_same, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = tbox_adjacent, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * Position operators *****************************************************************************/ CREATE FUNCTION tbox_left(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_overleft(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_right(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_overright(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_before(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_overbefore(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_after(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_overafter(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = tbox_left, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( PROCEDURE = tbox_overleft, LEFTARG = tbox, RIGHTARG = tbox, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tbox, RIGHTARG = tbox, PROCEDURE = tbox_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( PROCEDURE = tbox_overright, LEFTARG = tbox, RIGHTARG = tbox, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = tbox_before, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = tbox_overbefore, LEFTARG = tbox, RIGHTARG = tbox, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = tbox_after, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = tbox_overafter, LEFTARG = tbox, RIGHTARG = tbox, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * Set operators *****************************************************************************/ CREATE FUNCTION tbox_union(tbox, tbox) RETURNS tbox AS 'MODULE_PATHNAME', 'Union_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_intersection(tbox, tbox) RETURNS tbox AS 'MODULE_PATHNAME', 'Intersection_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = tbox_union, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = + ); CREATE OPERATOR * ( PROCEDURE = tbox_intersection, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = * ); /***************************************************************************** * Extent aggregation *****************************************************************************/ CREATE FUNCTION tbox_extent_transfn(tbox, tbox) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbox_extent_combinefn(tbox, tbox) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(tbox) ( SFUNC = tbox_extent_transfn, STYPE = tbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tbox_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /***************************************************************************** * Comparison *****************************************************************************/ CREATE FUNCTION tbox_eq(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_ne(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_lt(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_le(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_ge(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gt(tbox, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Tbox_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_cmp(tbox, tbox) RETURNS int4 AS 'MODULE_PATHNAME', 'Tbox_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = tbox, RIGHTARG = tbox, PROCEDURE = tbox_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tbox, RIGHTARG = tbox, PROCEDURE = tbox_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( PROCEDURE = tbox_lt, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = >, NEGATOR = >=, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR <= ( PROCEDURE = tbox_le, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = >=, NEGATOR = >, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR >= ( PROCEDURE = tbox_ge, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = <=, NEGATOR = <, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR > ( PROCEDURE = tbox_gt, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = <, NEGATOR = <=, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR CLASS tbox_btree_ops DEFAULT FOR TYPE tbox USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 tbox_cmp(tbox, tbox); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal.sql * Basic functions for generic temporal types. */ CREATE TYPE tbool; CREATE TYPE tint; CREATE TYPE tfloat; CREATE TYPE ttext; /***************************************************************************** * Utility functions *****************************************************************************/ CREATE FUNCTION mobilitydb_version() RETURNS text AS 'MODULE_PATHNAME', 'Mobilitydb_version' LANGUAGE C IMMUTABLE; CREATE FUNCTION mobilitydb_full_version() RETURNS text AS 'MODULE_PATHNAME', 'Mobilitydb_full_version' LANGUAGE C IMMUTABLE; /****************************************************************************** * Input/Output ******************************************************************************/ CREATE FUNCTION tbool_in(cstring, oid, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint_in(cstring, oid, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat_in(cstring, oid, integer) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_in(cstring, oid, integer) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(tbool) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(tint) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(tfloat) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(ttext) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_recv(internal, oid, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint_recv(internal, oid, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat_recv(internal, oid, integer) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_recv(internal, oid, integer) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tbool) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tint) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tfloat) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(ttext) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_typmod_in(cstring[]) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_typmod_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_typmod_out(integer) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_typmod_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_analyze(internal) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_analyze' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE tbool ( internallength = variable, input = tbool_in, output = temporal_out, send = temporal_send, receive = tbool_recv, typmod_in = temporal_typmod_in, typmod_out = temporal_typmod_out, storage = extended, alignment = double, analyze = temporal_analyze ); CREATE TYPE tint ( internallength = variable, input = tint_in, output = temporal_out, send = temporal_send, receive = tint_recv, typmod_in = temporal_typmod_in, typmod_out = temporal_typmod_out, storage = extended, alignment = double, analyze = temporal_analyze ); CREATE TYPE tfloat ( internallength = variable, input = tfloat_in, output = temporal_out, send = temporal_send, receive = tfloat_recv, typmod_in = temporal_typmod_in, typmod_out = temporal_typmod_out, storage = extended, alignment = double, analyze = temporal_analyze ); CREATE TYPE ttext ( internallength = variable, input = ttext_in, output = temporal_out, send = temporal_send, receive = ttext_recv, typmod_in = temporal_typmod_in, typmod_out = temporal_typmod_out, storage = extended, alignment = double, analyze = temporal_analyze ); -- Special cast for enforcing the typmod restrictions CREATE FUNCTION tbool(tbool, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat(tfloat, integer) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext(ttext, integer) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tbool AS tbool) WITH FUNCTION tbool(tbool, integer) AS IMPLICIT; CREATE CAST (tint AS tint) WITH FUNCTION tint(tint, integer) AS IMPLICIT; CREATE CAST (tfloat AS tfloat) WITH FUNCTION tfloat(tfloat, integer) AS IMPLICIT; CREATE CAST (ttext AS ttext) WITH FUNCTION ttext(ttext, integer) AS IMPLICIT; /****************************************************************************** * Constructor functions ******************************************************************************/ CREATE FUNCTION tbool(boolean, timestamptz) RETURNS tbool AS 'MODULE_PATHNAME', 'Tinstant_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(integer, timestamptz) RETURNS tint AS 'MODULE_PATHNAME', 'Tinstant_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat(float, timestamptz) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tinstant_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext(text, timestamptz) RETURNS ttext AS 'MODULE_PATHNAME', 'Tinstant_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool(boolean, tstzset) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(integer, tstzset) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat(float, tstzset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext(text, tstzset) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool(boolean, tstzspan) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(integer, tstzspan) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat(float, tstzspan, text DEFAULT 'linear') RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext(text, tstzspan) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool(boolean, tstzspanset) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(integer, tstzspanset) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat(float, tstzspanset, text DEFAULT 'linear') RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext(text, tstzspanset) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION tboolSeq(tbool[], text DEFAULT 'step', lowerInc boolean DEFAULT true, upperInc boolean DEFAULT true) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintSeq(tint[], text DEFAULT 'step', lowerInc boolean DEFAULT true, upperInc boolean DEFAULT true) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatSeq(tfloat[], text DEFAULT 'linear', lowerInc boolean DEFAULT true, upperInc boolean DEFAULT true) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextSeq(ttext[], text DEFAULT 'step', lowerInc boolean DEFAULT true, upperInc boolean DEFAULT true) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tboolSeqSet(tbool[]) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintSeqSet(tint[]) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatSeqSet(tfloat[]) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextSeqSet(ttext[]) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tboolSeqSetGaps(tbool[], maxt interval DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tintSeqSetGaps(tint[], maxt interval DEFAULT NULL, maxdist float DEFAULT NULL) RETURNS tint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloatSeqSetGaps(tfloat[], maxt interval DEFAULT NULL, maxdist float DEFAULT NULL, text DEFAULT 'linear') RETURNS tfloat AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttextSeqSetGaps(ttext[], maxt interval DEFAULT NULL) RETURNS ttext AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; /****************************************************************************** * Conversion functions ******************************************************************************/ CREATE FUNCTION timeSpan(tbool) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(tint) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(tfloat) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(ttext) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSpan(tint) RETURNS intspan AS 'MODULE_PATHNAME', 'Tnumber_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSpan(tfloat) RETURNS floatspan AS 'MODULE_PATHNAME', 'Tnumber_to_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- Casting CANNOT be implicit to avoid ambiguity CREATE CAST (tbool AS tstzspan) WITH FUNCTION timeSpan(tbool); CREATE CAST (tint AS tstzspan) WITH FUNCTION timeSpan(tint); CREATE CAST (tfloat AS tstzspan) WITH FUNCTION timeSpan(tfloat); CREATE CAST (ttext AS tstzspan) WITH FUNCTION timeSpan(ttext); CREATE CAST (tint AS intspan) WITH FUNCTION valueSpan(tint); CREATE CAST (tfloat AS floatspan) WITH FUNCTION valueSpan(tfloat); CREATE FUNCTION tfloat(tint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tint_to_tfloat' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint(tfloat) RETURNS tint AS 'MODULE_PATHNAME', 'Tfloat_to_tint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tint AS tfloat) WITH FUNCTION tfloat(tint); CREATE CAST (tfloat AS tint) WITH FUNCTION tint(tfloat); CREATE FUNCTION tbox(tint) RETURNS tbox AS 'MODULE_PATHNAME', 'Tnumber_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox(tfloat) RETURNS tbox AS 'MODULE_PATHNAME', 'Tnumber_to_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tint AS tbox) WITH FUNCTION tbox(tint); CREATE CAST (tfloat AS tbox) WITH FUNCTION tbox(tfloat); /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION tempSubtype(tbool) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tempSubtype(tint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tempSubtype(tfloat) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tempSubtype(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tbool) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tfloat) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- values is a reserved word in SQL CREATE FUNCTION getValue(tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValue(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValue(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValue(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- values is a reserved word in SQL CREATE FUNCTION getValues(tbool) RETURNS boolean[] AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(tint) RETURNS intspanset AS 'MODULE_PATHNAME', 'Tnumber_valuespans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(tfloat) RETURNS floatspanset AS 'MODULE_PATHNAME', 'Tnumber_valuespans' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(ttext) RETURNS textset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSet(tint) RETURNS intset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSet(tfloat) RETURNS floatset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minValue(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_min_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minValue(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_min_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minValue(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_min_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxValue(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_max_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxValue(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_max_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxValue(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_max_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minInstant(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_min_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minInstant(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_min_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minInstant(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_min_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxInstant(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_max_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxInstant(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_max_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxInstant(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_max_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- timestamp is a reserved word in SQL CREATE FUNCTION getTimestamp(tbool) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTimestamp(tint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTimestamp(tfloat) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTimestamp(ttext) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- time is a reserved word in SQL CREATE FUNCTION getTime(tbool) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTime(tint) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTime(tfloat) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTime(ttext) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tbool, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tint, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tfloat, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(ttext, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tbool, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tfloat, integer) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(ttext, integer) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tbool) RETURNS tbool[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tint) RETURNS tint[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tfloat) RETURNS tfloat[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(ttext) RETURNS ttext[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tbool) RETURNS tbool[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tint) RETURNS tint[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tfloat) RETURNS tfloat[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(ttext) RETURNS ttext[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tbool) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tfloat) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(ttext) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tbool) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tfloat) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(ttext) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tbool, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tfloat, integer) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(ttext, integer) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tbool) RETURNS tbool[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tint) RETURNS tint[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tfloat) RETURNS tfloat[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(ttext) RETURNS ttext[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tbool) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tfloat) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(ttext) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tbool) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tfloat) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(ttext) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tbool, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tint, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tfloat, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(ttext, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tbool) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tint) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tfloat) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(ttext) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transform a temporal value to a set of records *****************************************************************************/ CREATE TYPE int_tstzspanset AS ( value integer, time tstzspanset ); CREATE TYPE float_tstzspanset AS ( value float, time tstzspanset ); CREATE TYPE text_tstzspanset AS ( value text, time tstzspanset ); CREATE FUNCTION unnest(tint) RETURNS SETOF int_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(tfloat) RETURNS SETOF float_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(ttext) RETURNS SETOF text_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Transformation functions ******************************************************************************/ CREATE FUNCTION tboolInst(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintInst(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatInst(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextInst(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tboolSeq(tbool, text DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tintSeq(tint, text DEFAULT NULL) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloatSeq(tfloat, text DEFAULT NULL) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttextSeq(ttext, text DEFAULT NULL) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tboolSeqSet(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tintSeqSet(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloatSeqSet(tfloat, text DEFAULT NULL) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttextSeqSet(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION setInterp(tbool, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setInterp(tint, text) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setInterp(tfloat, text) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setInterp(ttext, text) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION shiftValue(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_shift_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftValue(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_shift_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleValue(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleValue(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleValue(tint, integer, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_shift_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleValue(tfloat, float, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_shift_scale_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION shiftTime(tbool, interval) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftTime(tint, interval) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftTime(tfloat, interval) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftTime(ttext, interval) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tbool, interval) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tint, interval) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tfloat, interval) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(ttext, interval) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tbool, interval, interval) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tint, interval, interval) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tfloat, interval, interval) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(ttext, interval, interval) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tprecision(tint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_tprecision' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tprecision(tfloat, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_tprecision' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tsample(tint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_tsample' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tsample(tfloat, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_tsample' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION appendInstant(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendInstant(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendInstant(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendInstant(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION merge(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(tbool[]) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(tint[]) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(tfloat[]) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(ttext[]) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Restriction functions *****************************************************************************/ CREATE FUNCTION atValues(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(ttext, text) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(ttext, text) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tint, intset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tfloat, floatset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(ttext, textset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tint, intset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tfloat, floatset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(ttext, textset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tint, intspan) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_at_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tfloat, floatspan) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_at_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tint, intspan) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_minus_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tfloat, floatspan) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_minus_span' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tint, intspanset) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_at_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tfloat, floatspanset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_at_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tint, intspanset) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_minus_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tfloat, floatspanset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_minus_spanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMin(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMin(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMin(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMin(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMin(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMin(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_min' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMax(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMax(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atMax(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMax(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMax(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusMax(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_max' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTbox(tint, tbox) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_at_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTbox(tfloat, tbox) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_at_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTbox(tint, tbox) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_minus_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTbox(tfloat, tbox) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_minus_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tbool, timestamptz) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tint, timestamptz) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tfloat, timestamptz) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(ttext, timestamptz) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tbool, timestamptz) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tint, timestamptz) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tfloat, timestamptz) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(ttext, timestamptz) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tbool, timestamptz) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tint, timestamptz) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tfloat, timestamptz) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(ttext, timestamptz) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tbool, tstzset) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tint, tstzset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tfloat, tstzset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(ttext, tstzset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tbool, tstzset) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tint, tstzset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tfloat, tstzset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(ttext, tstzset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tbool, tstzspan) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tint, tstzspan) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tfloat, tstzspan) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(ttext, tstzspan) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tbool, tstzspan) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tint, tstzspan) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tfloat, tstzspan) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(ttext, tstzspan) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tbool, tstzspanset) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tint, tstzspanset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tfloat, tstzspanset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(ttext, tstzspanset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tbool, tstzspanset) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tint, tstzspanset) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tfloat, tstzspanset) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(ttext, tstzspanset) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Modification Functions *****************************************************************************/ CREATE FUNCTION insert(tbool, tbool, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_insert' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION insert(tint, tint, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_insert' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION insert(tfloat, tfloat, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_insert' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION insert(ttext, ttext, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_insert' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tbool, tbool, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tint, tint, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tfloat, tfloat, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(ttext, ttext, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tbool, timestamptz, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tint, timestamptz, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tfloat, timestamptz, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(ttext, timestamptz, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tbool, tstzset, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tint, tstzset, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tfloat, tstzset, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(ttext, tstzset, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tbool, tstzspan, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tint, tstzspan, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tfloat, tstzspan, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(ttext, tstzspan, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tbool, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tint, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tfloat, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(ttext, tstzspanset, connect boolean DEFAULT TRUE) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Stop Function *****************************************************************************/ CREATE FUNCTION stops(tfloat, maxdist float DEFAULT 0.0, minduration interval DEFAULT '0 minutes') RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_stops' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Local Aggregate Functions *****************************************************************************/ CREATE FUNCTION integral(tint) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_integral' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION integral(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_integral' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION twAvg(tint) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_twavg' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION twAvg(tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Tnumber_twavg' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Selectivity functions for operators *****************************************************************************/ CREATE FUNCTION temporal_sel(internal, oid, internal, integer) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_sel' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION temporal_joinsel(internal, oid, internal, smallint, internal) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_joinsel' LANGUAGE C IMMUTABLE STRICT; /****************************************************************************** * Comparison functions and B-tree indexing ******************************************************************************/ CREATE FUNCTION temporal_lt(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tbool, tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = temporal_sel, JOIN = scalarltjoinsel ); CREATE OPERATOR <= ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = temporal_sel, JOIN = scalarltjoinsel ); CREATE OPERATOR = ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR >= ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = temporal_sel, JOIN = scalargtjoinsel ); CREATE OPERATOR > ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = temporal_sel, JOIN = scalargtjoinsel ); CREATE OPERATOR CLASS tbool_btree_ops DEFAULT FOR TYPE tbool USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tbool, tbool); /*****************************************************************************/ CREATE FUNCTION temporal_lt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tint, tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR = ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR >= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR > ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR CLASS tint_btree_ops DEFAULT FOR TYPE tint USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tint, tint); /*****************************************************************************/ CREATE FUNCTION temporal_lt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tfloat, tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR = ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR >= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR > ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR CLASS tfloat_btree_ops DEFAULT FOR TYPE tfloat USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tfloat, tfloat); /******************************************************************************/ CREATE FUNCTION temporal_lt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(ttext, ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = temporal_sel, JOIN = scalarltjoinsel ); CREATE OPERATOR <= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = temporal_sel, JOIN = scalarltjoinsel ); CREATE OPERATOR = ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR >= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = temporal_sel, JOIN = scalargtjoinsel ); CREATE OPERATOR > ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = temporal_sel, JOIN = scalargtjoinsel ); CREATE OPERATOR CLASS ttext_btree_ops DEFAULT FOR TYPE ttext USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(ttext, ttext); /******************************************************************************/ CREATE FUNCTION temporal_hash(tbool) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_hash(tint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_hash(tfloat) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_hash(ttext) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS tbool_hash_ops DEFAULT FOR TYPE tbool USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tbool); CREATE OPERATOR CLASS tint_hash_ops DEFAULT FOR TYPE tint USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tint); CREATE OPERATOR CLASS tfloat_hash_ops DEFAULT FOR TYPE tfloat USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tfloat); CREATE OPERATOR CLASS ttext_hash_ops DEFAULT FOR TYPE ttext USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(ttext); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_inout.sql * Input/output of temporal types in WKT, MF-JSON, and WKB format */ /***************************************************************************** * Input *****************************************************************************/ CREATE FUNCTION tboolFromMFJSON(text) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintFromMFJSON(text) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatFromMFJSON(text) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextFromMFJSON(text) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION tboolFromBinary(bytea) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintFromBinary(bytea) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatFromBinary(bytea) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextFromBinary(bytea) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tboolFromHexWKB(text) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tintFromHexWKB(text) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloatFromHexWKB(text) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttextFromHexWKB(text) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Output *****************************************************************************/ CREATE FUNCTION asText(tbool) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tbool[]) RETURNS text[] AS 'MODULE_PATHNAME', 'Temporalarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tint[]) RETURNS text[] AS 'MODULE_PATHNAME', 'Temporalarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tfloat, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tfloat[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Temporalarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(ttext) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(ttext[]) RETURNS text[] AS 'MODULE_PATHNAME', 'Temporalarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(temp tbool, options int4 DEFAULT 0, flags int4 DEFAULT 0) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(temp tint, options int4 DEFAULT 0, flags int4 DEFAULT 0) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(temp tfloat, options int4 DEFAULT 0, flags int4 DEFAULT 0, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(temp ttext, options int4 DEFAULT 0, flags int4 DEFAULT 0) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION asBinary(tbool, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tfloat, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(ttext, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tbool, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tint, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tfloat, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(ttext, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * Bucket and tile functions for temporal types. * The time bucket function are inspired from TimescaleDB. * https://docs.timescale.com/latest/api#time_bucket */ /***************************************************************************** * Bucket functions *****************************************************************************/ CREATE TYPE index_intspan AS ( index integer, span intspan ); CREATE TYPE index_floatspan AS ( index integer, span floatspan ); CREATE FUNCTION bucketList(bounds intspan, size integer, origin integer DEFAULT 0) RETURNS SETOF index_intspan AS 'MODULE_PATHNAME', 'Numberspan_bucket_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bucketList(bounds floatspan, size float, origin float DEFAULT 0.0) RETURNS SETOF index_floatspan AS 'MODULE_PATHNAME', 'Numberspan_bucket_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueBucket("value" integer, size integer, origin integer DEFAULT 0) RETURNS integer AS 'MODULE_PATHNAME', 'Number_bucket' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION valueBucket("value" float, size float, origin float DEFAULT '0.0') RETURNS float AS 'MODULE_PATHNAME', 'Number_bucket' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION spanBucket("value" integer, size integer, origin integer DEFAULT 0) RETURNS intspan AS 'MODULE_PATHNAME', 'Valuespan_bucket' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spanBucket("value" float, size float, origin float DEFAULT 0.0) RETURNS floatspan AS 'MODULE_PATHNAME', 'Valuespan_bucket' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE TYPE index_tstzspan AS ( index integer, span tstzspan ); CREATE FUNCTION bucketList(tstzspan, interval, timestamptz DEFAULT '2000-01-03') RETURNS SETOF index_tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_bucket_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- bucketing of timestamptz happens at UTC time CREATE FUNCTION timeBucket("time" timestamptz, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS timestamptz AS 'MODULE_PATHNAME', 'Timestamptz_bucket' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; -- If an interval is given as the third argument, the bucket alignment is offset by the interval. -- CREATE FUNCTION timeBucket(ts timestamptz, size interval, "offset" interval) -- RETURNS timestamptz -- LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT AS -- $BODY$ -- SELECT @extschema@.timeBucket(ts-"offset", size)+"offset"; -- $BODY$; CREATE FUNCTION periodBucket(timestamptz, interval, timestamptz DEFAULT '2000-01-03') RETURNS tstzspan AS 'MODULE_PATHNAME', 'Tstzspan_bucket' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Multidimensional tiling *****************************************************************************/ CREATE TYPE index_tbox AS ( index integer, tile tbox ); CREATE FUNCTION tileList(bounds tbox, size float, duration interval, vorigin float DEFAULT 0.0, torigin timestamptz DEFAULT '2000-01-03') RETURNS SETOF index_tbox AS 'MODULE_PATHNAME', 'Tbox_tile_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tile("value" float, "time" timestamptz, size float, duration interval, vorigin float DEFAULT 0.0, torigin timestamptz DEFAULT '2000-01-03') RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_tile' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Splitting *****************************************************************************/ CREATE TYPE number_tint AS ( number integer, tnumber tint ); CREATE TYPE number_tfloat AS ( number float, tnumber tfloat ); CREATE FUNCTION valueSplit(tint, size integer, origin integer DEFAULT 0) RETURNS SETOF number_tint AS 'MODULE_PATHNAME', 'Tnumber_value_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION valueSplit(tfloat, size float, origin float DEFAULT 0.0) RETURNS SETOF number_tfloat AS 'MODULE_PATHNAME', 'Tnumber_value_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /*****************************************************************************/ CREATE TYPE time_tbool AS ( time timestamptz, temp tbool ); CREATE TYPE time_tint AS ( time timestamptz, temp tint ); CREATE TYPE time_tfloat AS ( time timestamptz, temp tfloat ); CREATE TYPE time_ttext AS ( time timestamptz, temp ttext ); CREATE FUNCTION timeSplit(tbool, size interval, origin timestamptz DEFAULT '2000-01-03') RETURNS SETOF time_tbool AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION timeSplit(tint, size interval, origin timestamptz DEFAULT '2000-01-03') RETURNS SETOF time_tint AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION timeSplit(tfloat, size interval, origin timestamptz DEFAULT '2000-01-03') RETURNS SETOF time_tfloat AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION timeSplit(ttext, size interval, origin timestamptz DEFAULT '2000-01-03') RETURNS SETOF time_ttext AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /*****************************************************************************/ CREATE TYPE number_time_tint AS ( number integer, time timestamptz, tnumber tint ); CREATE TYPE number_time_tfloat AS ( number float, time timestamptz, tnumber tfloat ); CREATE FUNCTION valueTimeSplit(tint, size integer, duration interval, vorigin integer DEFAULT 0, torigin timestamptz DEFAULT '2000-01-03') RETURNS SETOF number_time_tint AS 'MODULE_PATHNAME', 'Tnumber_value_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION valueTimeSplit(tfloat, size float, duration interval, vorigin float DEFAULT 0.0, torigin timestamptz DEFAULT '2000-01-03') RETURNS SETOF number_time_tfloat AS 'MODULE_PATHNAME', 'Tnumber_value_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tnumber_mathfuncs.sql * Temporal mathematic functions and operators. */ /***************************************************************************** * Temporal addition *****************************************************************************/ /* integer + <TYPE> */ CREATE FUNCTION tnumber_add(integer, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Add_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = + ); /*****************************************************************************/ /* float + <TYPE> */ CREATE FUNCTION tnumber_add(float, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Add_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = + ); /*****************************************************************************/ /* tint + <TYPE> */ CREATE FUNCTION tnumber_add(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Add_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_add(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Add_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = + ); /*****************************************************************************/ /* tfloat + <TYPE> */ CREATE FUNCTION tnumber_add(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Add_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_add(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Add_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = tnumber_add, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = + ); /***************************************************************************** * Temporal subtraction *****************************************************************************/ /* integer - <TYPE> */ CREATE FUNCTION tnumber_sub(integer, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Sub_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = integer, RIGHTARG = tint ); /*****************************************************************************/ /* tint - <TYPE> */ CREATE FUNCTION tnumber_sub(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Sub_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_sub(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Sub_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = tint, RIGHTARG = integer ); CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = tint, RIGHTARG = tint ); /*****************************************************************************/ /* float - <TYPE> */ CREATE FUNCTION tnumber_sub(float, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Sub_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = float, RIGHTARG = tfloat ); /*****************************************************************************/ /* tfloat - <TYPE> */ CREATE FUNCTION tnumber_sub(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Sub_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_sub(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Sub_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = tfloat, RIGHTARG = float ); CREATE OPERATOR - ( PROCEDURE = tnumber_sub, LEFTARG = tfloat, RIGHTARG = tfloat ); /***************************************************************************** * Temporal multiplication *****************************************************************************/ /* integer * <TYPE> */ CREATE FUNCTION tnumber_mult(integer, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Mult_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = * ); /*****************************************************************************/ /* tint * <TYPE> */ CREATE FUNCTION tnumber_mult(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Mult_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_mult(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Mult_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = * ); /*****************************************************************************/ /* float * <TYPE> */ CREATE FUNCTION tnumber_mult(float, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Mult_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = + ); /*****************************************************************************/ /* tfloat * <TYPE> */ CREATE FUNCTION tnumber_mult(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Mult_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_mult(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Mult_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = tnumber_mult, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = * ); /***************************************************************************** * Temporal division *****************************************************************************/ /* integer / <TYPE> */ CREATE FUNCTION tnumber_div(integer, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Div_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = integer, RIGHTARG = tint ); /*****************************************************************************/ /* tint / <TYPE> */ CREATE FUNCTION tnumber_div(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Div_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_div(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Div_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = tint, RIGHTARG = integer ); CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = tint, RIGHTARG = tint ); /*****************************************************************************/ /* float / <TYPE> */ CREATE FUNCTION tnumber_div(float, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Div_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = float, RIGHTARG = tfloat ); /*****************************************************************************/ CREATE FUNCTION tnumber_div(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Div_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_div(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Div_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = tfloat, RIGHTARG = float ); CREATE OPERATOR / ( PROCEDURE = tnumber_div, LEFTARG = tfloat, RIGHTARG = tfloat ); /******************************************************************************/ CREATE FUNCTION abs(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_abs' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION abs(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_abs' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deltaValue(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Tnumber_delta_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deltaValue(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_delta_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tfloat, integer DEFAULT 0) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tfloat_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tfloat[], integer DEFAULT 0) RETURNS tfloat[] AS 'MODULE_PATHNAME', 'Tfloatarr_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION degrees(float, bool DEFAULT FALSE) RETURNS float AS 'MODULE_PATHNAME', 'Float_degrees' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION degrees(tfloat, bool DEFAULT FALSE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tfloat_degrees' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION radians(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tfloat_radians' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION derivative(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tfloat_derivative' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_boolops.sql * Temporal Boolean function and operators. */ /***************************************************************************** * Temporal and *****************************************************************************/ CREATE FUNCTION tbool_and(boolean, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tand_bool_tbool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_and(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Tand_tbool_bool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_and(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tand_tbool_tbool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR & ( PROCEDURE = tbool_and, LEFTARG = boolean, RIGHTARG = tbool, COMMUTATOR = & ); CREATE OPERATOR & ( PROCEDURE = tbool_and, LEFTARG = tbool, RIGHTARG = boolean, COMMUTATOR = & ); CREATE OPERATOR & ( PROCEDURE = tbool_and, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = & ); /***************************************************************************** * Temporal or *****************************************************************************/ CREATE FUNCTION tbool_or(boolean, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tor_bool_tbool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_or(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Tor_tbool_bool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_or(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tor_tbool_tbool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR | ( PROCEDURE = tbool_or, LEFTARG = boolean, RIGHTARG = tbool, COMMUTATOR = | ); CREATE OPERATOR | ( PROCEDURE = tbool_or, LEFTARG = tbool, RIGHTARG = boolean, COMMUTATOR = | ); CREATE OPERATOR | ( PROCEDURE = tbool_or, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = | ); /***************************************************************************** * Temporal not *****************************************************************************/ CREATE FUNCTION tbool_not(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tnot_tbool' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~ ( PROCEDURE = tbool_not, RIGHTARG = tbool ); /***************************************************************************** * Temporal when *****************************************************************************/ -- when is a reserved word in SQL CREATE FUNCTION whenTrue(tbool) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Tbool_when_true' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * ttext_textfuncs.sql * Temporal text functions. */ /***************************************************************************** * Temporal text concatenation *****************************************************************************/ CREATE FUNCTION ttext_cat(text, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Textcat_text_ttext' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_cat(ttext, text) RETURNS ttext AS 'MODULE_PATHNAME', 'Textcat_ttext_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_cat(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Textcat_ttext_ttext' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR || ( PROCEDURE = ttext_cat, LEFTARG = text, RIGHTARG = ttext ); CREATE OPERATOR || ( PROCEDURE = ttext_cat, LEFTARG = ttext, RIGHTARG = text ); CREATE OPERATOR || ( PROCEDURE = ttext_cat, LEFTARG = ttext, RIGHTARG = ttext ); /****************************************************************************** * Temporal upper/lower case *****************************************************************************/ CREATE FUNCTION upper(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Ttext_upper' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lower(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Ttext_lower' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION initcap(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Ttext_initcap' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * @file * @brief Comparison functions and operators for temporal types. * @note In this file we need both definitions of the functions with 2 and 3 * parameters to be able to define the operators. This is not the case for * the temporal relationships while a single definition of the functions with * 3 parameters is enough */ /***************************************************************************** * Index Support Functions *****************************************************************************/ CREATE FUNCTION tnumber_supportfn(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_supportfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Ever/Always Comparison Functions *****************************************************************************/ CREATE FUNCTION ever_eq(boolean, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_base_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_base_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = boolean, RIGHTARG = tbool, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_eq(tbool, boolean) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_base' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_base' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = tbool, RIGHTARG = boolean, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ne(boolean, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = boolean, RIGHTARG = tbool, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?<> ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ne(tbool, boolean) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = tbool, RIGHTARG = boolean, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?<> ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /*****************************************************************************/ CREATE FUNCTION always_eq(boolean, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_base_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_base_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = boolean, RIGHTARG = tbool, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_eq(tbool, boolean) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_base' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_base' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = tbool, RIGHTARG = boolean, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ne(boolean, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = boolean, RIGHTARG = tbool, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %<> ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ne(tbool, boolean) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = tbool, RIGHTARG = boolean, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %<> ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /*****************************************************************************/ CREATE FUNCTION ever_lt(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?< ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_lt(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?< ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_le(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_le(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_gt(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?> ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_gt(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?> ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ge(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?>= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ge(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?>= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /*****************************************************************************/ CREATE FUNCTION always_lt(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %< ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_lt(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %< ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_le(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_le(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_gt(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %> ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_gt(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %> ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ge(integer, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(float, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(text, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %>= ( LEFTARG = integer, RIGHTARG = tint, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = float, RIGHTARG = tfloat, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = text, RIGHTARG = ttext, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ge(tint, integer) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(tfloat, float) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(ttext, text) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %>= ( LEFTARG = tint, RIGHTARG = integer, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = tfloat, RIGHTARG = float, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = ttext, RIGHTARG = text, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /*****************************************************************************/ CREATE FUNCTION ever_eq(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_eq(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_temporal' SUPPORT tnumber_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ne(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR ?<> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ne(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR %<> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /*****************************************************************************/ CREATE FUNCTION ever_lt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_lt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?< ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?< ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_lt, NEGATOR = %>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_le(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_le(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?<= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_le, NEGATOR = %>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_lt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_lt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_lt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %< ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %< ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_lt, NEGATOR = ?>=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_le(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_le(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_le_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %<= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_le, NEGATOR = ?>, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_gt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_gt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_gt, NEGATOR = %<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION ever_ge(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ge(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?>= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ?>= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = ever_ge, NEGATOR = %<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_gt(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_gt(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_gt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_gt, NEGATOR = ?<=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE FUNCTION always_ge(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ge(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %>= ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR %>= ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = always_ge, NEGATOR = ?<, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); /***************************************************************************** * Temporal eq *****************************************************************************/ -- Temporal boolean CREATE FUNCTION temporal_teq(boolean, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = boolean, RIGHTARG = tbool, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tbool, RIGHTARG = boolean, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = #= ); /*****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_teq(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #= ); /*****************************************************************************/ -- float #= <Type> CREATE FUNCTION temporal_teq(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #= ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_teq(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #= ); /***************************************************************************** * Temporal ne *****************************************************************************/ -- Temporal boolean CREATE FUNCTION temporal_tne(boolean, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tbool, boolean) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = boolean, RIGHTARG = tbool, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tbool, RIGHTARG = boolean, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = #<> ); /*****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_tne(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #<> ); /*****************************************************************************/ -- Temporal float CREATE FUNCTION temporal_tne(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #<> ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_tne(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #<> ); /***************************************************************************** * Temporal lt *****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_tlt(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #> ); /*****************************************************************************/ -- Temporal float CREATE FUNCTION temporal_tlt(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #> ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_tlt(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tlt(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tlt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #> ); CREATE OPERATOR #< ( PROCEDURE = temporal_tlt, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #> ); /***************************************************************************** * Temporal gt *****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_tgt(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #< ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #< ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #< ); /*****************************************************************************/ -- Temporal float CREATE FUNCTION temporal_tgt(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(tfloat, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #< ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #< ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #< ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_tgt(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tgt(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tgt_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #<= ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #<= ); CREATE OPERATOR #> ( PROCEDURE = temporal_tgt, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #<= ); /***************************************************************************** * Temporal le *****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_tle(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #>= ); /*****************************************************************************/ -- Temporal float CREATE FUNCTION temporal_tle(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #>= ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_tle(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tle(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tle_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #>= ); CREATE OPERATOR #<= ( PROCEDURE = temporal_tle, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #>= ); /***************************************************************************** * Temporal ge *****************************************************************************/ -- Temporal integer CREATE FUNCTION temporal_tge(integer, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(tint, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(tint, tint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = #<= ); /*****************************************************************************/ -- Temporal float CREATE FUNCTION temporal_tge(float, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(tfloat, integer) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(tfloat, float) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(tfloat, tfloat) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = #<= ); /*****************************************************************************/ -- Temporal text CREATE FUNCTION temporal_tge(text, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(ttext, text) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tge(ttext, ttext) RETURNS tbool AS 'MODULE_PATHNAME', 'Tge_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = text, RIGHTARG = ttext, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = ttext, RIGHTARG = text, COMMUTATOR = #<= ); CREATE OPERATOR #>= ( PROCEDURE = temporal_tge, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = #<= ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_boxops.sql * Bounding tbox operators for temporal types. */ /***************************************************************************** * Temporal boolean *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tbool, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tbool, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tbool, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tbool, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tbool, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tbool, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tbool, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tbool, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tbool, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tbool, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tbool, RIGHTARG = tbool, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /***************************************************************************** * Temporal integer *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tint, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tint, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = intspan, RIGHTARG = tint, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tint, RIGHTARG = intspan, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tint, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tint, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = intspan, RIGHTARG = tint, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tint, RIGHTARG = intspan, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tint, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tint, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = intspan, RIGHTARG = tint, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tint, RIGHTARG = intspan, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tint, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tint, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = intspan, RIGHTARG = tint, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tint, RIGHTARG = intspan, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tint, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tint, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = intspan, RIGHTARG = tint, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tint, RIGHTARG = intspan, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * Temporal float *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tfloat, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tfloat, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = floatspan, RIGHTARG = tfloat, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tfloat, RIGHTARG = floatspan, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = &&, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tfloat, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tfloat, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = floatspan, RIGHTARG = tfloat, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tfloat, RIGHTARG = floatspan, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = <@, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tfloat, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tfloat, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = floatspan, RIGHTARG = tfloat, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tfloat, RIGHTARG = floatspan, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = @>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tfloat, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tfloat, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = floatspan, RIGHTARG = tfloat, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tfloat, RIGHTARG = floatspan, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = ~=, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tfloat, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tfloat, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = floatspan, RIGHTARG = tfloat, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tfloat, RIGHTARG = floatspan, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = -|-, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * Temporal text *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = ttext, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = ttext, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = ttext, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = ttext, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = ttext, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = ttext, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = ttext, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = ttext, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = ttext, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = ttext, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = ttext, RIGHTARG = ttext, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_posops.sql * Relative position operators for 1D (time) and 2D (1D value + 1D time) * temporal types. */ /***************************************************************************** * tstzspan *****************************************************************************/ /* tstzspan op tbool */ CREATE FUNCTION temporal_before(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tbool, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tbool, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tbool, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tbool, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ /* tstzspan op tint */ CREATE FUNCTION temporal_before(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tint, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tint, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tstzspan op tfloat */ CREATE FUNCTION temporal_before(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tfloat, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tfloat, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tfloat, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tfloat, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tstzspan op ttext */ CREATE FUNCTION temporal_before(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = ttext, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = ttext, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = ttext, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = ttext, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /***************************************************************************** * intspan *****************************************************************************/ /* intspan op tint */ CREATE FUNCTION temporal_left(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(intspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = intspan, RIGHTARG = tint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = intspan, RIGHTARG = tint, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = intspan, RIGHTARG = tint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = intspan, RIGHTARG = tint, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* intspan op tfloat */ CREATE FUNCTION temporal_left(intspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(intspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(intspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(intspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = intspan, RIGHTARG = tfloat, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = intspan, RIGHTARG = tfloat, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = intspan, RIGHTARG = tfloat, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = intspan, RIGHTARG = tfloat, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * floatspan *****************************************************************************/ /* floatspan op tint */ CREATE FUNCTION temporal_left(floatspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(floatspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(floatspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(floatspan, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = floatspan, RIGHTARG = tint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = floatspan, RIGHTARG = tint, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = floatspan, RIGHTARG = tint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = floatspan, RIGHTARG = tint, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* floatspan op tfloat */ CREATE FUNCTION temporal_left(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(floatspan, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_numspan_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = floatspan, RIGHTARG = tfloat, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = floatspan, RIGHTARG = tfloat, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = floatspan, RIGHTARG = tfloat, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = floatspan, RIGHTARG = tfloat, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * tbox *****************************************************************************/ /* tbox op tint */ CREATE FUNCTION temporal_left(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tbox, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tbox, RIGHTARG = tint, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tbox op tfloat */ CREATE FUNCTION temporal_left(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tbox, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tbox, RIGHTARG = tfloat, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * tbool *****************************************************************************/ /* tbool op tstzspan */ CREATE FUNCTION temporal_before(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tbool, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tbool, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tbool, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tbool, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tbool, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ /* tbool op tbool */ CREATE FUNCTION temporal_before(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tbool, tbool) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tbool, RIGHTARG = tbool, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /***************************************************************************** * tint *****************************************************************************/ /* tint op tstzspan */ CREATE FUNCTION temporal_before(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tint, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tint, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tint, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tint, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tint op intspan */ CREATE FUNCTION temporal_left(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tint, intspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tint, RIGHTARG = intspan, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tint, RIGHTARG = intspan, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tint, RIGHTARG = intspan, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tint, RIGHTARG = intspan, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tint op tbox */ CREATE FUNCTION temporal_left(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tint, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tint, RIGHTARG = tbox, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tint op tint */ CREATE FUNCTION temporal_left(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tint, tint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tint, RIGHTARG = tint, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * tfloat *****************************************************************************/ /* tfloat op tstzspan */ CREATE FUNCTION temporal_before(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tfloat, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tfloat, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tfloat, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tfloat, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tfloat, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tfloat op floatspan */ CREATE FUNCTION temporal_left(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tfloat, floatspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_numspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tfloat, RIGHTARG = floatspan, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tfloat, RIGHTARG = floatspan, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tfloat, RIGHTARG = floatspan, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tfloat, RIGHTARG = floatspan, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tfloat op tbox */ CREATE FUNCTION temporal_left(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tfloat, tbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tfloat, RIGHTARG = tbox, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /* tfloat op tfloat */ CREATE FUNCTION temporal_left(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tfloat, tfloat) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &< ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_overleft, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR >> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_overright, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_overbefore, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tfloat, RIGHTARG = tfloat, PROCEDURE = temporal_overafter, RESTRICT = tnumber_sel, JOIN = tnumber_joinsel ); /***************************************************************************** * ttext *****************************************************************************/ /* ttext op tstzspan */ CREATE FUNCTION temporal_before(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(ttext, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = ttext, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = ttext, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = ttext, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = ttext, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ /* ttext op ttext */ CREATE FUNCTION temporal_before(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(ttext, ttext) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR &<# ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #>> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = tnumber_joinsel ); CREATE OPERATOR #&> ( LEFTARG = ttext, RIGHTARG = ttext, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = tnumber_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tnumber_distance.sql * Distance functions for temporal numbers. */ /***************************************************************************** * Temporal distance *****************************************************************************/ /* integer <-> <TYPE> */ CREATE FUNCTION tDistance(integer, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Distance_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = <-> ); /*****************************************************************************/ /* float <-> <TYPE> */ CREATE FUNCTION tDistance(float, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = <-> ); /*****************************************************************************/ /* tint <-> <TYPE> */ CREATE FUNCTION tDistance(tint, integer) RETURNS tint AS 'MODULE_PATHNAME', 'Distance_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Distance_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = <-> ); /*****************************************************************************/ /* tfloat <-> <TYPE> */ CREATE FUNCTION tDistance(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = <-> ); /***************************************************************************** * Nearest approach distance *****************************************************************************/ /* integer |=| <TYPE> */ CREATE FUNCTION nearestApproachDistance(integer, tint) RETURNS integer AS 'MODULE_PATHNAME', 'NAD_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = integer, RIGHTARG = tint, COMMUTATOR = |=| ); /*****************************************************************************/ /* float |=| <TYPE> */ CREATE FUNCTION nearestApproachDistance(float, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'NAD_number_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = float, RIGHTARG = tfloat, COMMUTATOR = |=| ); /*****************************************************************************/ /* tbox |=| <TYPE> */ CREATE FUNCTION nearestApproachDistance(tbox, tbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tbox_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tbox, tint) RETURNS integer AS 'MODULE_PATHNAME', 'NAD_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tbox, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tbox_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tbox, RIGHTARG = tbox, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tbox, RIGHTARG = tint, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tbox, RIGHTARG = tfloat, COMMUTATOR = |=| ); /*****************************************************************************/ /* tint |=| <TYPE> */ CREATE FUNCTION nearestApproachDistance(tint, integer) RETURNS integer AS 'MODULE_PATHNAME', 'NAD_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tint, tbox) RETURNS integer AS 'MODULE_PATHNAME', 'NAD_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tint, tint) RETURNS integer AS 'MODULE_PATHNAME', 'NAD_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tint, RIGHTARG = integer, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tint, RIGHTARG = tbox, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tint, RIGHTARG = tint, COMMUTATOR = |=| ); /*****************************************************************************/ /* tfloat |=| <TYPE> */ CREATE FUNCTION nearestApproachDistance(tfloat, float) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnumber_number' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tfloat, tbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnumber_tbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tfloat, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnumber_tnumber' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tfloat, RIGHTARG = float, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tfloat, RIGHTARG = tbox, COMMUTATOR = |=| ); CREATE OPERATOR |=| ( PROCEDURE = nearestApproachDistance, LEFTARG = tfloat, RIGHTARG = tfloat, COMMUTATOR = |=| ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_similarity.sql * Similarity distance for temporal values. Currently, the discrete Frechet * distance and the Dynamic Time Warping (DTW) distance are implemented. */ CREATE FUNCTION frechetDistance(tint, tint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_frechet_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION frechetDistance(tfloat, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_frechet_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpDistance(tint, tint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpDistance(tfloat, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hausdorffDistance(tint, tint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_hausdorff_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hausdorffDistance(tfloat, tfloat) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_hausdorff_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE TYPE warp AS ( i integer, j integer ); CREATE FUNCTION frechetDistancePath(tint, tint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_frechet_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION frechetDistancePath(tfloat, tfloat) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_frechet_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpPath(tint, tint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpPath(tfloat, tfloat) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * @brief Temporal aggregate functions */ CREATE FUNCTION temporal_extent_transfn(tstzspan, tbool) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_extent_transfn(tstzspan, ttext) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_extent_combinefn(tstzspan, tstzspan) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Span_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(tbool) ( SFUNC = temporal_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(ttext) ( SFUNC = temporal_extent_transfn, STYPE = tstzspan, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE FUNCTION tnumber_extent_transfn(tbox, tint) RETURNS tbox AS 'MODULE_PATHNAME', 'Tnumber_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tnumber_extent_transfn(tbox, tfloat) RETURNS tbox AS 'MODULE_PATHNAME', 'Tnumber_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tnumber_extent_combinefn(tbox, tbox) RETURNS tbox AS 'MODULE_PATHNAME', 'Tbox_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(tint) ( SFUNC = tnumber_extent_transfn, STYPE = tbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tnumber_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(tfloat) ( SFUNC = tnumber_extent_transfn, STYPE = tbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tnumber_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /*****************************************************************************/ CREATE FUNCTION taggstate_serialize(internal) RETURNS bytea AS 'MODULE_PATHNAME', 'Taggstate_serialize' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION taggstate_deserialize(bytea, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Taggstate_deserialize' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION tcount_transfn(internal, timestamptz) RETURNS internal AS 'MODULE_PATHNAME', 'Timestamptz_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcount_transfn(internal, tstzset) RETURNS internal AS 'MODULE_PATHNAME', 'Tstzset_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcount_transfn(internal, tstzspan) RETURNS internal AS 'MODULE_PATHNAME', 'Tstzspan_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcount_transfn(internal, tstzspanset) RETURNS internal AS 'MODULE_PATHNAME', 'Tstzspanset_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcount_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tagg_finalfn(internal) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE tcount(timestamptz) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tcount(tstzset) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tcount(tstzspan) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tcount(tstzspanset) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION tcount_transfn(internal, tbool) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbool_tand_transfn(internal, tbool) RETURNS internal AS 'MODULE_PATHNAME', 'Tbool_tand_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbool_tand_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbool_tand_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbool_tor_transfn(internal, tbool) RETURNS internal AS 'MODULE_PATHNAME', 'Tbool_tor_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbool_tor_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbool_tor_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tbool_tagg_finalfn(internal) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE tcount(tbool) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tand(tbool) ( SFUNC = tbool_tand_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tbool_tand_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tbool_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tor(tbool) ( SFUNC = tbool_tor_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tbool_tor_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tbool_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION tcount_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tmin_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tmin_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tmin_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tmin_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tmax_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tmax_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tmax_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tmax_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tsum_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tsum_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_tsum_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_tsum_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tavg_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_tavg_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tavg_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_tavg_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tavg_finalfn(internal) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnumber_tavg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE tcount(tint) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmin(tint) ( SFUNC = tint_tmin_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tmin_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmax(tint) ( SFUNC = tint_tmax_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tmax_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tsum(tint) ( SFUNC = tint_tsum_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tavg(tint) ( SFUNC = tavg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tavg_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tavg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE FUNCTION tcount_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tmin_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tmin_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tmin_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tmin_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tmax_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tmax_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tmax_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tmax_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tsum_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tsum_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tsum_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_tsum_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_tagg_finalfn(internal) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tavg_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_tavg_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE tcount(tfloat) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmin(tfloat) ( SFUNC = tfloat_tmin_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tmin_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmax(tfloat) ( SFUNC = tfloat_tmax_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tmax_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tsum(tfloat) ( SFUNC = tfloat_tsum_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tavg(tfloat) ( SFUNC = tavg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tavg_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tavg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION tcount_transfn(internal, ttext) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttext_tmin_transfn(internal, ttext) RETURNS internal AS 'MODULE_PATHNAME', 'Ttext_tmin_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttext_tmin_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Ttext_tmin_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttext_tmax_transfn(internal, ttext) RETURNS internal AS 'MODULE_PATHNAME', 'Ttext_tmax_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttext_tmax_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Ttext_tmax_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION ttext_tagg_finalfn(internal) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE tcount(ttext) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmin(ttext) ( SFUNC = ttext_tmin_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = ttext_tmin_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = ttext_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tmax(ttext) ( SFUNC = ttext_tmax_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = ttext_tmax_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = ttext_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION temporal_merge_transfn(internal, tbool) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_merge_transfn(internal, tint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_merge_transfn(internal, tfloat) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_merge_transfn(internal, ttext) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_merge_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE merge(tbool) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tbool_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); CREATE AGGREGATE merge(tint) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); CREATE AGGREGATE merge(tfloat) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); CREATE AGGREGATE merge(ttext) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = ttext_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); /***************************************************************************** * Append aggregate functions *****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tbool, tbool, maxt interval DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tint, tint, maxdist float DEFAULT NULL, maxt interval DEFAULT NULL) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tfloat, tfloat, maxdist float DEFAULT NULL, maxt interval DEFAULT NULL) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(ttext, ttext, maxt interval DEFAULT NULL) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendInstant(tbool) ( SFUNC = temporal_app_tinst_transfn, STYPE = tbool, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tint) ( SFUNC = temporal_app_tinst_transfn, STYPE = tint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tfloat) ( SFUNC = temporal_app_tinst_transfn, STYPE = tfloat, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(ttext) ( SFUNC = temporal_app_tinst_transfn, STYPE = ttext, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tbool, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tbool, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tint, float, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tfloat, float, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tfloat, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(ttext, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = ttext, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tseq_transfn(tbool, tbool) RETURNS tbool AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tseq_transfn(tint, tint) RETURNS tint AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tseq_transfn(tfloat, tfloat) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tseq_transfn(ttext, ttext) RETURNS ttext AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendSequence(tbool) ( SFUNC = temporal_app_tseq_transfn, STYPE = tbool, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendSequence(tint) ( SFUNC = temporal_app_tseq_transfn, STYPE = tint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendSequence(tfloat) ( SFUNC = temporal_app_tseq_transfn, STYPE = tfloat, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendSequence(ttext) ( SFUNC = temporal_app_tseq_transfn, STYPE = ttext, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_waggfuncs.sql * Moving window temporal aggregate functions */ CREATE FUNCTION tint_wmin_transfn(internal, tint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_wmin_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_wmax_transfn(internal, tint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_wmax_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tint_wsum_transfn(internal, tint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tint_wsum_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION wcount_transfn(internal, tint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_wcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION wavg_transfn(internal, tint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_wavg_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE wmin(tint, interval) ( SFUNC = tint_wmin_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tmin_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wmax(tint, interval) ( SFUNC = tint_wmax_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tmax_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wsum(tint, interval) ( SFUNC = tint_wsum_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wcount(tint, interval) ( SFUNC = wcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wavg(tint, interval) ( SFUNC = wavg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tavg_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tavg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION tfloat_wmin_transfn(internal, tfloat, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_wmin_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_wmax_transfn(internal, tfloat, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_wmax_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tfloat_wsum_transfn(internal, tfloat, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tfloat_wsum_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION wcount_transfn(internal, tfloat, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_wcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION wavg_transfn(internal, tfloat, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_wavg_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE wmin(tfloat, interval) ( SFUNC = tfloat_wmin_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tmin_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wmax(tfloat, interval) ( SFUNC = tfloat_wmax_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tmax_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wsum(tfloat, interval) ( SFUNC = tfloat_wsum_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tfloat_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tfloat_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wcount(tfloat, interval) ( SFUNC = wcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wavg(tfloat, interval) ( SFUNC = wavg_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tavg_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tavg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_gist.sql * R-tree GiST index for temporal types */ /******************************************************************************/ CREATE FUNCTION tbox_gist_consistent(internal, tbox, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Tnumber_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gist_union(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbox_gist_union' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gist_penalty(internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbox_gist_penalty' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gist_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbox_gist_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gist_same(tbox, tbox, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbox_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_gist_distance(internal, tbox, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tbox_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION tbool_gist_consistent(internal, tbool, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbool_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint_gist_consistent(internal, tint, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Tnumber_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tint_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat_gist_consistent(internal, tfloat, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Tnumber_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tfloat_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_gist_consistent(internal, ttext, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Span_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ttext_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tbox_rtree_ops DEFAULT FOR TYPE tbox USING gist AS -- strictly left OPERATOR 1 << (tbox, tbox), OPERATOR 1 << (tbox, tint), OPERATOR 1 << (tbox, tfloat), -- overlaps or left OPERATOR 2 &< (tbox, tbox), OPERATOR 2 &< (tbox, tint), OPERATOR 2 &< (tbox, tfloat), -- overlaps OPERATOR 3 && (tbox, tbox), OPERATOR 3 && (tbox, tint), OPERATOR 3 && (tbox, tfloat), -- overlaps or right OPERATOR 4 &> (tbox, tbox), OPERATOR 4 &> (tbox, tint), OPERATOR 4 &> (tbox, tfloat), -- strictly right OPERATOR 5 >> (tbox, tbox), OPERATOR 5 >> (tbox, tint), OPERATOR 5 >> (tbox, tfloat), -- same OPERATOR 6 ~= (tbox, tbox), OPERATOR 6 ~= (tbox, tint), OPERATOR 6 ~= (tbox, tfloat), -- contains OPERATOR 7 @> (tbox, tbox), OPERATOR 7 @> (tbox, tint), OPERATOR 7 @> (tbox, tfloat), -- contained by OPERATOR 8 <@ (tbox, tbox), OPERATOR 8 <@ (tbox, tint), OPERATOR 8 <@ (tbox, tfloat), -- adjacent OPERATOR 17 -|- (tbox, tbox), OPERATOR 17 -|- (tbox, tint), OPERATOR 17 -|- (tbox, tfloat), -- overlaps or before OPERATOR 28 &<# (tbox, tbox), OPERATOR 28 &<# (tbox, tint), OPERATOR 28 &<# (tbox, tfloat), -- strictly before OPERATOR 29 <<# (tbox, tbox), OPERATOR 29 <<# (tbox, tint), OPERATOR 29 <<# (tbox, tfloat), -- strictly after OPERATOR 30 #>> (tbox, tbox), OPERATOR 30 #>> (tbox, tint), OPERATOR 30 #>> (tbox, tfloat), -- overlaps or after OPERATOR 31 #&> (tbox, tbox), OPERATOR 31 #&> (tbox, tint), OPERATOR 31 #&> (tbox, tfloat), -- functions FUNCTION 1 tbox_gist_consistent(internal, tbox, smallint, oid, internal), FUNCTION 2 tbox_gist_union(internal, internal), FUNCTION 5 tbox_gist_penalty(internal, internal, internal), FUNCTION 6 tbox_gist_picksplit(internal, internal), FUNCTION 7 tbox_gist_same(tbox, tbox, internal), FUNCTION 8 tbox_gist_distance(internal, tbox, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS tbool_rtree_ops DEFAULT FOR TYPE tbool USING gist AS STORAGE tstzspan, -- overlaps OPERATOR 3 && (tbool, tstzspan), OPERATOR 3 && (tbool, tbool), -- same OPERATOR 6 ~= (tbool, tstzspan), OPERATOR 6 ~= (tbool, tbool), -- contains OPERATOR 7 @> (tbool, tstzspan), OPERATOR 7 @> (tbool, tbool), -- contained by OPERATOR 8 <@ (tbool, tstzspan), OPERATOR 8 <@ (tbool, tbool), -- adjacent OPERATOR 17 -|- (tbool, tstzspan), OPERATOR 17 -|- (tbool, tbool), -- overlaps or before OPERATOR 28 &<# (tbool, tstzspan), OPERATOR 28 &<# (tbool, tbool), -- strictly before OPERATOR 29 <<# (tbool, tstzspan), OPERATOR 29 <<# (tbool, tbool), -- strictly after OPERATOR 30 #>> (tbool, tstzspan), OPERATOR 30 #>> (tbool, tbool), -- overlaps or after OPERATOR 31 #&> (tbool, tstzspan), OPERATOR 31 #&> (tbool, tbool), -- functions FUNCTION 1 tbool_gist_consistent(internal, tbool, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 tbool_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(tstzspan, tstzspan, internal); /******************************************************************************/ CREATE OPERATOR CLASS tint_rtree_ops DEFAULT FOR TYPE tint USING gist AS STORAGE tbox, -- strictly left OPERATOR 1 << (tint, intspan), OPERATOR 1 << (tint, tbox), OPERATOR 1 << (tint, tint), -- overlaps or left OPERATOR 2 &< (tint, intspan), OPERATOR 2 &< (tint, tbox), OPERATOR 2 &< (tint, tint), -- overlaps OPERATOR 3 && (tint, intspan), OPERATOR 3 && (tint, tstzspan), OPERATOR 3 && (tint, tbox), OPERATOR 3 && (tint, tint), -- overlaps or right OPERATOR 4 &> (tint, intspan), OPERATOR 4 &> (tint, tbox), OPERATOR 4 &> (tint, tint), -- strictly right OPERATOR 5 >> (tint, intspan), OPERATOR 5 >> (tint, tbox), OPERATOR 5 >> (tint, tint), -- same OPERATOR 6 ~= (tint, intspan), OPERATOR 6 ~= (tint, tstzspan), OPERATOR 6 ~= (tint, tbox), OPERATOR 6 ~= (tint, tint), -- contains OPERATOR 7 @> (tint, intspan), OPERATOR 7 @> (tint, tstzspan), OPERATOR 7 @> (tint, tbox), OPERATOR 7 @> (tint, tint), -- contained by OPERATOR 8 <@ (tint, intspan), OPERATOR 8 <@ (tint, tstzspan), OPERATOR 8 <@ (tint, tbox), OPERATOR 8 <@ (tint, tint), -- adjacent OPERATOR 17 -|- (tint, intspan), OPERATOR 17 -|- (tint, tstzspan), OPERATOR 17 -|- (tint, tbox), OPERATOR 17 -|- (tint, tint), -- nearest approach distance OPERATOR 25 |=| (tint, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tint, tint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tint, tstzspan), OPERATOR 28 &<# (tint, tbox), OPERATOR 28 &<# (tint, tint), -- strictly before OPERATOR 29 <<# (tint, tstzspan), OPERATOR 29 <<# (tint, tbox), OPERATOR 29 <<# (tint, tint), -- strictly after OPERATOR 30 #>> (tint, tstzspan), OPERATOR 30 #>> (tint, tbox), OPERATOR 30 #>> (tint, tint), -- overlaps or after OPERATOR 31 #&> (tint, tstzspan), OPERATOR 31 #&> (tint, tbox), OPERATOR 31 #&> (tint, tint), -- functions FUNCTION 1 tint_gist_consistent(internal, tint, smallint, oid, internal), FUNCTION 2 tbox_gist_union(internal, internal), FUNCTION 3 tint_gist_compress(internal), FUNCTION 5 tbox_gist_penalty(internal, internal, internal), FUNCTION 6 tbox_gist_picksplit(internal, internal), FUNCTION 7 tbox_gist_same(tbox, tbox, internal), FUNCTION 8 tbox_gist_distance(internal, tbox, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS tfloat_rtree_ops DEFAULT FOR TYPE tfloat USING gist AS STORAGE tbox, -- strictly left OPERATOR 1 << (tfloat, floatspan), OPERATOR 1 << (tfloat, tbox), OPERATOR 1 << (tfloat, tfloat), -- overlaps or left OPERATOR 2 &< (tfloat, floatspan), OPERATOR 2 &< (tfloat, tbox), OPERATOR 2 &< (tfloat, tfloat), -- overlaps OPERATOR 3 && (tfloat, floatspan), OPERATOR 3 && (tfloat, tstzspan), OPERATOR 3 && (tfloat, tbox), OPERATOR 3 && (tfloat, tfloat), -- overlaps or right OPERATOR 4 &> (tfloat, floatspan), OPERATOR 4 &> (tfloat, tbox), OPERATOR 4 &> (tfloat, tfloat), -- strictly right OPERATOR 5 >> (tfloat, floatspan), OPERATOR 5 >> (tfloat, tbox), OPERATOR 5 >> (tfloat, tfloat), -- same OPERATOR 6 ~= (tfloat, floatspan), OPERATOR 6 ~= (tfloat, tstzspan), OPERATOR 6 ~= (tfloat, tbox), OPERATOR 6 ~= (tfloat, tfloat), -- contains OPERATOR 7 @> (tfloat, floatspan), OPERATOR 7 @> (tfloat, tstzspan), OPERATOR 7 @> (tfloat, tbox), OPERATOR 7 @> (tfloat, tfloat), -- contained by OPERATOR 8 <@ (tfloat, floatspan), OPERATOR 8 <@ (tfloat, tstzspan), OPERATOR 8 <@ (tfloat, tbox), OPERATOR 8 <@ (tfloat, tfloat), -- adjacent OPERATOR 17 -|- (tfloat, floatspan), OPERATOR 17 -|- (tfloat, tstzspan), OPERATOR 17 -|- (tfloat, tbox), OPERATOR 17 -|- (tfloat, tfloat), -- nearest approach distance OPERATOR 25 |=| (tfloat, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tfloat, tfloat) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tfloat, tstzspan), OPERATOR 28 &<# (tfloat, tbox), OPERATOR 28 &<# (tfloat, tfloat), -- strictly before OPERATOR 29 <<# (tfloat, tstzspan), OPERATOR 29 <<# (tfloat, tbox), OPERATOR 29 <<# (tfloat, tfloat), -- strictly after OPERATOR 30 #>> (tfloat, tstzspan), OPERATOR 30 #>> (tfloat, tbox), OPERATOR 30 #>> (tfloat, tfloat), -- overlaps or after OPERATOR 31 #&> (tfloat, tstzspan), OPERATOR 31 #&> (tfloat, tbox), OPERATOR 31 #&> (tfloat, tfloat), -- functions FUNCTION 1 tfloat_gist_consistent(internal, tfloat, smallint, oid, internal), FUNCTION 2 tbox_gist_union(internal, internal), FUNCTION 3 tfloat_gist_compress(internal), FUNCTION 5 tbox_gist_penalty(internal, internal, internal), FUNCTION 6 tbox_gist_picksplit(internal, internal), FUNCTION 7 tbox_gist_same(tbox, tbox, internal), FUNCTION 8 tbox_gist_distance(internal, tbox, smallint, oid, internal); /******************************************************************************/ CREATE OPERATOR CLASS ttext_rtree_ops DEFAULT FOR TYPE ttext USING gist AS STORAGE tstzspan, -- overlaps OPERATOR 3 && (ttext, tstzspan), OPERATOR 3 && (ttext, ttext), -- same OPERATOR 6 ~= (ttext, tstzspan), OPERATOR 6 ~= (ttext, ttext), -- contains OPERATOR 7 @> (ttext, tstzspan), OPERATOR 7 @> (ttext, ttext), -- contained by OPERATOR 8 <@ (ttext, tstzspan), OPERATOR 8 <@ (ttext, ttext), -- adjacent OPERATOR 17 -|- (ttext, tstzspan), OPERATOR 17 -|- (ttext, ttext), -- overlaps or before OPERATOR 28 &<# (ttext, tstzspan), OPERATOR 28 &<# (ttext, ttext), -- strictly before OPERATOR 29 <<# (ttext, tstzspan), OPERATOR 29 <<# (ttext, ttext), -- strictly after OPERATOR 30 #>> (ttext, tstzspan), OPERATOR 30 #>> (ttext, ttext), -- overlaps or after OPERATOR 31 #&> (ttext, tstzspan), OPERATOR 31 #&> (ttext, ttext), -- functions FUNCTION 1 ttext_gist_consistent(internal, ttext, smallint, oid, internal), FUNCTION 2 span_gist_union(internal, internal), FUNCTION 3 ttext_gist_compress(internal), FUNCTION 5 span_gist_penalty(internal, internal, internal), FUNCTION 6 span_gist_picksplit(internal, internal), FUNCTION 7 span_gist_same(tstzspan, tstzspan, internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * temporal_spgist.sql * Quad-tree SP-GiST index for temporal types */ /******************************************************************************/ CREATE FUNCTION tbox_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_quadtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_quadtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_quadtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_quadtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_quadtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_quadtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_spgist_leaf_consistent(internal, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Tbox_spgist_leaf_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnumber_spgist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnumber_spgist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tbox_quadtree_ops DEFAULT FOR TYPE tbox USING spgist AS -- strictly left OPERATOR 1 << (tbox, tbox), OPERATOR 1 << (tbox, tint), OPERATOR 1 << (tbox, tfloat), -- overlaps or left OPERATOR 2 &< (tbox, tbox), OPERATOR 2 &< (tbox, tint), OPERATOR 2 &< (tbox, tfloat), -- overlaps OPERATOR 3 && (tbox, tbox), OPERATOR 3 && (tbox, tint), OPERATOR 3 && (tbox, tfloat), -- overlaps or right OPERATOR 4 &> (tbox, tbox), OPERATOR 4 &> (tbox, tint), OPERATOR 4 &> (tbox, tfloat), -- strictly right OPERATOR 5 >> (tbox, tbox), OPERATOR 5 >> (tbox, tint), OPERATOR 5 >> (tbox, tfloat), -- same OPERATOR 6 ~= (tbox, tbox), OPERATOR 6 ~= (tbox, tint), OPERATOR 6 ~= (tbox, tfloat), -- contains OPERATOR 7 @> (tbox, tbox), OPERATOR 7 @> (tbox, tint), OPERATOR 7 @> (tbox, tfloat), -- contained by OPERATOR 8 <@ (tbox, tbox), OPERATOR 8 <@ (tbox, tint), OPERATOR 8 <@ (tbox, tfloat), -- adjacent OPERATOR 17 -|- (tbox, tbox), OPERATOR 17 -|- (tbox, tint), OPERATOR 17 -|- (tbox, tfloat), -- overlaps or before OPERATOR 28 &<# (tbox, tbox), OPERATOR 28 &<# (tbox, tint), OPERATOR 28 &<# (tbox, tfloat), -- strictly before OPERATOR 29 <<# (tbox, tbox), OPERATOR 29 <<# (tbox, tint), OPERATOR 29 <<# (tbox, tfloat), -- strictly after OPERATOR 30 #>> (tbox, tbox), OPERATOR 30 #>> (tbox, tint), OPERATOR 30 #>> (tbox, tfloat), -- overlaps or after OPERATOR 31 #&> (tbox, tbox), OPERATOR 31 #&> (tbox, tint), OPERATOR 31 #&> (tbox, tfloat), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_quadtree_choose(internal, internal), FUNCTION 3 tbox_quadtree_picksplit(internal, internal), FUNCTION 4 tbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal); /*****************************************************************************/ CREATE FUNCTION tbox_kdtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_kdtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_kdtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_kdtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tbox_kdtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Tbox_kdtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tbox_kdtree_ops FOR TYPE tbox USING spgist AS -- strictly left OPERATOR 1 << (tbox, tbox), OPERATOR 1 << (tbox, tint), OPERATOR 1 << (tbox, tfloat), -- overlaps or left OPERATOR 2 &< (tbox, tbox), OPERATOR 2 &< (tbox, tint), OPERATOR 2 &< (tbox, tfloat), -- overlaps OPERATOR 3 && (tbox, tbox), OPERATOR 3 && (tbox, tint), OPERATOR 3 && (tbox, tfloat), -- overlaps or right OPERATOR 4 &> (tbox, tbox), OPERATOR 4 &> (tbox, tint), OPERATOR 4 &> (tbox, tfloat), -- strictly right OPERATOR 5 >> (tbox, tbox), OPERATOR 5 >> (tbox, tint), OPERATOR 5 >> (tbox, tfloat), -- same OPERATOR 6 ~= (tbox, tbox), OPERATOR 6 ~= (tbox, tint), OPERATOR 6 ~= (tbox, tfloat), -- contains OPERATOR 7 @> (tbox, tbox), OPERATOR 7 @> (tbox, tint), OPERATOR 7 @> (tbox, tfloat), -- contained by OPERATOR 8 <@ (tbox, tbox), OPERATOR 8 <@ (tbox, tint), OPERATOR 8 <@ (tbox, tfloat), -- adjacent OPERATOR 17 -|- (tbox, tbox), OPERATOR 17 -|- (tbox, tint), OPERATOR 17 -|- (tbox, tfloat), -- overlaps or before OPERATOR 28 &<# (tbox, tbox), OPERATOR 28 &<# (tbox, tint), OPERATOR 28 &<# (tbox, tfloat), -- strictly before OPERATOR 29 <<# (tbox, tbox), OPERATOR 29 <<# (tbox, tint), OPERATOR 29 <<# (tbox, tfloat), -- strictly after OPERATOR 30 #>> (tbox, tbox), OPERATOR 30 #>> (tbox, tint), OPERATOR 30 #>> (tbox, tfloat), -- overlaps or after OPERATOR 31 #&> (tbox, tbox), OPERATOR 31 #&> (tbox, tint), OPERATOR 31 #&> (tbox, tfloat), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_kdtree_choose(internal, internal), FUNCTION 3 tbox_kdtree_picksplit(internal, internal), FUNCTION 4 tbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE FUNCTION temporal_spgist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_spgist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tbool_quadtree_ops DEFAULT FOR TYPE tbool USING spgist AS -- overlaps OPERATOR 3 && (tbool, tstzspan), OPERATOR 3 && (tbool, tbool), -- same OPERATOR 6 ~= (tbool, tstzspan), OPERATOR 6 ~= (tbool, tbool), -- contains OPERATOR 7 @> (tbool, tstzspan), OPERATOR 7 @> (tbool, tbool), -- contained by OPERATOR 8 <@ (tbool, tstzspan), OPERATOR 8 <@ (tbool, tbool), -- adjacent OPERATOR 17 -|- (tbool, tstzspan), OPERATOR 17 -|- (tbool, tbool), -- overlaps or before OPERATOR 28 &<# (tbool, tstzspan), OPERATOR 28 &<# (tbool, tbool), -- strictly before OPERATOR 29 <<# (tbool, tstzspan), OPERATOR 29 <<# (tbool, tbool), -- strictly after OPERATOR 30 #>> (tbool, tstzspan), OPERATOR 30 #>> (tbool, tbool), -- overlaps or after OPERATOR 31 #&> (tbool, tstzspan), OPERATOR 31 #&> (tbool, tbool), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 temporal_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tbool_kdtree_ops FOR TYPE tbool USING spgist AS -- overlaps OPERATOR 3 && (tbool, tstzspan), OPERATOR 3 && (tbool, tbool), -- same OPERATOR 6 ~= (tbool, tstzspan), OPERATOR 6 ~= (tbool, tbool), -- contains OPERATOR 7 @> (tbool, tstzspan), OPERATOR 7 @> (tbool, tbool), -- contained by OPERATOR 8 <@ (tbool, tstzspan), OPERATOR 8 <@ (tbool, tbool), -- adjacent OPERATOR 17 -|- (tbool, tstzspan), OPERATOR 17 -|- (tbool, tbool), -- overlaps or before OPERATOR 28 &<# (tbool, tstzspan), OPERATOR 28 &<# (tbool, tbool), -- strictly before OPERATOR 29 <<# (tbool, tstzspan), OPERATOR 29 <<# (tbool, tbool), -- strictly after OPERATOR 30 #>> (tbool, tstzspan), OPERATOR 30 #>> (tbool, tbool), -- overlaps or after OPERATOR 31 #&> (tbool, tstzspan), OPERATOR 31 #&> (tbool, tbool), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 temporal_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tint_quadtree_ops DEFAULT FOR TYPE tint USING spgist AS -- strictly left OPERATOR 1 << (tint, intspan), OPERATOR 1 << (tint, tbox), OPERATOR 1 << (tint, tint), -- overlaps or left OPERATOR 2 &< (tint, intspan), OPERATOR 2 &< (tint, tbox), OPERATOR 2 &< (tint, tint), -- overlaps OPERATOR 3 && (tint, intspan), OPERATOR 3 && (tint, tstzspan), OPERATOR 3 && (tint, tbox), OPERATOR 3 && (tint, tint), -- overlaps or right OPERATOR 4 &> (tint, intspan), OPERATOR 4 &> (tint, tbox), OPERATOR 4 &> (tint, tint), -- strictly right OPERATOR 5 >> (tint, intspan), OPERATOR 5 >> (tint, tbox), OPERATOR 5 >> (tint, tint), -- same OPERATOR 6 ~= (tint, intspan), OPERATOR 6 ~= (tint, tstzspan), OPERATOR 6 ~= (tint, tbox), OPERATOR 6 ~= (tint, tint), -- contains OPERATOR 7 @> (tint, intspan), OPERATOR 7 @> (tint, tstzspan), OPERATOR 7 @> (tint, tbox), OPERATOR 7 @> (tint, tint), -- contained by OPERATOR 8 <@ (tint, intspan), OPERATOR 8 <@ (tint, tstzspan), OPERATOR 8 <@ (tint, tbox), OPERATOR 8 <@ (tint, tint), -- adjacent OPERATOR 17 -|- (tint, intspan), OPERATOR 17 -|- (tint, tstzspan), OPERATOR 17 -|- (tint, tbox), OPERATOR 17 -|- (tint, tint), -- nearest approach distance OPERATOR 25 |=| (tint, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tint, tint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tint, tstzspan), OPERATOR 28 &<# (tint, tbox), OPERATOR 28 &<# (tint, tint), -- strictly before OPERATOR 29 <<# (tint, tstzspan), OPERATOR 29 <<# (tint, tbox), OPERATOR 29 <<# (tint, tint), -- strictly after OPERATOR 30 #>> (tint, tstzspan), OPERATOR 30 #>> (tint, tbox), OPERATOR 30 #>> (tint, tint), -- overlaps or after OPERATOR 31 #&> (tint, tstzspan), OPERATOR 31 #&> (tint, tbox), OPERATOR 31 #&> (tint, tint), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_quadtree_choose(internal, internal), FUNCTION 3 tbox_quadtree_picksplit(internal, internal), FUNCTION 4 tbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tnumber_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tint_kdtree_ops FOR TYPE tint USING spgist AS -- strictly left OPERATOR 1 << (tint, intspan), OPERATOR 1 << (tint, tbox), OPERATOR 1 << (tint, tint), -- overlaps or left OPERATOR 2 &< (tint, intspan), OPERATOR 2 &< (tint, tbox), OPERATOR 2 &< (tint, tint), -- overlaps OPERATOR 3 && (tint, intspan), OPERATOR 3 && (tint, tstzspan), OPERATOR 3 && (tint, tbox), OPERATOR 3 && (tint, tint), -- overlaps or right OPERATOR 4 &> (tint, intspan), OPERATOR 4 &> (tint, tbox), OPERATOR 4 &> (tint, tint), -- strictly right OPERATOR 5 >> (tint, intspan), OPERATOR 5 >> (tint, tbox), OPERATOR 5 >> (tint, tint), -- same OPERATOR 6 ~= (tint, intspan), OPERATOR 6 ~= (tint, tstzspan), OPERATOR 6 ~= (tint, tbox), OPERATOR 6 ~= (tint, tint), -- contains OPERATOR 7 @> (tint, intspan), OPERATOR 7 @> (tint, tstzspan), OPERATOR 7 @> (tint, tbox), OPERATOR 7 @> (tint, tint), -- contained by OPERATOR 8 <@ (tint, intspan), OPERATOR 8 <@ (tint, tstzspan), OPERATOR 8 <@ (tint, tbox), OPERATOR 8 <@ (tint, tint), -- adjacent OPERATOR 17 -|- (tint, intspan), OPERATOR 17 -|- (tint, tstzspan), OPERATOR 17 -|- (tint, tbox), OPERATOR 17 -|- (tint, tint), -- nearest approach distance OPERATOR 25 |=| (tint, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tint, tint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tint, tstzspan), OPERATOR 28 &<# (tint, tbox), OPERATOR 28 &<# (tint, tint), -- strictly before OPERATOR 29 <<# (tint, tstzspan), OPERATOR 29 <<# (tint, tbox), OPERATOR 29 <<# (tint, tint), -- strictly after OPERATOR 30 #>> (tint, tstzspan), OPERATOR 30 #>> (tint, tbox), OPERATOR 30 #>> (tint, tint), -- overlaps or after OPERATOR 31 #&> (tint, tstzspan), OPERATOR 31 #&> (tint, tbox), OPERATOR 31 #&> (tint, tint), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_kdtree_choose(internal, internal), FUNCTION 3 tbox_kdtree_picksplit(internal, internal), FUNCTION 4 tbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tnumber_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tfloat_quadtree_ops DEFAULT FOR TYPE tfloat USING spgist AS -- strictly left OPERATOR 1 << (tfloat, floatspan), OPERATOR 1 << (tfloat, tbox), OPERATOR 1 << (tfloat, tfloat), -- overlaps or left OPERATOR 2 &< (tfloat, floatspan), OPERATOR 2 &< (tfloat, tbox), OPERATOR 2 &< (tfloat, tfloat), -- overlaps OPERATOR 3 && (tfloat, floatspan), OPERATOR 3 && (tfloat, tstzspan), OPERATOR 3 && (tfloat, tbox), OPERATOR 3 && (tfloat, tfloat), -- overlaps or right OPERATOR 4 &> (tfloat, floatspan), OPERATOR 4 &> (tfloat, tbox), OPERATOR 4 &> (tfloat, tfloat), -- strictly right OPERATOR 5 >> (tfloat, floatspan), OPERATOR 5 >> (tfloat, tbox), OPERATOR 5 >> (tfloat, tfloat), -- same OPERATOR 6 ~= (tfloat, floatspan), OPERATOR 6 ~= (tfloat, tstzspan), OPERATOR 6 ~= (tfloat, tbox), OPERATOR 6 ~= (tfloat, tfloat), -- contains OPERATOR 7 @> (tfloat, floatspan), OPERATOR 7 @> (tfloat, tstzspan), OPERATOR 7 @> (tfloat, tbox), OPERATOR 7 @> (tfloat, tfloat), -- contained by OPERATOR 8 <@ (tfloat, floatspan), OPERATOR 8 <@ (tfloat, tstzspan), OPERATOR 8 <@ (tfloat, tbox), OPERATOR 8 <@ (tfloat, tfloat), -- adjacent OPERATOR 17 -|- (tfloat, floatspan), OPERATOR 17 -|- (tfloat, tstzspan), OPERATOR 17 -|- (tfloat, tbox), OPERATOR 17 -|- (tfloat, tfloat), -- nearest approach distance OPERATOR 25 |=| (tfloat, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tfloat, tfloat) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tfloat, tstzspan), OPERATOR 28 &<# (tfloat, tbox), OPERATOR 28 &<# (tfloat, tfloat), -- strictly before OPERATOR 29 <<# (tfloat, tstzspan), OPERATOR 29 <<# (tfloat, tbox), OPERATOR 29 <<# (tfloat, tfloat), -- strictly after OPERATOR 30 #>> (tfloat, tstzspan), OPERATOR 30 #>> (tfloat, tbox), OPERATOR 30 #>> (tfloat, tfloat), -- overlaps or after OPERATOR 31 #&> (tfloat, tstzspan), OPERATOR 31 #&> (tfloat, tbox), OPERATOR 31 #&> (tfloat, tfloat), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_quadtree_choose(internal, internal), FUNCTION 3 tbox_quadtree_picksplit(internal, internal), FUNCTION 4 tbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tnumber_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tfloat_kdtree_ops FOR TYPE tfloat USING spgist AS -- strictly left OPERATOR 1 << (tfloat, floatspan), OPERATOR 1 << (tfloat, tbox), OPERATOR 1 << (tfloat, tfloat), -- overlaps or left OPERATOR 2 &< (tfloat, floatspan), OPERATOR 2 &< (tfloat, tbox), OPERATOR 2 &< (tfloat, tfloat), -- overlaps OPERATOR 3 && (tfloat, floatspan), OPERATOR 3 && (tfloat, tstzspan), OPERATOR 3 && (tfloat, tbox), OPERATOR 3 && (tfloat, tfloat), -- overlaps or right OPERATOR 4 &> (tfloat, floatspan), OPERATOR 4 &> (tfloat, tbox), OPERATOR 4 &> (tfloat, tfloat), -- strictly right OPERATOR 5 >> (tfloat, floatspan), OPERATOR 5 >> (tfloat, tbox), OPERATOR 5 >> (tfloat, tfloat), -- same OPERATOR 6 ~= (tfloat, floatspan), OPERATOR 6 ~= (tfloat, tstzspan), OPERATOR 6 ~= (tfloat, tbox), OPERATOR 6 ~= (tfloat, tfloat), -- contains OPERATOR 7 @> (tfloat, floatspan), OPERATOR 7 @> (tfloat, tstzspan), OPERATOR 7 @> (tfloat, tbox), OPERATOR 7 @> (tfloat, tfloat), -- contained by OPERATOR 8 <@ (tfloat, floatspan), OPERATOR 8 <@ (tfloat, tstzspan), OPERATOR 8 <@ (tfloat, tbox), OPERATOR 8 <@ (tfloat, tfloat), -- adjacent OPERATOR 17 -|- (tfloat, floatspan), OPERATOR 17 -|- (tfloat, tstzspan), OPERATOR 17 -|- (tfloat, tbox), OPERATOR 17 -|- (tfloat, tfloat), -- nearest approach distance OPERATOR 25 |=| (tfloat, tbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tfloat, tfloat) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tfloat, tstzspan), OPERATOR 28 &<# (tfloat, tbox), OPERATOR 28 &<# (tfloat, tfloat), -- strictly before OPERATOR 29 <<# (tfloat, tstzspan), OPERATOR 29 <<# (tfloat, tbox), OPERATOR 29 <<# (tfloat, tfloat), -- strictly after OPERATOR 30 #>> (tfloat, tstzspan), OPERATOR 30 #>> (tfloat, tbox), OPERATOR 30 #>> (tfloat, tfloat), -- overlaps or after OPERATOR 31 #&> (tfloat, tstzspan), OPERATOR 31 #&> (tfloat, tbox), OPERATOR 31 #&> (tfloat, tfloat), -- functions FUNCTION 1 tbox_spgist_config(internal, internal), FUNCTION 2 tbox_kdtree_choose(internal, internal), FUNCTION 3 tbox_kdtree_picksplit(internal, internal), FUNCTION 4 tbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 tbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tnumber_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS ttext_quadtree_ops DEFAULT FOR TYPE ttext USING spgist AS -- overlaps OPERATOR 3 && (ttext, tstzspan), OPERATOR 3 && (ttext, ttext), -- same OPERATOR 6 ~= (ttext, tstzspan), OPERATOR 6 ~= (ttext, ttext), -- contains OPERATOR 7 @> (ttext, tstzspan), OPERATOR 7 @> (ttext, ttext), -- contained by OPERATOR 8 <@ (ttext, tstzspan), OPERATOR 8 <@ (ttext, ttext), -- adjacent OPERATOR 17 -|- (ttext, tstzspan), OPERATOR 17 -|- (ttext, ttext), -- overlaps or before OPERATOR 28 &<# (ttext, tstzspan), OPERATOR 28 &<# (ttext, ttext), -- strictly before OPERATOR 29 <<# (ttext, tstzspan), OPERATOR 29 <<# (ttext, ttext), -- strictly after OPERATOR 30 #>> (ttext, tstzspan), OPERATOR 30 #>> (ttext, ttext), -- overlaps or after OPERATOR 31 #&> (ttext, tstzspan), OPERATOR 31 #&> (ttext, ttext), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_quadtree_choose(internal, internal), FUNCTION 3 span_quadtree_picksplit(internal, internal), FUNCTION 4 span_quadtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 temporal_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS ttext_kdtree_ops FOR TYPE ttext USING spgist AS -- overlaps OPERATOR 3 && (ttext, tstzspan), OPERATOR 3 && (ttext, ttext), -- same OPERATOR 6 ~= (ttext, tstzspan), OPERATOR 6 ~= (ttext, ttext), -- contains OPERATOR 7 @> (ttext, tstzspan), OPERATOR 7 @> (ttext, ttext), -- contained by OPERATOR 8 <@ (ttext, tstzspan), OPERATOR 8 <@ (ttext, ttext), -- adjacent OPERATOR 17 -|- (ttext, tstzspan), OPERATOR 17 -|- (ttext, ttext), -- overlaps or before OPERATOR 28 &<# (ttext, tstzspan), OPERATOR 28 &<# (ttext, ttext), -- strictly before OPERATOR 29 <<# (ttext, tstzspan), OPERATOR 29 <<# (ttext, ttext), -- strictly after OPERATOR 30 #>> (ttext, tstzspan), OPERATOR 30 #>> (ttext, ttext), -- overlaps or after OPERATOR 31 #&> (ttext, tstzspan), OPERATOR 31 #&> (ttext, ttext), -- functions FUNCTION 1 tstzspan_spgist_config(internal, internal), FUNCTION 2 span_kdtree_choose(internal, internal), FUNCTION 3 span_kdtree_picksplit(internal, internal), FUNCTION 4 span_kdtree_inner_consistent(internal, internal), FUNCTION 5 span_spgist_leaf_consistent(internal, internal), FUNCTION 6 temporal_spgist_compress(internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * set.sql * Functions for set of values. */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE TYPE geomset; CREATE TYPE geogset; CREATE FUNCTION geomset_in(cstring) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geomset_out(geomset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geomset_recv(internal) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geomset_send(geomset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogset_in(cstring) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogset_out(geogset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogset_recv(internal) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogset_send(geogset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION spatialset_analyze(internal) RETURNS boolean AS 'MODULE_PATHNAME', 'Spatialset_analyze' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE geomset ( internallength = variable, input = geomset_in, output = geomset_out, receive = geomset_recv, send = geomset_send, alignment = double, storage = extended, analyze = spatialset_analyze ); CREATE TYPE geogset ( internallength = variable, input = geogset_in, output = geogset_out, receive = geogset_recv, send = geogset_send, alignment = double, storage = extended, analyze = spatialset_analyze ); /******************************************************************************/ -- Input/output in WKB and HexWKB format CREATE FUNCTION geomsetFromBinary(bytea) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geomsetFromHexWKB(text) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogsetFromBinary(bytea) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geogsetFromHexWKB(text) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(geomset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(geogset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(geomset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(geogset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION asText(geomset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Geoset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(geogset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Geoset_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(geomset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Geoset_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(geogset, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Geoset_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor ******************************************************************************/ CREATE FUNCTION set(geometry[]) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(geography[]) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Conversion functions ******************************************************************************/ CREATE FUNCTION set(geometry) RETURNS geomset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set(geography) RETURNS geogset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (geometry AS geomset) WITH FUNCTION set(geometry); CREATE CAST (geography AS geogset) WITH FUNCTION set(geography); /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION memSize(geomset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(geogset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(geomset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(geogset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(geomset) RETURNS geometry AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(geogset) RETURNS geography AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(geomset) RETURNS geometry AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(geogset) RETURNS geography AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(geomset, integer) RETURNS geometry AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(geogset, integer) RETURNS geography AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(geomset) RETURNS geometry[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(geogset) RETURNS geography[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * SRID functions *****************************************************************************/ CREATE FUNCTION SRID(geomset) RETURNS integer AS 'MODULE_PATHNAME', 'Geoset_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION SRID(geogset) RETURNS integer AS 'MODULE_PATHNAME', 'Geoset_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setSRID(geomset, integer) RETURNS geomset AS 'MODULE_PATHNAME', 'Geoset_set_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setSRID(geogset, integer) RETURNS geogset AS 'MODULE_PATHNAME', 'Geoset_set_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform(geomset, integer) RETURNS geomset AS 'MODULE_PATHNAME', 'Geoset_transform' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform(geogset, integer) RETURNS geogset AS 'MODULE_PATHNAME', 'Geoset_transform' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transformPipeline(geomset, text, srid integer DEFAULT 0, is_forward boolean DEFAULT true) RETURNS geomset AS 'MODULE_PATHNAME', 'Geoset_transform_pipeline' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transformPipeline(geogset, text, srid integer DEFAULT 0, is_forward boolean DEFAULT true) RETURNS geogset AS 'MODULE_PATHNAME', 'Geoset_transform_pipeline' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION round(geomset, integer DEFAULT 0) RETURNS geomset AS 'MODULE_PATHNAME', 'Geoset_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(geogset, integer DEFAULT 0) RETURNS geogset AS 'MODULE_PATHNAME', 'Geoset_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Transformation set of values <-> set ******************************************************************************/ CREATE FUNCTION unnest(geomset) RETURNS SETOF geometry AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(geogset) RETURNS SETOF geography AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ -- The function is not STRICT CREATE FUNCTION set_union_transfn(internal, geometry) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, geography) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, geomset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, geogset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION geomset_union_finalfn(internal) RETURNS geomset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION geogset_union_finalfn(internal) RETURNS geogset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE setUnion(geometry) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = geomset_union_finalfn ); CREATE AGGREGATE setUnion(geography) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = geogset_union_finalfn ); CREATE AGGREGATE setUnion(geomset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = geomset_union_finalfn ); CREATE AGGREGATE setUnion(geogset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = geogset_union_finalfn ); /***************************************************************************** * Selectivity functions *****************************************************************************/ -- CREATE FUNCTION spatialset_sel(internal, oid, internal, integer) -- RETURNS float -- AS 'MODULE_PATHNAME', 'Spatialset_sel' -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Comparison functions and B-tree indexing ******************************************************************************/ CREATE FUNCTION set_eq(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_eq(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(geomset, geomset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(geogset, geogset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(geomset, geomset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(geogset, geogset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR = ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR <> ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >= -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR < ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >= -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR <= ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = > -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR <= ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = > -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR >= ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = < -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR >= ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = < -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR > ( LEFTARG = geomset, RIGHTARG = geomset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <= -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR > ( LEFTARG = geogset, RIGHTARG = geogset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <= -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR CLASS geomset_btree_ops DEFAULT FOR TYPE geomset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(geomset, geomset); CREATE OPERATOR CLASS geogset_btree_ops DEFAULT FOR TYPE geogset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(geogset, geogset); /******************************************************************************/ CREATE FUNCTION set_hash(geomset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash(geogset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(geomset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(geogset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS geomset_hash_ops DEFAULT FOR TYPE geomset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(geomset), FUNCTION 2 set_hash_extended(geomset, bigint); CREATE OPERATOR CLASS geogset_hash_ops DEFAULT FOR TYPE geogset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(geogset), FUNCTION 2 set_hash_extended(geogset, bigint); /****************************************************************************** * Operators ******************************************************************************/ CREATE FUNCTION set_contains(geomset, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(geomset, geomset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(geogset, geography) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(geogset, geogset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = geomset, RIGHTARG = geometry, COMMUTATOR = <@ -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = <@ -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = geogset, RIGHTARG = geography, COMMUTATOR = <@ -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = <@ -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); /******************************************************************************/ CREATE FUNCTION set_contained(geometry, geomset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(geomset, geomset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(geography, geogset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(geogset, geogset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = geometry, RIGHTARG = geomset, COMMUTATOR = @> -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = @> -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = geography, RIGHTARG = geogset, COMMUTATOR = @> -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = @> -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); /******************************************************************************/ CREATE FUNCTION set_overlaps(geomset, geomset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_overlaps(geogset, geogset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = && -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = && -- RESTRICT = stbox_sel, JOIN = stbox_joinsel ); /*****************************************************************************/ CREATE FUNCTION set_union(geometry, geomset) RETURNS geomset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(geomset, geometry) RETURNS geomset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(geomset, geomset) RETURNS geomset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(geography, geogset) RETURNS geogset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(geogset, geography) RETURNS geogset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(geogset, geogset) RETURNS geogset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geometry, RIGHTARG = geomset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geomset, RIGHTARG = geometry, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geography, RIGHTARG = geogset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geogset, RIGHTARG = geography, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = + ); /*****************************************************************************/ CREATE FUNCTION set_minus(geometry, geomset) RETURNS geometry AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(geomset, geometry) RETURNS geomset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(geomset, geomset) RETURNS geomset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(geography, geogset) RETURNS geography AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(geogset, geography) RETURNS geogset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(geogset, geogset) RETURNS geogset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geometry, RIGHTARG = geomset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geomset, RIGHTARG = geometry ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geomset, RIGHTARG = geomset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geography, RIGHTARG = geogset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geogset, RIGHTARG = geography ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = geogset, RIGHTARG = geogset ); /*****************************************************************************/ CREATE FUNCTION set_intersection(geometry, geomset) RETURNS geometry AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(geomset, geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(geomset, geomset) RETURNS geomset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(geography, geogset) RETURNS geography AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(geogset, geography) RETURNS geography AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(geogset, geogset) RETURNS geogset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geometry, RIGHTARG = geomset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geomset, RIGHTARG = geometry, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geography, RIGHTARG = geogset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geogset, RIGHTARG = geography, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = * ); /*****************************************************************************/ CREATE FUNCTION set_distance(geometry, geomset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(geomset, geometry) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(geomset, geomset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(geography, geogset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(geogset, geography) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(geogset, geogset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geometry, RIGHTARG = geomset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geomset, RIGHTARG = geometry, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geomset, RIGHTARG = geomset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geography, RIGHTARG = geogset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geogset, RIGHTARG = geography, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = geogset, RIGHTARG = geogset, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * stbox.sql * Functions for spatiotemporal bounding box. */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE TYPE stbox; CREATE FUNCTION stbox_in(cstring) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_out(stbox) RETURNS cstring AS 'MODULE_PATHNAME', 'Stbox_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_recv(internal) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_send(stbox) RETURNS bytea AS 'MODULE_PATHNAME', 'Stbox_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE stbox ( internallength = 80, input = stbox_in, output = stbox_out, receive = stbox_recv, send = stbox_send, storage = plain, alignment = double ); -- Input/output in WKB and HexWKB format CREATE FUNCTION stboxFromBinary(bytea) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxFromHexWKB(text) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(stbox, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Stbox_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(stbox, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Stbox_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(stbox, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Stbox_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructors ******************************************************************************/ CREATE FUNCTION stboxX(float, float, float, float, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_x' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxZ(float, float, float, float, float, float, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_z' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxT(timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_t' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxT(tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_t' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxXT(float, float, float, float, timestamptz, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_xt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxXT(float, float, float, float, tstzspan, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_xt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxZT(float, float, float, float, float, float, timestamptz, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_zt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stboxZT(float, float, float, float, float, float, tstzspan, srid integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_constructor_zt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geodstboxT(timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Geodstbox_constructor_t' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geodstboxT(tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Geodstbox_constructor_t' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geodstboxZ(float, float, float, float, float, float, srid integer DEFAULT 4326) RETURNS stbox AS 'MODULE_PATHNAME', 'Geodstbox_constructor_z' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geodstboxZT(float, float, float, float, float, float, timestamptz, srid integer DEFAULT 4326) RETURNS stbox AS 'MODULE_PATHNAME', 'Geodstbox_constructor_zt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geodstboxZT(float, float, float, float, float, float, tstzspan, srid integer DEFAULT 4326) RETURNS stbox AS 'MODULE_PATHNAME', 'Geodstbox_constructor_zt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION stbox(geometry, timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_timestamptz_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geography, timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_timestamptz_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geometry, tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_tstzspan_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geography, tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_tstzspan_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Conversion *****************************************************************************/ CREATE FUNCTION stbox(box2d) RETURNS stbox AS 'MODULE_PATHNAME', 'Box2d_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(box3d) RETURNS stbox AS 'MODULE_PATHNAME', 'Box3d_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geometry) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geography) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geomset) RETURNS stbox AS 'MODULE_PATHNAME', 'Geoset_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(geogset) RETURNS stbox AS 'MODULE_PATHNAME', 'Geoset_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Timestamptz_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(tstzset) RETURNS stbox AS 'MODULE_PATHNAME', 'Tstzset_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Tstzspan_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(tstzspanset) RETURNS stbox AS 'MODULE_PATHNAME', 'Tstzspanset_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (box2d AS stbox) WITH FUNCTION stbox(box2d); CREATE CAST (box3d AS stbox) WITH FUNCTION stbox(box3d); CREATE CAST (geometry AS stbox) WITH FUNCTION stbox(geometry); CREATE CAST (geography AS stbox) WITH FUNCTION stbox(geography); CREATE CAST (geomset AS stbox) WITH FUNCTION stbox(geomset); CREATE CAST (geogset AS stbox) WITH FUNCTION stbox(geogset); CREATE CAST (timestamptz AS stbox) WITH FUNCTION stbox(timestamptz); CREATE CAST (tstzset AS stbox) WITH FUNCTION stbox(tstzset); CREATE CAST (tstzspan AS stbox) WITH FUNCTION stbox(tstzspan); CREATE CAST (tstzspanset AS stbox) WITH FUNCTION stbox(tstzspanset); /*****************************************************************************/ CREATE FUNCTION box2d(stbox) RETURNS box2d AS 'MODULE_PATHNAME', 'Stbox_to_box2d' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION box3d(stbox) RETURNS box3d AS 'MODULE_PATHNAME', 'Stbox_to_box3d' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geometry(stbox) RETURNS geometry AS 'MODULE_PATHNAME', 'Stbox_to_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geography(stbox) RETURNS geography AS 'MODULE_PATHNAME', 'Stbox_to_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(stbox) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Stbox_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (stbox AS box2d) WITH FUNCTION box2d(stbox); CREATE CAST (stbox AS box3d) WITH FUNCTION box3d(stbox); CREATE CAST (stbox AS geometry) WITH FUNCTION geometry(stbox); CREATE CAST (stbox AS geography) WITH FUNCTION geography(stbox); CREATE CAST (stbox AS tstzspan) WITH FUNCTION timeSpan(stbox); /***************************************************************************** * Accessor functions *****************************************************************************/ CREATE FUNCTION hasX(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_hasx' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hasZ(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_hasz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hasT(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_hast' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION isGeodetic(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_isgeodetic' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Xmin(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_xmin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Ymin(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_ymin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Zmin(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_zmin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Tmin(stbox) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Stbox_tmin' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION TminInc(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_tmin_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Xmax(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_xmax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Ymax(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_ymax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Zmax(stbox) RETURNS float AS 'MODULE_PATHNAME', 'Stbox_zmax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Tmax(stbox) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Stbox_tmax' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION TmaxInc(stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_tmax_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shiftTime(stbox, interval) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(stbox, interval) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(stbox, interval, interval) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getSpace(stbox) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_get_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandSpace(stbox, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandTime(stbox, interval) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_expand_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Selectively functions for operators *****************************************************************************/ CREATE FUNCTION tpoint_sel(internal, oid, internal, integer) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_sel' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION tpoint_joinsel(internal, oid, internal, smallint, internal) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_joinsel' LANGUAGE C IMMUTABLE STRICT; /***************************************************************************** * Topological operators *****************************************************************************/ CREATE FUNCTION stbox_contains(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_contained(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overlaps(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_same(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_adjacent(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = stbox_contains, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = stbox_contained, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = stbox_overlaps, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = stbox_same, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = stbox_adjacent, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Position operators *****************************************************************************/ CREATE FUNCTION stbox_left(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overleft(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_right(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overright(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_below(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overbelow(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_above(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overabove(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_before(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overbefore(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_after(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overafter(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_front(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Front_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overfront(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overfront_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_back(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Back_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_overback(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overback_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( PROCEDURE = stbox_left, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = >>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &< ( PROCEDURE = stbox_overleft, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_right, COMMUTATOR = <<, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &> ( PROCEDURE = stbox_overright, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<| ( PROCEDURE = stbox_below, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = |>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<| ( PROCEDURE = stbox_overbelow, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |>> ( PROCEDURE = stbox_above, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = <<|, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |&> ( PROCEDURE = stbox_overabove, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <</ ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_front, COMMUTATOR = />>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &</ ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_overfront, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR />> ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_back, COMMUTATOR = <</, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR /&> ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_overback, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<# ( PROCEDURE = stbox_before, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( PROCEDURE = stbox_overbefore, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( PROCEDURE = stbox_after, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( PROCEDURE = stbox_overafter, LEFTARG = stbox, RIGHTARG = stbox, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Set operators *****************************************************************************/ CREATE FUNCTION stbox_union(stbox, stbox) RETURNS stbox AS 'MODULE_PATHNAME', 'Union_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_intersection(stbox, stbox) RETURNS stbox AS 'MODULE_PATHNAME', 'Intersection_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = stbox_union, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = + ); CREATE OPERATOR * ( PROCEDURE = stbox_intersection, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = * ); /***************************************************************************** * Split functions *****************************************************************************/ CREATE FUNCTION quadSplit(stbox) RETURNS stbox[] AS 'MODULE_PATHNAME', 'Stbox_quad_split' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Extent aggreation *****************************************************************************/ CREATE FUNCTION stbox_extent_transfn(stbox, stbox) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION stbox_extent_combinefn(stbox, stbox) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_extent_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(stbox) ( SFUNC = stbox_extent_transfn, STYPE = stbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = stbox_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /***************************************************************************** * Comparison *****************************************************************************/ CREATE FUNCTION stbox_eq(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_ne(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_lt(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_le(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_ge(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gt(stbox, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Stbox_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_cmp(stbox, stbox) RETURNS int4 AS 'MODULE_PATHNAME', 'Stbox_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = stbox_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( PROCEDURE = stbox_lt, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = >, NEGATOR = >=, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR <= ( PROCEDURE = stbox_le, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = >=, NEGATOR = >, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR >= ( PROCEDURE = stbox_ge, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = <=, NEGATOR = <, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR > ( PROCEDURE = stbox_gt, LEFTARG = stbox, RIGHTARG = stbox, COMMUTATOR = <, NEGATOR = <=, RESTRICT = areasel, JOIN = areajoinsel ); CREATE OPERATOR CLASS stbox_btree_ops DEFAULT FOR TYPE stbox USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 stbox_cmp(stbox, stbox); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint.sql * Basic functions for temporal points. */ CREATE TYPE tgeompoint; CREATE TYPE tgeogpoint; /****************************************************************************** * Input/Output ******************************************************************************/ CREATE FUNCTION tgeompoint_in(cstring, oid, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(tgeompoint) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint_recv(internal, oid, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tgeompoint) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint_typmod_in(cstring[]) RETURNS integer AS 'MODULE_PATHNAME', 'Tgeompoint_typmod_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint_typmod_in(cstring[]) RETURNS integer AS 'MODULE_PATHNAME', 'Tgeogpoint_typmod_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_typmod_out(integer) RETURNS cstring AS 'MODULE_PATHNAME', 'Tpoint_typmod_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_analyze(internal) RETURNS boolean AS 'MODULE_PATHNAME', 'Tpoint_analyze' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE tgeompoint ( internallength = variable, input = tgeompoint_in, output = temporal_out, send = temporal_send, receive = tgeompoint_recv, typmod_in = tgeompoint_typmod_in, typmod_out = tpoint_typmod_out, storage = extended, alignment = double, analyze = tpoint_analyze ); CREATE FUNCTION tgeogpoint_in(cstring, oid, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_out(tgeogpoint) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint_recv(internal, oid, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tgeogpoint) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE tgeogpoint ( internallength = variable, input = tgeogpoint_in, output = temporal_out, send = temporal_send, receive = tgeogpoint_recv, typmod_in = tgeogpoint_typmod_in, typmod_out = tpoint_typmod_out, storage = extended, alignment = double, analyze = tpoint_analyze ); -- Special cast for enforcing the typmod restrictions CREATE FUNCTION tgeompoint(tgeompoint, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint(tgeogpoint, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_enforce_typmod' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- Casting CANNOT be implicit to avoid ambiguity CREATE CAST (tgeompoint AS tgeompoint) WITH FUNCTION tgeompoint(tgeompoint, integer) AS IMPLICIT; CREATE CAST (tgeogpoint AS tgeogpoint) WITH FUNCTION tgeogpoint(tgeogpoint, integer) AS IMPLICIT; /****************************************************************************** * Constructors ******************************************************************************/ CREATE FUNCTION tgeompoint(geometry(Point), timestamptz) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpointinst_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint(geography(Point), timestamptz) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpointinst_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint(geometry, tstzset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint(geography, tstzset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint(geometry, tstzspan, text DEFAULT 'linear') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint(geography, tstzspan, text DEFAULT 'linear') RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint(geometry, tstzspanset, text DEFAULT 'linear') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint(geography, tstzspanset, text DEFAULT 'linear') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION tgeompointSeq(tgeompoint[], text DEFAULT 'linear', lower_inc boolean DEFAULT true, upper_inc boolean DEFAULT true) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointSeq(tgeogpoint[], text DEFAULT 'linear', lower_inc boolean DEFAULT true, upper_inc boolean DEFAULT true) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointSeqSet(tgeompoint[]) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointSeqSet(tgeogpoint[]) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeompointSeqSetGaps(tgeompoint[], maxt interval DEFAULT NULL, maxdist float DEFAULT NULL, text DEFAULT 'linear') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tgeogpointSeqSetGaps(tgeogpoint[], maxt interval DEFAULT NULL, maxdist float DEFAULT NULL, text DEFAULT 'linear') RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; /****************************************************************************** * Casting ******************************************************************************/ CREATE FUNCTION timeSpan(tgeompoint) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(tgeogpoint) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- Casting CANNOT be implicit to avoid ambiguity CREATE CAST (tgeompoint AS tstzspan) WITH FUNCTION timeSpan(tgeompoint); CREATE CAST (tgeogpoint AS tstzspan) WITH FUNCTION timeSpan(tgeogpoint); /****************************************************************************** * Transformations ******************************************************************************/ CREATE FUNCTION tgeompointInst(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeompointSeq(tgeompoint, text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeompointSeq(tgeompoint) RETURNS tgeompoint AS 'SELECT @extschema@.tgeompointSeq($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeompointSeqSet(tgeompoint, text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeompointSeqSet(tgeompoint) RETURNS tgeompoint AS 'SELECT @extschema@.tgeompointSeqSet($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tgeogpointInst(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeogpointSeq(tgeogpoint, text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeogpointSeq(tgeogpoint) RETURNS tgeogpoint AS 'SELECT @extschema@.tgeogpointSeq($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeogpointSeqSet(tgeogpoint, text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tgeogpointSeqSet(tgeogpoint) RETURNS tgeogpoint AS 'SELECT @extschema@.tgeogpointSeqSet($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION setInterp(tgeompoint, text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setInterp(tgeogpoint, text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendInstant(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendInstant(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION merge(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION merge(tgeompoint[]) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(tgeogpoint[]) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Accessor Functions ******************************************************************************/ CREATE FUNCTION tempSubtype(tgeompoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tempSubtype(tgeogpoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tgeompoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tgeogpoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- value is a reserved word in SQL CREATE FUNCTION getValue(tgeompoint) RETURNS geometry(Point) AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValue(tgeogpoint) RETURNS geography(Point) AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTimestamp(tgeompoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTimestamp(tgeogpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSet(tgeompoint) RETURNS geomset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueSet(tgeogpoint) RETURNS geogset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- time is a reserved word in SQL CREATE FUNCTION getTime(tgeompoint) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getTime(tgeogpoint) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tgeompoint) RETURNS geometry(Point) AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tgeogpoint) RETURNS geography(Point) AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tgeompoint) RETURNS geometry(Point) AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tgeogpoint) RETURNS geography(Point) AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tgeompoint, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tgeogpoint, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tgeompoint, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tgeogpoint, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tgeompoint) RETURNS tgeompoint[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tgeogpoint) RETURNS tgeogpoint[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tgeompoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tgeogpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tgeompoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tgeogpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tgeompoint, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tgeogpoint, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tgeompoint) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tgeogpoint) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tgeompoint, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tgeogpoint, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tgeompoint) RETURNS tgeompoint[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tgeogpoint) RETURNS tgeogpoint[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tgeompoint) RETURNS tgeompoint[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tgeogpoint) RETURNS tgeogpoint[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Shift and scale functions *****************************************************************************/ CREATE FUNCTION shiftTime(tgeompoint, interval) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftTime(tgeogpoint, interval) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tgeompoint, interval) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tgeogpoint, interval) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tgeompoint, interval, interval) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tgeogpoint, interval, interval) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tprecision(tgeompoint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_tprecision' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tprecision(tgeogpoint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_tprecision' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tsample(tgeompoint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_tsample' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tsample(tgeogpoint, duration interval, origin timestamptz DEFAULT '2000-01-03') RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_tsample' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Unnest Function *****************************************************************************/ CREATE TYPE geom_tstzspanset AS ( value geometry, time tstzspanset ); CREATE TYPE geog_tstzspanset AS ( value geography, time tstzspanset ); CREATE FUNCTION unnest(tgeompoint) RETURNS SETOF geom_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION unnest(tgeogpoint) RETURNS SETOF geog_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Restriction Functions *****************************************************************************/ CREATE FUNCTION atValues(tgeompoint, geometry(Point)) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tgeogpoint, geography(Point)) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tgeompoint, geometry(Point)) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tgeogpoint, geography(Point)) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tgeompoint, geomset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tgeogpoint, geogset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tgeompoint, geomset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tgeogpoint, geogset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeompoint, timestamptz) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeogpoint, timestamptz) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeompoint, timestamptz) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeogpoint, timestamptz) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tgeompoint, timestamptz) RETURNS geometry(Point) AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tgeogpoint, timestamptz) RETURNS geography(Point) AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeompoint, tstzset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeogpoint, tstzset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeompoint, tstzset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeogpoint, tstzset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeompoint, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeogpoint, tstzspan) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeompoint, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeogpoint, tstzspan) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeompoint, tstzspanset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tgeogpoint, tstzspanset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeompoint, tstzspanset) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tgeogpoint, tstzspanset) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Modification Functions *****************************************************************************/ CREATE FUNCTION insert(tgeompoint, tgeompoint, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION insert(tgeogpoint, tgeompoint, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tgeompoint, tgeompoint, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tgeogpoint, tgeogpoint, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeompoint, timestamptz, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeogpoint, timestamptz, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeompoint, tstzset, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeogpoint, tstzset, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeompoint, tstzspan, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeogpoint, tstzspan, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeompoint, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tgeogpoint, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Stops Function *****************************************************************************/ CREATE FUNCTION stops(tgeompoint, maxdist float DEFAULT 0.0, minduration interval DEFAULT '0 minutes') RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_stops' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stops(tgeogpoint, maxdist float DEFAULT 0.0, minduration interval DEFAULT '0 minutes') RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_stops' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Multidimensional tiling ******************************************************************************/ CREATE TYPE time_tgeompoint AS ( time timestamptz, temp tgeompoint ); CREATE TYPE time_tgeogpoint AS ( time timestamptz, temp tgeogpoint ); CREATE FUNCTION timeSplit(tgeompoint, bucket_width interval, origin timestamptz DEFAULT '2000-01-03') RETURNS setof time_tgeompoint AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION timeSplit(tgeogpoint, bucket_width interval, origin timestamptz DEFAULT '2000-01-03') RETURNS setof time_tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /****************************************************************************** * Comparison functions and B-tree indexing ******************************************************************************/ CREATE FUNCTION temporal_lt(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tgeompoint, tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tgeompoint, tgeompoint) RETURNS int4 AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <= ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR = ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >= ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR > ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR CLASS tgeompoint_btree_ops DEFAULT FOR TYPE tgeompoint USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tgeompoint, tgeompoint); /******************************************************************************/ CREATE FUNCTION temporal_lt(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tgeogpoint, tgeogpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tgeogpoint, tgeogpoint) RETURNS int4 AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <= ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR = ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <> ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >= ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR > ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR CLASS tgeogpoint_btree_ops DEFAULT FOR TYPE tgeogpoint USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tgeogpoint, tgeogpoint); /******************************************************************************/ CREATE FUNCTION temporal_hash(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_hash(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS tgeompoint_hash_ops DEFAULT FOR TYPE tgeompoint USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tgeompoint); CREATE OPERATOR CLASS tgeogpoint_hash_ops DEFAULT FOR TYPE tgeogpoint USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tgeogpoint); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_inout.sql * Input/output of temporal points in WKT, EWKT, and MF-JSON format */ /***************************************************************************** * Input *****************************************************************************/ CREATE FUNCTION tgeompointFromText(text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_from_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromText(text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_from_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointFromEWKT(text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_from_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromEWKT(text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_from_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointFromMFJSON(text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromMFJSON(text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_from_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointFromBinary(bytea) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromBinary(bytea) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointFromEWKB(bytea) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromEWKB(bytea) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompointFromHexEWKB(text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpointFromHexEWKB(text) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Output *****************************************************************************/ CREATE FUNCTION asText(tgeompoint, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Tpoint_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tgeompoint[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Tpointarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tgeogpoint, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Tpoint_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tgeogpoint[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Tpointarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(geometry[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Geoarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(geography[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Geoarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(tgeompoint, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Tpoint_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(tgeompoint[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Tpointarr_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(tgeogpoint, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Tpoint_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(tgeogpoint[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Tpointarr_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(geometry[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Geoarr_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKT(geography[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Geoarr_as_ewkt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(point tgeompoint, options int4 DEFAULT 0, flags int4 DEFAULT 0, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asMFJSON(point tgeogpoint, options int4 DEFAULT 0, flags int4 DEFAULT 0, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_mfjson' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tgeompoint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tgeogpoint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKB(tgeompoint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Tpoint_as_ewkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asEWKB(tgeogpoint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Tpoint_as_ewkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexEWKB(tgeompoint, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexEWKB(tgeogpoint, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * @file * @brief Ever/always and temporal comparison functions and operators for * temporal points. */ /***************************************************************************** * Index Support Function *****************************************************************************/ CREATE FUNCTION tpoint_supportfn(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tpoint_supportfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Ever/Always Comparison Functions *****************************************************************************/ CREATE FUNCTION ever_eq(geometry(Point), tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_point_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(geography(Point), tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_point_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = geometry(Point), RIGHTARG = tgeompoint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?= ( LEFTARG = geography(Point), RIGHTARG = tgeogpoint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_eq(geometry(Point), tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_point_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(geography(Point), tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_point_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = geography(Point), RIGHTARG = tgeogpoint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %= ( LEFTARG = geometry(Point), RIGHTARG = tgeompoint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION ever_ne(geometry(Point), tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(geography(Point), tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = geometry(Point), RIGHTARG = tgeompoint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = geography(Point), RIGHTARG = tgeogpoint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_ne(geometry(Point), tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(geography(Point), tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = geometry(Point), RIGHTARG = tgeompoint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %<> ( LEFTARG = geography(Point), RIGHTARG = tgeogpoint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION ever_eq(tgeompoint, geometry(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_tpoint_point' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tgeogpoint, geography(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_tpoint_point' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = tgeompoint, RIGHTARG = geometry(Point), PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?= ( LEFTARG = tgeogpoint, RIGHTARG = geography(Point), PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_eq(tgeompoint, geometry(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_tpoint_point' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tgeogpoint, geography(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_tpoint_point' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = tgeogpoint, RIGHTARG = geography(Point), PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %= ( LEFTARG = tgeompoint, RIGHTARG = geometry(Point), PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION ever_ne(tgeompoint, geometry(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tgeogpoint, geography(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = tgeompoint, RIGHTARG = geometry(Point), PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = tgeogpoint, RIGHTARG = geography(Point), PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_ne(tgeompoint, geometry(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tgeogpoint, geography(Point)) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = tgeompoint, RIGHTARG = geometry(Point), PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %<> ( LEFTARG = tgeogpoint, RIGHTARG = geography(Point), PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION ever_eq(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_eq(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?= ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_eq(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_eq(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %= ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION ever_ne(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION ever_ne(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ?<> ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_ne(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION always_ne(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR %<> ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Temporal equal *****************************************************************************/ CREATE FUNCTION tpoint_teq(geometry(Point), tgeompoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeompoint, geometry(Point)) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeompoint, tgeompoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = geometry(Point), RIGHTARG = tgeompoint, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = tgeompoint, RIGHTARG = geometry(Point), COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = #= ); CREATE FUNCTION tpoint_teq(geometry(Point), tgeompoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeompoint, geometry(Point), atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeompoint, tgeompoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION tpoint_teq(geography(Point), tgeogpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeogpoint, geography(Point)) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeogpoint, tgeogpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = geography(Point), RIGHTARG = tgeogpoint, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = tgeogpoint, RIGHTARG = geography(Point), COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = tpoint_teq, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = #= ); CREATE FUNCTION tpoint_teq(geography(Point), tgeogpoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeogpoint, geography(Point), atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_teq(tgeogpoint, tgeogpoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Temporal not equal *****************************************************************************/ CREATE FUNCTION tpoint_tne(geometry(Point), tgeompoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeompoint, geometry(Point)) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeompoint, tgeompoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = geometry(Point), RIGHTARG = tgeompoint, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = tgeompoint, RIGHTARG = geometry(Point), COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = #<> ); CREATE FUNCTION tpoint_tne(geometry(Point), tgeompoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeompoint, geometry(Point), atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeompoint, tgeompoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION tpoint_tne(geography(Point), tgeogpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeogpoint, geography(Point)) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeogpoint, tgeogpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = geography(Point), RIGHTARG = tgeogpoint, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = tgeogpoint, RIGHTARG = geography(Point), COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = tpoint_tne, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = #<> ); CREATE FUNCTION tpoint_tne(geography(Point), tgeogpoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeogpoint, geography(Point), atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_tne(tgeogpoint, tgeogpoint, atvalue bool) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_spatialfuncs.sql * Spatial functions for temporal points. */ /*****************************************************************************/ CREATE FUNCTION SRID(stbox) RETURNS integer AS 'MODULE_PATHNAME', 'Stbox_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setSRID(stbox, integer) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_set_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform(stbox, integer) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_transform' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transformPipeline(stbox, text, srid integer DEFAULT 0, is_forward boolean DEFAULT true) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_transform_pipeline' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(stbox, integer DEFAULT 0) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(geometry, integer DEFAULT 0) RETURNS geometry AS 'MODULE_PATHNAME', 'Geo_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(geography, integer DEFAULT 0) RETURNS geography AS 'MODULE_PATHNAME', 'Geo_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION SRID(tgeompoint) RETURNS integer AS 'MODULE_PATHNAME', 'Tpoint_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION SRID(tgeogpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Tpoint_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setSRID(tgeompoint, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_set_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION setSRID(tgeogpoint, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_set_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform(tgeompoint, integer) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_transform' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transformPipeline(tgeompoint, text, srid integer DEFAULT 0, is_forward boolean DEFAULT true) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_transform_pipeline' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform(tgeogpoint, integer) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_transform' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transformPipeline(tgeogpoint, text, srid integer DEFAULT 0, is_forward boolean DEFAULT true) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_transform_pipeline' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- Gauss Kruger transformation CREATE FUNCTION transform_gk(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tgeompoint_transform_gk' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION transform_gk(geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'Geometry_transform_gk' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION tgeogpoint(tgeompoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tgeompoint_to_tgeogpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeompoint(tgeogpoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tgeogpoint_to_tgeompoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tgeompoint AS tgeogpoint) WITH FUNCTION tgeogpoint(tgeompoint); CREATE CAST (tgeogpoint AS tgeompoint) WITH FUNCTION tgeompoint(tgeogpoint); CREATE FUNCTION getX(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_x' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getX(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_x' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getY(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_y' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getY(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_y' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getZ(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_z' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getZ(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_get_z' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tgeompoint, integer DEFAULT 0) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tgeogpoint, integer DEFAULT 0) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tgeompoint[], integer DEFAULT 0) RETURNS tgeompoint[] AS 'MODULE_PATHNAME', 'Tpointarr_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tgeogpoint[], integer DEFAULT 0) RETURNS tgeogpoint[] AS 'MODULE_PATHNAME', 'Tpointarr_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION trajectory(tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_trajectory' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION trajectory(tgeogpoint) RETURNS geography AS 'MODULE_PATHNAME', 'Tpoint_trajectory' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION length(tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION length(tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION cumulativeLength(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_cumulative_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION cumulativeLength(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_cumulative_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION convexHull(tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_convex_hull' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION speed(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_speed' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION speed(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_speed' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION twCentroid(tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_twcentroid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION direction(tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_direction' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION direction(tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'Tpoint_direction' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION azimuth(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_azimuth' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION azimuth(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_azimuth' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION angularDifference(tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_angular_difference' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION angularDifference(tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tpoint_angular_difference' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ -- The following two functions are meant to be included in PostGIS one day CREATE FUNCTION bearing(geometry, geometry) RETURNS float AS 'MODULE_PATHNAME', 'Bearing_point_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(geography, geography) RETURNS float AS 'MODULE_PATHNAME', 'Bearing_point_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(geometry, tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Bearing_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(tgeompoint, geometry) RETURNS tfloat AS 'MODULE_PATHNAME', 'Bearing_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(tgeompoint, tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Bearing_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(geography, tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Bearing_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION bearing(tgeogpoint, geography) RETURNS tfloat AS 'MODULE_PATHNAME', 'Bearing_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- CREATE FUNCTION bearing(tgeogpoint, tgeogpoint) -- RETURNS tfloat -- AS 'MODULE_PATHNAME', 'Bearing_tpoint_tpoint' -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION isSimple(tgeompoint) RETURNS bool AS 'MODULE_PATHNAME', 'Tpoint_is_simple' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION makeSimple(tgeompoint) RETURNS tgeompoint[] AS 'MODULE_PATHNAME', 'Tpoint_make_simple' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION atGeometry(tgeompoint, geometry) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_at_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atGeometry(tgeompoint, geometry, floatspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_at_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atGeometryTime(tgeompoint, geometry, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_at_geom_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atGeometryTime(tgeompoint, geometry, floatspan, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_at_geom_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusGeometry(tgeompoint, geometry) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_minus_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusGeometry(tgeompoint, geometry, floatspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_minus_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusGeometryTime(tgeompoint, geometry, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_minus_geom_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusGeometryTime(tgeompoint, geometry, floatspan, tstzspan) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_minus_geom_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atStbox(tgeompoint, stbox) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_at_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atStbox(tgeogpoint, stbox) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_at_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusStbox(tgeompoint, stbox) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_minus_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusStbox(tgeogpoint, stbox) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Tpoint_minus_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_tile.sql * Functions for spatial and spatiotemporal tiles. */ /****************************************************************************** * Multidimensional tiling ******************************************************************************/ CREATE TYPE index_stbox AS ( index integer, tile stbox ); CREATE FUNCTION tileList(bounds stbox, xsize float, ysize float, zsize float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS SETOF index_stbox AS 'MODULE_PATHNAME', 'Stbox_tile_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tileList(bounds stbox, size float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS SETOF index_stbox AS 'SELECT @extschema@.tileList($1, $2, $2, $2, $3)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tileList(bounds stbox, xsize float, ysize float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS SETOF index_stbox AS 'SELECT @extschema@.tileList($1, $2, $3, $2, $4)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tileList(bounds stbox, xsize float, ysize float, zsize float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', timestamptz DEFAULT '2000-01-03') RETURNS SETOF index_stbox AS 'MODULE_PATHNAME', 'Stbox_tile_list' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tileList(bounds stbox, size float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', timestamptz DEFAULT '2000-01-03') RETURNS SETOF index_stbox AS 'SELECT @extschema@.tileList($1, $2, $2, $2, $3, $4, $5)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tileList(bounds stbox, xsize float, ysize float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', timestamptz DEFAULT '2000-01-03') RETURNS SETOF index_stbox AS 'SELECT @extschema@.tileList($1, $2, $3, $2, $4, $5, $6)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tile(point geometry, xsize float, ysize float, zsize float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_tile' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tile(point geometry, size float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS stbox AS 'SELECT @extschema@.tile($1, $2, $2, $2, $3)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tile(point geometry, xsize float, ysize float, sorigin geometry DEFAULT 'Point(0 0 0)') RETURNS stbox AS 'SELECT @extschema@.tile($1, $2, $3, $2, $4)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tile(point geometry, "time" timestamptz, xsize float, ysize float, zsize float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03') RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_tile' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tile(point geometry, "time" timestamptz, size float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03') RETURNS stbox AS 'SELECT @extschema@.tile($1, $2, $3, $3, $3, $4, $5, $6)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION tile(point geometry, "time" timestamptz, xsize float, ysize float, duration interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03') RETURNS stbox AS 'SELECT @extschema@.tile($1, $2, $3, $4, $3, $5, $6, $7)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; /*****************************************************************************/ CREATE TYPE point_tpoint AS ( point geometry, tpoint tgeompoint ); CREATE FUNCTION spaceSplit(tgeompoint, xsize float, ysize float, zsize float, sorigin geometry DEFAULT 'Point(0 0 0)', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_tpoint AS 'MODULE_PATHNAME', 'Tpoint_space_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION spaceSplit(tgeompoint, size float, sorigin geometry DEFAULT 'Point(0 0 0)', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_tpoint AS 'SELECT @extschema@.spaceSplit($1, $2, $2, $2, $3, $4)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION spaceSplit(tgeompoint, sizeX float, sizeY float, sorigin geometry DEFAULT 'Point(0 0 0)', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_tpoint AS 'SELECT @extschema@.spaceSplit($1, $2, $3, $2, $4, $5)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE TYPE point_time_tpoint AS ( point geometry, time timestamptz, tpoint tgeompoint ); CREATE FUNCTION spaceTimeSplit(tgeompoint, xsize float, ysize float, zsize float, interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_time_tpoint AS 'MODULE_PATHNAME', 'Tpoint_space_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION spaceTimeSplit(tgeompoint, size float, interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_time_tpoint AS 'SELECT @extschema@.spaceTimeSplit($1, $2, $2, $2, $3, $4, $5, $6)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; CREATE FUNCTION spaceTimeSplit(tgeompoint, xsize float, ysize float, interval, sorigin geometry DEFAULT 'Point(0 0 0)', torigin timestamptz DEFAULT '2000-01-03', bitmatrix boolean DEFAULT TRUE) RETURNS SETOF point_time_tpoint AS 'SELECT @extschema@.spaceTimeSplit($1, $2, $3, $2, $4, $5, $6, $7)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE STRICT; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_boxops.sql * Bounding box operators for temporal points. */ /***************************************************************************** * Casting *****************************************************************************/ CREATE FUNCTION stbox(tgeompoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(tgeogpoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tgeompoint AS stbox) WITH FUNCTION stbox(tgeompoint); CREATE CAST (tgeogpoint AS stbox) WITH FUNCTION stbox(tgeogpoint); /*****************************************************************************/ CREATE FUNCTION expandSpace(geometry, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandSpace(geography, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Geo_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandSpace(tgeompoint, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION expandSpace(tgeogpoint, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION stboxes(tgeompoint) RETURNS stbox[] AS 'MODULE_PATHNAME', 'Tpoint_stboxes' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Contains *****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tgeompoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeompoint, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tgeogpoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeogpoint, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = stbox, RIGHTARG = tgeompoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeompoint, RIGHTARG = stbox, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = stbox, RIGHTARG = tgeogpoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeogpoint, RIGHTARG = stbox, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = <@, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Contained *****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tgeompoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeompoint, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = stbox, RIGHTARG = tgeompoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeompoint, RIGHTARG = stbox, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tgeogpoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeogpoint, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = stbox, RIGHTARG = tgeogpoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeogpoint, RIGHTARG = stbox, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = @>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Overlaps *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tgeompoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeompoint, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = stbox, RIGHTARG = tgeompoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeompoint, RIGHTARG = stbox, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tgeogpoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeogpoint, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = stbox, RIGHTARG = tgeogpoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeogpoint, RIGHTARG = stbox, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = &&, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Same *****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tgeompoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeompoint, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = stbox, RIGHTARG = tgeompoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeompoint, RIGHTARG = stbox, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tgeogpoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeogpoint, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = stbox, RIGHTARG = tgeogpoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeogpoint, RIGHTARG = stbox, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = ~=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Adjacent *****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tgeompoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeompoint, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = stbox, RIGHTARG = tgeompoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeompoint, RIGHTARG = stbox, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tgeogpoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeogpoint, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = stbox, RIGHTARG = tgeogpoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeogpoint, RIGHTARG = stbox, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = -|-, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_posops.sql * Relative position operators for temporal geometry points. */ /***************************************************************************** * tstzspan *****************************************************************************/ /* tstzspan op tgeompoint */ CREATE FUNCTION temporal_before(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tgeompoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tgeompoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tgeompoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tgeompoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /* tstzspan op tgeogpoint */ CREATE FUNCTION temporal_before(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tgeogpoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tgeogpoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * Stbox *****************************************************************************/ CREATE FUNCTION temporal_left(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_front(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Front_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overfront(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overfront_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_back(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Back_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overback(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overback_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(stbox, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overleft, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overright, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_below, COMMUTATOR = |>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overbelow, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_above, COMMUTATOR = <<|, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overabove, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <</ ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_front, COMMUTATOR = />>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &</ ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overfront, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR />> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_back, COMMUTATOR = <</, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR /&> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overback, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_before(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(stbox, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = stbox, RIGHTARG = tgeogpoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = stbox, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = stbox, RIGHTARG = tgeogpoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = stbox, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * tgeompoint *****************************************************************************/ /* tgeompoint op tstzspan */ CREATE FUNCTION temporal_before(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tgeompoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tgeompoint, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeompoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeompoint, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeompoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /* tgeompoint op stbox */ CREATE FUNCTION temporal_left(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_front(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Front_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overfront(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overfront_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_back(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Back_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overback(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overback_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tgeompoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overleft, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overright, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_below, COMMUTATOR = |>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overbelow, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_above, COMMUTATOR = <<|, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overabove, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <</ ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_front, COMMUTATOR = />>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &</ ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overfront, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR />> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_back, COMMUTATOR = <</, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR /&> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overback, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /* tgeompoint op tgeompoint */ CREATE FUNCTION temporal_left(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_front(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Front_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overfront(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overfront_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_back(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Back_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overback(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overback_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(inst1 tgeompoint, inst2 tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_left, COMMUTATOR = >>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overleft, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_right, COMMUTATOR = <<, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overright, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_below, COMMUTATOR = |>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overbelow, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_above, COMMUTATOR = <<|, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overabove, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <</ ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_front, COMMUTATOR = />>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &</ ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overfront, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR />> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_back, COMMUTATOR = <</, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR /&> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overback, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /***************************************************************************** * tgeogpoint *****************************************************************************/ /* tgeogpoint op tstzspan */ CREATE FUNCTION temporal_before(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tgeogpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tgeogpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeogpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeogpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeogpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /* tgeogpoint op stbox */ CREATE FUNCTION temporal_before(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tgeogpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tgeogpoint, RIGHTARG = stbox, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeogpoint, RIGHTARG = stbox, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeogpoint, RIGHTARG = stbox, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeogpoint, RIGHTARG = stbox, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /* tgeogpoint op tgeogpoint */ CREATE FUNCTION temporal_before(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overbefore, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = temporal_overafter, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_distance.sql * Distance functions for temporal points. */ /***************************************************************************** * Distance functions *****************************************************************************/ CREATE FUNCTION tDistance(geometry(Point), tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tgeompoint, geometry(Point)) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tgeompoint, tgeompoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = geometry, RIGHTARG = tgeompoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tgeompoint, RIGHTARG = geometry, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tgeompoint, RIGHTARG = tgeompoint, COMMUTATOR = <-> ); /*****************************************************************************/ CREATE FUNCTION tDistance(geography(Point), tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_point_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tgeogpoint, geography(Point)) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tgeogpoint, tgeogpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = geography, RIGHTARG = tgeogpoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tgeogpoint, RIGHTARG = geography, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, COMMUTATOR = <-> ); /***************************************************************************** * Nearest approach instant/distance and shortest line functions *****************************************************************************/ CREATE FUNCTION nearestApproachInstant(geometry, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'NAI_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachInstant(tgeompoint, geometry) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'NAI_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachInstant(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'NAI_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachInstant(geography, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'NAI_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachInstant(tgeogpoint, geography) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'NAI_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachInstant(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'NAI_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(geometry, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeompoint, geometry) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(stbox, geometry) RETURNS float AS 'MODULE_PATHNAME', 'NAD_stbox_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(geometry, stbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_geo_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(stbox, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeompoint, stbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(stbox, stbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_stbox_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeompoint, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(geography, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeogpoint, geography) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(stbox, geography) RETURNS float AS 'MODULE_PATHNAME', 'NAD_stbox_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(geography, stbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_geo_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(stbox, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_stbox_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeogpoint, stbox) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tgeogpoint, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( LEFTARG = geometry, RIGHTARG = tgeompoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeompoint, RIGHTARG = geometry, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = stbox, RIGHTARG = geometry, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = geometry, RIGHTARG = stbox, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = stbox, RIGHTARG = tgeompoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeompoint, RIGHTARG = stbox, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = stbox, RIGHTARG = stbox, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeompoint, RIGHTARG = tgeompoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = geography, RIGHTARG = tgeogpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeogpoint, RIGHTARG = geography, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = stbox, RIGHTARG = geography, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = geography, RIGHTARG = stbox, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = stbox, RIGHTARG = tgeogpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeogpoint, RIGHTARG = stbox, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tgeogpoint, RIGHTARG = tgeogpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE FUNCTION shortestLine(geometry, tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tgeompoint, geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tgeompoint, tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(geography, tgeogpoint) RETURNS geography AS 'MODULE_PATHNAME', 'Shortestline_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tgeogpoint, geography) RETURNS geography AS 'MODULE_PATHNAME', 'Shortestline_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tgeogpoint, tgeogpoint) RETURNS geography AS 'MODULE_PATHNAME', 'Shortestline_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_similarity.sql * Similarity distance for temporal values. Currently, the discrete Hausdorff * distance, the discrete Frechet distance and the Dynamic Time Warping (DTW) * distance are implemented. */ CREATE FUNCTION frechetDistance(tgeompoint, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_frechet_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION frechetDistance(tgeogpoint, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_frechet_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION frechetDistancePath(tgeompoint, tgeompoint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_frechet_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION frechetDistancePath(tgeogpoint, tgeogpoint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_frechet_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION dynTimeWarpDistance(tgeompoint, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpDistance(tgeogpoint, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpPath(tgeompoint, tgeompoint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION dynTimeWarpPath(tgeogpoint, tgeogpoint) RETURNS SETOF warp AS 'MODULE_PATHNAME', 'Temporal_dyntimewarp_path' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION hausdorffDistance(tgeompoint, tgeompoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_hausdorff_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION hausdorffDistance(tgeogpoint, tgeogpoint) RETURNS float AS 'MODULE_PATHNAME', 'Temporal_hausdorff_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_aggfuncs.sql * Aggregate functions for temporal points. */ CREATE FUNCTION tpoint_extent_transfn(stbox, tgeompoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tpoint_extent_transfn(stbox, tgeogpoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_extent_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE extent(tgeompoint) ( SFUNC = tpoint_extent_transfn, STYPE = stbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = stbox_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); CREATE AGGREGATE extent(tgeogpoint) ( SFUNC = tpoint_extent_transfn, STYPE = stbox, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = stbox_extent_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 PARALLEL = safe ); /*****************************************************************************/ CREATE FUNCTION tcount_transfn(internal, tgeompoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcount_transfn(internal, tgeogpoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE tcount(tgeompoint) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE tcount(tgeogpoint) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE FUNCTION wcount_transfn(internal, tgeompoint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_wcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION wcount_transfn(internal, tgeogpoint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_wcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE wcount(tgeompoint, interval) ( SFUNC = wcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE AGGREGATE wcount(tgeogpoint, interval) ( SFUNC = wcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE FUNCTION tcentroid_transfn(internal, tgeompoint) RETURNS internal AS 'MODULE_PATHNAME', 'Tpoint_tcentroid_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcentroid_combinefn(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tpoint_tcentroid_combinefn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tcentroid_finalfn(internal) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tpoint_tcentroid_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE tcentroid(tgeompoint) ( SFUNC = tcentroid_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcentroid_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tcentroid_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION temporal_merge_transfn(internal, tgeompoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_merge_transfn(internal, tgeogpoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tgeompoint_tagg_finalfn(internal) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tgeogpoint_tagg_finalfn(internal) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE merge(tgeompoint) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tgeompoint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); CREATE AGGREGATE merge(tgeogpoint) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tgeogpoint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); /***************************************************************************** * Append tinstant aggregate functions *****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tgeompoint, tgeompoint, maxdist float DEFAULT NULL, maxt interval DEFAULT NULL) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tinst_transfn(tgeogpoint, tgeogpoint, maxdist float DEFAULT NULL, maxt interval DEFAULT NULL) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendInstant(tgeompoint) ( SFUNC = temporal_app_tinst_transfn, STYPE = tgeompoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tgeogpoint) ( SFUNC = temporal_app_tinst_transfn, STYPE = tgeogpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tgeompoint, float, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tgeompoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tgeogpoint, float, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tgeogpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tseq_transfn(tgeompoint, tgeompoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_app_tseq_transfn(tgeogpoint, tgeogpoint) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendSequence(tgeompoint) ( SFUNC = temporal_app_tseq_transfn, STYPE = tgeompoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendSequence(tgeogpoint) ( SFUNC = temporal_app_tseq_transfn, STYPE = tgeogpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * @file * @brief Spatial relationships for temporal points. * @note Index support for these functions is enabled */ /***************************************************************************** * eContains, aContains *****************************************************************************/ CREATE FUNCTION eContains(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Econtains_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aContains(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Acontains_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eDisjoint, aDisjoint *****************************************************************************/ -- TODO implement the index support in the tpoint_supportfn CREATE FUNCTION _edisjoint(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION edisjoint(geometry, tgeompoint) RETURNS boolean AS 'SELECT NOT(stbox($1) OPERATOR(@extschema@.&&) $2) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _edisjoint(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION edisjoint(tgeompoint, geometry) RETURNS boolean AS 'SELECT NOT($1 OPERATOR(@extschema@.&&) stbox($2)) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _edisjoint(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION edisjoint(tgeompoint, tgeompoint) RETURNS boolean AS 'SELECT NOT($1 OPERATOR(@extschema@.&&) $2) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(geometry, tgeompoint) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_geo_tpoint' -- SUPPORT tpoint_supportfn -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(tgeompoint, geometry) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_geo' -- SUPPORT tpoint_supportfn -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(tgeompoint, tgeompoint) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_tpoint' -- SUPPORT tpoint_supportfn -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ -- TODO implement the index support in the tpoint_supportfn CREATE FUNCTION _edisjoint(geography, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_geo_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(geography, tgeogpoint) RETURNS boolean AS 'SELECT NOT(stbox($1) OPERATOR(@extschema@.&&) $2) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _edisjoint(tgeogpoint, geography) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(tgeogpoint, geography) RETURNS boolean AS 'SELECT NOT($1 OPERATOR(@extschema@.&&) stbox($2)) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION _edisjoint(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(tgeogpoint, tgeogpoint) RETURNS boolean AS 'SELECT NOT($1 OPERATOR(@extschema@.&&) $2) OR @extschema@._edisjoint($1,$2)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(geography, tgeogpoint) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_geo_tpoint' -- SUPPORT tpoint_supportfn -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(tgeogpoint, geography) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_geo' -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- CREATE FUNCTION eDisjoint(tgeogpoint, tgeogpoint) -- RETURNS boolean -- AS 'MODULE_PATHNAME', 'Edisjoint_tpoint_tpoint' -- SUPPORT tpoint_supportfn -- LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(geography, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tgeogpoint, geography) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eIntersects, aIntersects *****************************************************************************/ CREATE FUNCTION eIntersects(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tgeompoint, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION eIntersects(geography, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tgeogpoint, geography) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(geography, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tgeogpoint, geography) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tgeogpoint, tgeogpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eTouches, aTouches *****************************************************************************/ CREATE FUNCTION eTouches(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eTouches(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aTouches(geometry, tgeompoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aTouches(tgeompoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eDwithin, aDwithin *****************************************************************************/ -- TODO implement the index support in the tpoint_supportfn CREATE FUNCTION eDwithin(geometry, tgeompoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tgeompoint, geometry, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tgeompoint, tgeompoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(geometry, tgeompoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(tgeompoint, geometry, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(tgeompoint, tgeompoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ -- TODO implement the index support in the tpoint_supportfn -- NOTE: aDWithin for geograhies is not provided since it is based on the -- PostGIS ST_Buffer() function which is performed by GEOS CREATE FUNCTION eDwithin(geography, tgeogpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_geo_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tgeogpoint, geography, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tpoint_geo' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tgeogpoint, tgeogpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(tgeogpoint, tgeogpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tpoint_tpoint' SUPPORT tpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_tempspatialrels.sql * Temporal spatial relationships for temporal points. */ /***************************************************************************** * tContains *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tContains(geometry, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tcontains_geo_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tDisjoint *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tDisjoint(geometry, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_geo_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDisjoint(tgeompoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_tpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- Alias for temporal not equals, that is, tpoint_tne or #<> CREATE FUNCTION tDisjoint(tgeompoint, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_tpoint_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDisjoint(tgeogpoint, tgeogpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_tpoint_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tIntersects *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tIntersects(geometry, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_geo_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tIntersects(tgeompoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_tpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- Alias for temporal equals, that is, tpoint_teq or #= CREATE FUNCTION tIntersects(tgeompoint, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_tpoint_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tIntersects(tgeogpoint, tgeogpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_tpoint_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tTouches *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tTouches(geometry, tgeompoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_geo_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tTouches(tgeompoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_tpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tDwithin *****************************************************************************/ CREATE FUNCTION tDwithin(geometry, tgeompoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_geo_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(tgeompoint, geometry, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_tpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(tgeompoint, tgeompoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_tpoint_tpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_gist.c * R-tree GiST index for temporal points. */ CREATE FUNCTION stbox_gist_consistent(internal, stbox, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Stbox_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gist_union(internal, internal) RETURNS stbox AS 'MODULE_PATHNAME', 'Stbox_gist_union' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gist_penalty(internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Stbox_gist_penalty' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gist_picksplit(internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Stbox_gist_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gist_same(stbox, stbox, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Stbox_gist_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_gist_distance(internal, stbox, smallint, oid, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Stbox_gist_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS stbox_rtree_ops DEFAULT FOR TYPE stbox USING gist AS STORAGE stbox, -- strictly left OPERATOR 1 << (stbox, stbox), OPERATOR 1 << (stbox, tgeompoint), -- overlaps or left OPERATOR 2 &< (stbox, stbox), OPERATOR 2 &< (stbox, tgeompoint), -- overlaps OPERATOR 3 && (stbox, stbox), OPERATOR 3 && (stbox, tgeompoint), OPERATOR 3 && (stbox, tgeogpoint), -- overlaps or right OPERATOR 4 &> (stbox, stbox), OPERATOR 4 &> (stbox, tgeompoint), -- strictly right OPERATOR 5 >> (stbox, stbox), OPERATOR 5 >> (stbox, tgeompoint), -- same OPERATOR 6 ~= (stbox, stbox), OPERATOR 6 ~= (stbox, tgeompoint), OPERATOR 6 ~= (stbox, tgeogpoint), -- contains OPERATOR 7 @> (stbox, stbox), OPERATOR 7 @> (stbox, tgeompoint), OPERATOR 7 @> (stbox, tgeogpoint), -- contained by OPERATOR 8 <@ (stbox, stbox), OPERATOR 8 <@ (stbox, tgeompoint), OPERATOR 8 <@ (stbox, tgeogpoint), -- overlaps or below OPERATOR 9 &<| (stbox, stbox), OPERATOR 9 &<| (stbox, tgeompoint), -- strictly below OPERATOR 10 <<| (stbox, stbox), OPERATOR 10 <<| (stbox, tgeompoint), -- strictly above OPERATOR 11 |>> (stbox, stbox), OPERATOR 11 |>> (stbox, tgeompoint), -- overlaps or above OPERATOR 12 |&> (stbox, stbox), OPERATOR 12 |&> (stbox, tgeompoint), -- adjacent OPERATOR 17 -|- (stbox, stbox), OPERATOR 17 -|- (stbox, tgeompoint), OPERATOR 17 -|- (stbox, tgeogpoint), -- nearest approach distance OPERATOR 25 |=| (stbox, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (stbox, tgeompoint) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (stbox, tgeogpoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (stbox, stbox), OPERATOR 28 &<# (stbox, tgeompoint), OPERATOR 28 &<# (stbox, tgeogpoint), -- strictly before OPERATOR 29 <<# (stbox, stbox), OPERATOR 29 <<# (stbox, tgeompoint), OPERATOR 29 <<# (stbox, tgeogpoint), -- strictly after OPERATOR 30 #>> (stbox, stbox), OPERATOR 30 #>> (stbox, tgeompoint), OPERATOR 30 #>> (stbox, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (stbox, stbox), OPERATOR 31 #&> (stbox, tgeompoint), OPERATOR 31 #&> (stbox, tgeogpoint), -- overlaps or front OPERATOR 32 &</ (stbox, stbox), OPERATOR 32 &</ (stbox, tgeompoint), -- strictly front OPERATOR 33 <</ (stbox, stbox), OPERATOR 33 <</ (stbox, tgeompoint), -- strictly back OPERATOR 34 />> (stbox, stbox), OPERATOR 34 />> (stbox, tgeompoint), -- overlaps or back OPERATOR 35 /&> (stbox, stbox), OPERATOR 35 /&> (stbox, tgeompoint), -- functions FUNCTION 1 stbox_gist_consistent(internal, stbox, smallint, oid, internal), FUNCTION 2 stbox_gist_union(internal, internal), FUNCTION 5 stbox_gist_penalty(internal, internal, internal), FUNCTION 6 stbox_gist_picksplit(internal, internal), FUNCTION 7 stbox_gist_same(stbox, stbox, internal), FUNCTION 8 stbox_gist_distance(internal, stbox, smallint, oid, internal); /******************************************************************************/ CREATE FUNCTION gist_tgeompoint_consistent(internal, tgeompoint, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Stbox_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION gist_tgeogpoint_consistent(internal, tgeogpoint, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Stbox_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_gist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tpoint_gist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS tgeompoint_rtree_ops DEFAULT FOR TYPE tgeompoint USING gist AS STORAGE stbox, -- strictly left OPERATOR 1 << (tgeompoint, stbox), OPERATOR 1 << (tgeompoint, tgeompoint), -- overlaps or left OPERATOR 2 &< (tgeompoint, stbox), OPERATOR 2 &< (tgeompoint, tgeompoint), -- overlaps OPERATOR 3 && (tgeompoint, tstzspan), OPERATOR 3 && (tgeompoint, stbox), OPERATOR 3 && (tgeompoint, tgeompoint), -- overlaps or right OPERATOR 4 &> (tgeompoint, stbox), OPERATOR 4 &> (tgeompoint, tgeompoint), -- strictly right OPERATOR 5 >> (tgeompoint, stbox), OPERATOR 5 >> (tgeompoint, tgeompoint), -- same OPERATOR 6 ~= (tgeompoint, tstzspan), OPERATOR 6 ~= (tgeompoint, stbox), OPERATOR 6 ~= (tgeompoint, tgeompoint), -- contains OPERATOR 7 @> (tgeompoint, tstzspan), OPERATOR 7 @> (tgeompoint, stbox), OPERATOR 7 @> (tgeompoint, tgeompoint), -- contained by OPERATOR 8 <@ (tgeompoint, tstzspan), OPERATOR 8 <@ (tgeompoint, stbox), OPERATOR 8 <@ (tgeompoint, tgeompoint), -- overlaps or below OPERATOR 9 &<| (tgeompoint, stbox), OPERATOR 9 &<| (tgeompoint, tgeompoint), -- strictly below OPERATOR 10 <<| (tgeompoint, stbox), OPERATOR 10 <<| (tgeompoint, tgeompoint), -- strictly above OPERATOR 11 |>> (tgeompoint, stbox), OPERATOR 11 |>> (tgeompoint, tgeompoint), -- overlaps or above OPERATOR 12 |&> (tgeompoint, stbox), OPERATOR 12 |&> (tgeompoint, tgeompoint), -- adjacent OPERATOR 17 -|- (tgeompoint, tstzspan), OPERATOR 17 -|- (tgeompoint, stbox), OPERATOR 17 -|- (tgeompoint, tgeompoint), -- nearest approach distance OPERATOR 25 |=| (tgeompoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeompoint, tgeompoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeompoint, tstzspan), OPERATOR 28 &<# (tgeompoint, stbox), OPERATOR 28 &<# (tgeompoint, tgeompoint), -- strictly before OPERATOR 29 <<# (tgeompoint, tstzspan), OPERATOR 29 <<# (tgeompoint, stbox), OPERATOR 29 <<# (tgeompoint, tgeompoint), -- strictly after OPERATOR 30 #>> (tgeompoint, tstzspan), OPERATOR 30 #>> (tgeompoint, stbox), OPERATOR 30 #>> (tgeompoint, tgeompoint), -- overlaps or after OPERATOR 31 #&> (tgeompoint, tstzspan), OPERATOR 31 #&> (tgeompoint, stbox), OPERATOR 31 #&> (tgeompoint, tgeompoint), -- overlaps or front OPERATOR 32 &</ (tgeompoint, stbox), OPERATOR 32 &</ (tgeompoint, tgeompoint), -- strictly front OPERATOR 33 <</ (tgeompoint, stbox), OPERATOR 33 <</ (tgeompoint, tgeompoint), -- strictly back OPERATOR 34 />> (tgeompoint, stbox), OPERATOR 34 />> (tgeompoint, tgeompoint), -- overlaps or back OPERATOR 35 /&> (tgeompoint, stbox), OPERATOR 35 /&> (tgeompoint, tgeompoint), -- functions FUNCTION 1 gist_tgeompoint_consistent(internal, tgeompoint, smallint, oid, internal), FUNCTION 2 stbox_gist_union(internal, internal), FUNCTION 3 tpoint_gist_compress(internal), FUNCTION 5 stbox_gist_penalty(internal, internal, internal), FUNCTION 6 stbox_gist_picksplit(internal, internal), FUNCTION 7 stbox_gist_same(stbox, stbox, internal), FUNCTION 8 stbox_gist_distance(internal, stbox, smallint, oid, internal); CREATE OPERATOR CLASS tgeogpoint_rtree_ops DEFAULT FOR TYPE tgeogpoint USING gist AS STORAGE stbox, -- overlaps OPERATOR 3 && (tgeogpoint, tstzspan), OPERATOR 3 && (tgeogpoint, stbox), OPERATOR 3 && (tgeogpoint, tgeogpoint), -- same OPERATOR 6 ~= (tgeogpoint, tstzspan), OPERATOR 6 ~= (tgeogpoint, stbox), OPERATOR 6 ~= (tgeogpoint, tgeogpoint), -- contains OPERATOR 7 @> (tgeogpoint, tstzspan), OPERATOR 7 @> (tgeogpoint, stbox), OPERATOR 7 @> (tgeogpoint, tgeogpoint), -- contained by OPERATOR 8 <@ (tgeogpoint, tstzspan), OPERATOR 8 <@ (tgeogpoint, stbox), OPERATOR 8 <@ (tgeogpoint, tgeogpoint), -- adjacent OPERATOR 17 -|- (tgeogpoint, tstzspan), OPERATOR 17 -|- (tgeogpoint, stbox), OPERATOR 17 -|- (tgeogpoint, tgeogpoint), -- distance OPERATOR 25 |=| (tgeogpoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeogpoint, tgeogpoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeogpoint, tstzspan), OPERATOR 28 &<# (tgeogpoint, stbox), OPERATOR 28 &<# (tgeogpoint, tgeogpoint), -- strictly before OPERATOR 29 <<# (tgeogpoint, tstzspan), OPERATOR 29 <<# (tgeogpoint, stbox), OPERATOR 29 <<# (tgeogpoint, tgeogpoint), -- strictly after OPERATOR 30 #>> (tgeogpoint, tstzspan), OPERATOR 30 #>> (tgeogpoint, stbox), OPERATOR 30 #>> (tgeogpoint, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (tgeogpoint, tstzspan), OPERATOR 31 #&> (tgeogpoint, stbox), OPERATOR 31 #&> (tgeogpoint, tgeogpoint), -- functions FUNCTION 1 gist_tgeogpoint_consistent(internal, tgeogpoint, smallint, oid, internal), FUNCTION 2 stbox_gist_union(internal, internal), FUNCTION 3 tpoint_gist_compress(internal), FUNCTION 5 stbox_gist_penalty(internal, internal, internal), FUNCTION 6 stbox_gist_picksplit(internal, internal), FUNCTION 7 stbox_gist_same(stbox, stbox, internal), FUNCTION 8 stbox_gist_distance(internal, stbox, smallint, oid, internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_spist.c * Oct-tree SP-GiST index for temporal points. */ CREATE FUNCTION stbox_spgist_config(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_spgist_config' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_quadtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_quadtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_quadtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_quadtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_quadtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_quadtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_spgist_leaf_consistent(internal, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Stbox_spgist_leaf_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tpoint_spgist_compress(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tpoint_spgist_compress' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS stbox_quadtree_ops DEFAULT FOR TYPE stbox USING spgist AS -- strictly left OPERATOR 1 << (stbox, stbox), OPERATOR 1 << (stbox, tgeompoint), -- overlaps or left OPERATOR 2 &< (stbox, stbox), OPERATOR 2 &< (stbox, tgeompoint), -- overlaps OPERATOR 3 && (stbox, stbox), OPERATOR 3 && (stbox, tgeompoint), OPERATOR 3 && (stbox, tgeogpoint), -- overlaps or right OPERATOR 4 &> (stbox, stbox), OPERATOR 4 &> (stbox, tgeompoint), -- strictly right OPERATOR 5 >> (stbox, stbox), OPERATOR 5 >> (stbox, tgeompoint), -- same OPERATOR 6 ~= (stbox, stbox), OPERATOR 6 ~= (stbox, tgeompoint), OPERATOR 6 ~= (stbox, tgeogpoint), -- contains OPERATOR 7 @> (stbox, stbox), OPERATOR 7 @> (stbox, tgeompoint), OPERATOR 7 @> (stbox, tgeogpoint), -- contained by OPERATOR 8 <@ (stbox, stbox), OPERATOR 8 <@ (stbox, tgeompoint), OPERATOR 8 <@ (stbox, tgeogpoint), -- overlaps or below OPERATOR 9 &<| (stbox, stbox), OPERATOR 9 &<| (stbox, tgeompoint), -- strictly below OPERATOR 10 <<| (stbox, stbox), OPERATOR 10 <<| (stbox, tgeompoint), -- strictly above OPERATOR 11 |>> (stbox, stbox), OPERATOR 11 |>> (stbox, tgeompoint), -- overlaps or above OPERATOR 12 |&> (stbox, stbox), OPERATOR 12 |&> (stbox, tgeompoint), -- adjacent OPERATOR 17 -|- (stbox, stbox), OPERATOR 17 -|- (stbox, tgeompoint), OPERATOR 17 -|- (stbox, tgeogpoint), -- overlaps or before OPERATOR 28 &<# (stbox, stbox), OPERATOR 28 &<# (stbox, tgeompoint), OPERATOR 28 &<# (stbox, tgeogpoint), -- strictly before OPERATOR 29 <<# (stbox, stbox), OPERATOR 29 <<# (stbox, tgeompoint), OPERATOR 29 <<# (stbox, tgeogpoint), -- strictly after OPERATOR 30 #>> (stbox, stbox), OPERATOR 30 #>> (stbox, tgeompoint), OPERATOR 30 #>> (stbox, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (stbox, stbox), OPERATOR 31 #&> (stbox, tgeompoint), OPERATOR 31 #&> (stbox, tgeogpoint), -- overlaps or front OPERATOR 32 &</ (stbox, stbox), OPERATOR 32 &</ (stbox, tgeompoint), -- strictly front OPERATOR 33 <</ (stbox, stbox), OPERATOR 33 <</ (stbox, tgeompoint), -- strictly back OPERATOR 34 />> (stbox, stbox), OPERATOR 34 />> (stbox, tgeompoint), -- overlaps or back OPERATOR 35 /&> (stbox, stbox), OPERATOR 35 /&> (stbox, tgeompoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_quadtree_choose(internal, internal), FUNCTION 3 stbox_quadtree_picksplit(internal, internal), FUNCTION 4 stbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal); /*****************************************************************************/ CREATE FUNCTION stbox_kdtree_choose(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_kdtree_choose' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_kdtree_picksplit(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_kdtree_picksplit' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox_kdtree_inner_consistent(internal, internal) RETURNS void AS 'MODULE_PATHNAME', 'Stbox_kdtree_inner_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS stbox_kdtree_ops FOR TYPE stbox USING spgist AS -- strictly left OPERATOR 1 << (stbox, stbox), OPERATOR 1 << (stbox, tgeompoint), -- overlaps or left OPERATOR 2 &< (stbox, stbox), OPERATOR 2 &< (stbox, tgeompoint), -- overlaps OPERATOR 3 && (stbox, stbox), OPERATOR 3 && (stbox, tgeompoint), OPERATOR 3 && (stbox, tgeogpoint), -- overlaps or right OPERATOR 4 &> (stbox, stbox), OPERATOR 4 &> (stbox, tgeompoint), -- strictly right OPERATOR 5 >> (stbox, stbox), OPERATOR 5 >> (stbox, tgeompoint), -- same OPERATOR 6 ~= (stbox, stbox), OPERATOR 6 ~= (stbox, tgeompoint), OPERATOR 6 ~= (stbox, tgeogpoint), -- contains OPERATOR 7 @> (stbox, stbox), OPERATOR 7 @> (stbox, tgeompoint), OPERATOR 7 @> (stbox, tgeogpoint), -- contained by OPERATOR 8 <@ (stbox, stbox), OPERATOR 8 <@ (stbox, tgeompoint), OPERATOR 8 <@ (stbox, tgeogpoint), -- overlaps or below OPERATOR 9 &<| (stbox, stbox), OPERATOR 9 &<| (stbox, tgeompoint), -- strictly below OPERATOR 10 <<| (stbox, stbox), OPERATOR 10 <<| (stbox, tgeompoint), -- strictly above OPERATOR 11 |>> (stbox, stbox), OPERATOR 11 |>> (stbox, tgeompoint), -- overlaps or above OPERATOR 12 |&> (stbox, stbox), OPERATOR 12 |&> (stbox, tgeompoint), -- adjacent OPERATOR 17 -|- (stbox, stbox), OPERATOR 17 -|- (stbox, tgeompoint), OPERATOR 17 -|- (stbox, tgeogpoint), -- overlaps or before OPERATOR 28 &<# (stbox, stbox), OPERATOR 28 &<# (stbox, tgeompoint), OPERATOR 28 &<# (stbox, tgeogpoint), -- strictly before OPERATOR 29 <<# (stbox, stbox), OPERATOR 29 <<# (stbox, tgeompoint), OPERATOR 29 <<# (stbox, tgeogpoint), -- strictly after OPERATOR 30 #>> (stbox, stbox), OPERATOR 30 #>> (stbox, tgeompoint), OPERATOR 30 #>> (stbox, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (stbox, stbox), OPERATOR 31 #&> (stbox, tgeompoint), OPERATOR 31 #&> (stbox, tgeogpoint), -- overlaps or front OPERATOR 32 &</ (stbox, stbox), OPERATOR 32 &</ (stbox, tgeompoint), -- strictly front OPERATOR 33 <</ (stbox, stbox), OPERATOR 33 <</ (stbox, tgeompoint), -- strictly back OPERATOR 34 />> (stbox, stbox), OPERATOR 34 />> (stbox, tgeompoint), -- overlaps or back OPERATOR 35 /&> (stbox, stbox), OPERATOR 35 /&> (stbox, tgeompoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_kdtree_choose(internal, internal), FUNCTION 3 stbox_kdtree_picksplit(internal, internal), FUNCTION 4 stbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal); /******************************************************************************/ CREATE OPERATOR CLASS tgeompoint_quadtree_ops DEFAULT FOR TYPE tgeompoint USING spgist AS -- strictly left OPERATOR 1 << (tgeompoint, stbox), OPERATOR 1 << (tgeompoint, tgeompoint), -- overlaps or left OPERATOR 2 &< (tgeompoint, stbox), OPERATOR 2 &< (tgeompoint, tgeompoint), -- overlaps OPERATOR 3 && (tgeompoint, tstzspan), OPERATOR 3 && (tgeompoint, stbox), OPERATOR 3 && (tgeompoint, tgeompoint), -- overlaps or right OPERATOR 4 &> (tgeompoint, stbox), OPERATOR 4 &> (tgeompoint, tgeompoint), -- strictly right OPERATOR 5 >> (tgeompoint, stbox), OPERATOR 5 >> (tgeompoint, tgeompoint), -- same OPERATOR 6 ~= (tgeompoint, tstzspan), OPERATOR 6 ~= (tgeompoint, stbox), OPERATOR 6 ~= (tgeompoint, tgeompoint), -- contains OPERATOR 7 @> (tgeompoint, tstzspan), OPERATOR 7 @> (tgeompoint, stbox), OPERATOR 7 @> (tgeompoint, tgeompoint), -- contained by OPERATOR 8 <@ (tgeompoint, tstzspan), OPERATOR 8 <@ (tgeompoint, stbox), OPERATOR 8 <@ (tgeompoint, tgeompoint), -- overlaps or below OPERATOR 9 &<| (tgeompoint, stbox), OPERATOR 9 &<| (tgeompoint, tgeompoint), -- strictly below OPERATOR 10 <<| (tgeompoint, stbox), OPERATOR 10 <<| (tgeompoint, tgeompoint), -- strictly above OPERATOR 11 |>> (tgeompoint, stbox), OPERATOR 11 |>> (tgeompoint, tgeompoint), -- overlaps or above OPERATOR 12 |&> (tgeompoint, stbox), OPERATOR 12 |&> (tgeompoint, tgeompoint), -- adjacent OPERATOR 17 -|- (tgeompoint, tstzspan), OPERATOR 17 -|- (tgeompoint, stbox), OPERATOR 17 -|- (tgeompoint, tgeompoint), -- nearest approach distance OPERATOR 25 |=| (tgeompoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeompoint, tgeompoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeompoint, tstzspan), OPERATOR 28 &<# (tgeompoint, stbox), OPERATOR 28 &<# (tgeompoint, tgeompoint), -- strictly before OPERATOR 29 <<# (tgeompoint, tstzspan), OPERATOR 29 <<# (tgeompoint, stbox), OPERATOR 29 <<# (tgeompoint, tgeompoint), -- strictly after OPERATOR 30 #>> (tgeompoint, tstzspan), OPERATOR 30 #>> (tgeompoint, stbox), OPERATOR 30 #>> (tgeompoint, tgeompoint), -- overlaps or after OPERATOR 31 #&> (tgeompoint, tstzspan), OPERATOR 31 #&> (tgeompoint, stbox), OPERATOR 31 #&> (tgeompoint, tgeompoint), -- overlaps or front OPERATOR 32 &</ (tgeompoint, stbox), OPERATOR 32 &</ (tgeompoint, tgeompoint), -- strictly front OPERATOR 33 <</ (tgeompoint, stbox), OPERATOR 33 <</ (tgeompoint, tgeompoint), -- strictly back OPERATOR 34 />> (tgeompoint, stbox), OPERATOR 34 />> (tgeompoint, tgeompoint), -- overlaps or back OPERATOR 35 /&> (tgeompoint, stbox), OPERATOR 35 /&> (tgeompoint, tgeompoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_quadtree_choose(internal, internal), FUNCTION 3 stbox_quadtree_picksplit(internal, internal), FUNCTION 4 stbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tgeompoint_kdtree_ops FOR TYPE tgeompoint USING spgist AS -- strictly left OPERATOR 1 << (tgeompoint, stbox), OPERATOR 1 << (tgeompoint, tgeompoint), -- overlaps or left OPERATOR 2 &< (tgeompoint, stbox), OPERATOR 2 &< (tgeompoint, tgeompoint), -- overlaps OPERATOR 3 && (tgeompoint, tstzspan), OPERATOR 3 && (tgeompoint, stbox), OPERATOR 3 && (tgeompoint, tgeompoint), -- overlaps or right OPERATOR 4 &> (tgeompoint, stbox), OPERATOR 4 &> (tgeompoint, tgeompoint), -- strictly right OPERATOR 5 >> (tgeompoint, stbox), OPERATOR 5 >> (tgeompoint, tgeompoint), -- same OPERATOR 6 ~= (tgeompoint, tstzspan), OPERATOR 6 ~= (tgeompoint, stbox), OPERATOR 6 ~= (tgeompoint, tgeompoint), -- contains OPERATOR 7 @> (tgeompoint, tstzspan), OPERATOR 7 @> (tgeompoint, stbox), OPERATOR 7 @> (tgeompoint, tgeompoint), -- contained by OPERATOR 8 <@ (tgeompoint, tstzspan), OPERATOR 8 <@ (tgeompoint, stbox), OPERATOR 8 <@ (tgeompoint, tgeompoint), -- overlaps or below OPERATOR 9 &<| (tgeompoint, stbox), OPERATOR 9 &<| (tgeompoint, tgeompoint), -- strictly below OPERATOR 10 <<| (tgeompoint, stbox), OPERATOR 10 <<| (tgeompoint, tgeompoint), -- strictly above OPERATOR 11 |>> (tgeompoint, stbox), OPERATOR 11 |>> (tgeompoint, tgeompoint), -- overlaps or above OPERATOR 12 |&> (tgeompoint, stbox), OPERATOR 12 |&> (tgeompoint, tgeompoint), -- adjacent OPERATOR 17 -|- (tgeompoint, tstzspan), OPERATOR 17 -|- (tgeompoint, stbox), OPERATOR 17 -|- (tgeompoint, tgeompoint), -- nearest approach distance OPERATOR 25 |=| (tgeompoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeompoint, tgeompoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeompoint, tstzspan), OPERATOR 28 &<# (tgeompoint, stbox), OPERATOR 28 &<# (tgeompoint, tgeompoint), -- strictly before OPERATOR 29 <<# (tgeompoint, tstzspan), OPERATOR 29 <<# (tgeompoint, stbox), OPERATOR 29 <<# (tgeompoint, tgeompoint), -- strictly after OPERATOR 30 #>> (tgeompoint, tstzspan), OPERATOR 30 #>> (tgeompoint, stbox), OPERATOR 30 #>> (tgeompoint, tgeompoint), -- overlaps or after OPERATOR 31 #&> (tgeompoint, tstzspan), OPERATOR 31 #&> (tgeompoint, stbox), OPERATOR 31 #&> (tgeompoint, tgeompoint), -- overlaps or front OPERATOR 32 &</ (tgeompoint, stbox), OPERATOR 32 &</ (tgeompoint, tgeompoint), -- strictly front OPERATOR 33 <</ (tgeompoint, stbox), OPERATOR 33 <</ (tgeompoint, tgeompoint), -- strictly back OPERATOR 34 />> (tgeompoint, stbox), OPERATOR 34 />> (tgeompoint, tgeompoint), -- overlaps or back OPERATOR 35 /&> (tgeompoint, stbox), OPERATOR 35 /&> (tgeompoint, tgeompoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_kdtree_choose(internal, internal), FUNCTION 3 stbox_kdtree_picksplit(internal, internal), FUNCTION 4 stbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tgeogpoint_quadtree_ops DEFAULT FOR TYPE tgeogpoint USING spgist AS -- overlaps OPERATOR 3 && (tgeogpoint, tstzspan), OPERATOR 3 && (tgeogpoint, stbox), OPERATOR 3 && (tgeogpoint, tgeogpoint), -- same OPERATOR 6 ~= (tgeogpoint, tstzspan), OPERATOR 6 ~= (tgeogpoint, stbox), OPERATOR 6 ~= (tgeogpoint, tgeogpoint), -- contains OPERATOR 7 @> (tgeogpoint, tstzspan), OPERATOR 7 @> (tgeogpoint, stbox), OPERATOR 7 @> (tgeogpoint, tgeogpoint), -- contained by OPERATOR 8 <@ (tgeogpoint, tstzspan), OPERATOR 8 <@ (tgeogpoint, stbox), OPERATOR 8 <@ (tgeogpoint, tgeogpoint), -- adjacent OPERATOR 17 -|- (tgeogpoint, tstzspan), OPERATOR 17 -|- (tgeogpoint, stbox), OPERATOR 17 -|- (tgeogpoint, tgeogpoint), -- nearest approach distance OPERATOR 25 |=| (tgeogpoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeogpoint, tgeogpoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeogpoint, tstzspan), OPERATOR 28 &<# (tgeogpoint, stbox), OPERATOR 28 &<# (tgeogpoint, tgeogpoint), -- strictly before OPERATOR 29 <<# (tgeogpoint, tstzspan), OPERATOR 29 <<# (tgeogpoint, stbox), OPERATOR 29 <<# (tgeogpoint, tgeogpoint), -- strictly after OPERATOR 30 #>> (tgeogpoint, tstzspan), OPERATOR 30 #>> (tgeogpoint, stbox), OPERATOR 30 #>> (tgeogpoint, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (tgeogpoint, tstzspan), OPERATOR 31 #&> (tgeogpoint, stbox), OPERATOR 31 #&> (tgeogpoint, tgeogpoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_quadtree_choose(internal, internal), FUNCTION 3 stbox_quadtree_picksplit(internal, internal), FUNCTION 4 stbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tgeogpoint_kdtree_ops FOR TYPE tgeogpoint USING spgist AS -- overlaps OPERATOR 3 && (tgeogpoint, tstzspan), OPERATOR 3 && (tgeogpoint, tgeogpoint), -- same OPERATOR 6 ~= (tgeogpoint, tstzspan), OPERATOR 6 ~= (tgeogpoint, stbox), OPERATOR 6 ~= (tgeogpoint, tgeogpoint), -- contains OPERATOR 7 @> (tgeogpoint, tstzspan), OPERATOR 7 @> (tgeogpoint, stbox), OPERATOR 7 @> (tgeogpoint, tgeogpoint), -- contained by OPERATOR 8 <@ (tgeogpoint, tstzspan), OPERATOR 8 <@ (tgeogpoint, stbox), OPERATOR 8 <@ (tgeogpoint, tgeogpoint), -- adjacent OPERATOR 17 -|- (tgeogpoint, tstzspan), OPERATOR 17 -|- (tgeogpoint, stbox), OPERATOR 17 -|- (tgeogpoint, tgeogpoint), -- nearest approach distance OPERATOR 25 |=| (tgeogpoint, stbox) FOR ORDER BY pg_catalog.float_ops, OPERATOR 25 |=| (tgeogpoint, tgeogpoint) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tgeogpoint, tstzspan), OPERATOR 28 &<# (tgeogpoint, stbox), OPERATOR 28 &<# (tgeogpoint, tgeogpoint), -- strictly before OPERATOR 29 <<# (tgeogpoint, tstzspan), OPERATOR 29 <<# (tgeogpoint, stbox), OPERATOR 29 <<# (tgeogpoint, tgeogpoint), -- strictly after OPERATOR 30 #>> (tgeogpoint, tstzspan), OPERATOR 30 #>> (tgeogpoint, stbox), OPERATOR 30 #>> (tgeogpoint, tgeogpoint), -- overlaps or after OPERATOR 31 #&> (tgeogpoint, tstzspan), OPERATOR 31 #&> (tgeogpoint, stbox), OPERATOR 31 #&> (tgeogpoint, tgeogpoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_kdtree_choose(internal, internal), FUNCTION 3 stbox_kdtree_picksplit(internal, internal), FUNCTION 4 stbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_analytics.sql * Analytic functions for temporal points. */ /*****************************************************************************/ -- There are two versions of the functions since the single-argument version -- is required for defining the casting CREATE FUNCTION geometry(tgeompoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geometry(tgeompoint, boolean DEFAULT FALSE) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tgeompoint AS geometry) WITH FUNCTION geometry(tgeompoint); CREATE FUNCTION geography(tgeogpoint) RETURNS geography AS 'MODULE_PATHNAME', 'Tpoint_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geography(tgeogpoint, boolean DEFAULT FALSE) RETURNS geography AS 'MODULE_PATHNAME', 'Tpoint_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tgeogpoint AS geography) WITH FUNCTION geography(tgeogpoint); CREATE FUNCTION tgeompoint(geometry) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Geomeas_to_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (geometry AS tgeompoint) WITH FUNCTION tgeompoint(geometry); CREATE FUNCTION tgeogpoint(geography) RETURNS tgeogpoint AS 'MODULE_PATHNAME', 'Geomeas_to_tpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (geography AS tgeogpoint) WITH FUNCTION tgeogpoint(geography); /*****************************************************************************/ CREATE FUNCTION geoMeasure(tgeompoint, tfloat, boolean DEFAULT FALSE) RETURNS geometry AS 'MODULE_PATHNAME', 'Tpoint_tfloat_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION geoMeasure(tgeogpoint, tfloat, boolean DEFAULT FALSE) RETURNS geography AS 'MODULE_PATHNAME', 'Tpoint_tfloat_to_geomeas' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ CREATE FUNCTION minDistSimplify(tfloat, float) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_simplify_min_dist' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minDistSimplify(tgeompoint, float) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_min_dist' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minDistSimplify(tgeogpoint, float) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_min_dist' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minTimeDeltaSimplify(tfloat, interval) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_simplify_min_tdelta' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minTimeDeltaSimplify(tgeompoint, interval) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_min_tdelta' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minTimeDeltaSimplify(tgeogpoint, interval) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_min_tdelta' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxDistSimplify(tfloat, float, boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_simplify_max_dist' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION maxDistSimplify(tgeompoint, float, boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_max_dist' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION douglasPeuckerSimplify(tfloat, float, boolean DEFAULT TRUE) RETURNS tfloat AS 'MODULE_PATHNAME', 'Temporal_simplify_dp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION douglasPeuckerSimplify(tgeompoint, float, boolean DEFAULT TRUE) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Temporal_simplify_dp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE geom_times AS ( geom geometry, times bigint[] ); CREATE FUNCTION asMVTGeom(tpoint tgeompoint, bounds stbox, extent int4 DEFAULT 4096, buffer int4 DEFAULT 256, clip bool DEFAULT TRUE) -- RETURNS tgeompoint RETURNS geom_times AS 'MODULE_PATHNAME','Tpoint_AsMVTGeom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tpoint_datagen.sql * Data generator for MobilityDB. */ CREATE FUNCTION create_trip(record[], timestamptz, boolean, text) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Create_trip' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_static.sql * Network-based static point and segment types */ CREATE TYPE npoint; CREATE TYPE nsegment; /****************************************************************************** * Input/Output ******************************************************************************/ CREATE FUNCTION npoint_in(cstring) RETURNS npoint AS 'MODULE_PATHNAME', 'Npoint_in' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION npoint_out(npoint) RETURNS cstring AS 'MODULE_PATHNAME', 'Npoint_out' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION npoint_recv(internal) RETURNS npoint AS 'MODULE_PATHNAME', 'Npoint_recv' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION npoint_send(npoint) RETURNS bytea AS 'MODULE_PATHNAME', 'Npoint_send' LANGUAGE C IMMUTABLE STRICT; CREATE TYPE npoint ( internallength = 16, input = npoint_in, output = npoint_out, receive = npoint_recv, send = npoint_send, alignment = double ); CREATE FUNCTION nsegment_in(cstring) RETURNS nsegment AS 'MODULE_PATHNAME', 'Nsegment_in' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION nsegment_out(nsegment) RETURNS cstring AS 'MODULE_PATHNAME', 'Nsegment_out' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION nsegment_recv(internal) RETURNS nsegment AS 'MODULE_PATHNAME', 'Nsegment_recv' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION nsegment_send(nsegment) RETURNS bytea AS 'MODULE_PATHNAME', 'Nsegment_send' LANGUAGE C IMMUTABLE STRICT; CREATE TYPE nsegment ( internallength = 24, input = nsegment_in, output = nsegment_out, receive = nsegment_recv, send = nsegment_send, alignment = double ); /****************************************************************************** * Constructors ******************************************************************************/ CREATE FUNCTION npoint(bigint, double precision) RETURNS npoint AS 'MODULE_PATHNAME', 'Npoint_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment(bigint, double precision DEFAULT 0, double precision DEFAULT 1) RETURNS nsegment AS 'MODULE_PATHNAME', 'Nsegment_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment(npoint) RETURNS nsegment AS 'MODULE_PATHNAME', 'Npoint_to_nsegment' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (npoint AS nsegment) WITH FUNCTION nsegment(npoint); /***************************************************************************** * Accessing values *****************************************************************************/ CREATE FUNCTION route(npoint) RETURNS bigint AS 'MODULE_PATHNAME', 'Npoint_route' LANGUAGE C IMMUTABLE STRICT; -- position is a reserved word in SQL CREATE FUNCTION getPosition(npoint) RETURNS double precision AS 'MODULE_PATHNAME', 'Npoint_position' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION srid(npoint) RETURNS integer AS 'MODULE_PATHNAME', 'Npoint_get_srid' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION route(nsegment) RETURNS bigint AS 'MODULE_PATHNAME', 'Nsegment_route' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION startPosition(nsegment) RETURNS double precision AS 'MODULE_PATHNAME', 'Nsegment_start_position' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION endPosition(nsegment) RETURNS double precision AS 'MODULE_PATHNAME', 'Nsegment_end_position' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION srid(nsegment) RETURNS integer AS 'MODULE_PATHNAME', 'Nsegment_get_srid' LANGUAGE C IMMUTABLE STRICT; /***************************************************************************** * Modification functions *****************************************************************************/ CREATE FUNCTION round(npoint, integer DEFAULT 0) RETURNS npoint AS 'MODULE_PATHNAME', 'Npoint_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(nsegment, integer DEFAULT 0) RETURNS nsegment AS 'MODULE_PATHNAME', 'Nsegment_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Conversions between network and space *****************************************************************************/ CREATE FUNCTION geometry(npoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Npoint_to_geom' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION npoint(geometry) RETURNS npoint AS 'MODULE_PATHNAME', 'Geom_to_npoint' LANGUAGE C IMMUTABLE STRICT; CREATE CAST (npoint AS geometry) WITH FUNCTION geometry(npoint); CREATE CAST (geometry AS npoint) WITH FUNCTION npoint(geometry); CREATE FUNCTION geometry(nsegment) RETURNS geometry AS 'MODULE_PATHNAME', 'Nsegment_to_geom' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION nsegment(geometry) RETURNS nsegment AS 'MODULE_PATHNAME', 'Geom_to_nsegment' LANGUAGE C IMMUTABLE STRICT; CREATE CAST (nsegment AS geometry) WITH FUNCTION geometry(nsegment); CREATE CAST (geometry AS nsegment) WITH FUNCTION nsegment(geometry); /****************************************************************************** * Operators ******************************************************************************/ CREATE FUNCTION npoint_eq(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_ne(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_lt(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_le(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_ge(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_gt(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npoint_cmp(npoint, npoint) RETURNS int4 AS 'MODULE_PATHNAME', 'Npoint_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( PROCEDURE = npoint_eq, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = npoint_ne, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( PROCEDURE = npoint_lt, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = >, NEGATOR = >=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR <= ( PROCEDURE = npoint_le, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = >=, NEGATOR = >, RESTRICT = scalarlesel, JOIN = scalarlejoinsel ); CREATE OPERATOR >= ( PROCEDURE = npoint_ge, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = <=, NEGATOR = <, RESTRICT = scalargesel, JOIN = scalargejoinsel ); CREATE OPERATOR > ( PROCEDURE = npoint_gt, LEFTARG = npoint, RIGHTARG = npoint, COMMUTATOR = <, NEGATOR = <=, RESTRICT = scalargtsel, JOIN = scalargtjoinsel ); CREATE OPERATOR CLASS npoint_btree_ops DEFAULT FOR TYPE npoint USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 npoint_cmp(npoint, npoint); /******************************************************************************/ CREATE FUNCTION nsegment_eq(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_ne(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_lt(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_le(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_ge(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_gt(nsegment, nsegment) RETURNS boolean AS 'MODULE_PATHNAME', 'Nsegment_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nsegment_cmp(nsegment, nsegment) RETURNS int4 AS 'MODULE_PATHNAME', 'Nsegment_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( PROCEDURE = nsegment_eq, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( PROCEDURE = nsegment_ne, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( PROCEDURE = nsegment_lt, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = >, NEGATOR = >=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR <= ( PROCEDURE = nsegment_le, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = >=, NEGATOR = >, RESTRICT = scalarlesel, JOIN = scalarlejoinsel ); CREATE OPERATOR >= ( PROCEDURE = nsegment_ge, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = <=, NEGATOR = <, RESTRICT = scalargesel, JOIN = scalargejoinsel ); CREATE OPERATOR > ( PROCEDURE = nsegment_gt, LEFTARG = nsegment, RIGHTARG = nsegment, COMMUTATOR = <, NEGATOR = <=, RESTRICT = scalargtsel, JOIN = scalargtjoinsel ); CREATE OPERATOR CLASS nsegment_btree_ops DEFAULT FOR TYPE nsegment USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 nsegment_cmp(nsegment, nsegment); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * set.sql * Functions for set of ordered values. */ /****************************************************************************** * Input/Output ******************************************************************************/ CREATE TYPE npointset; CREATE FUNCTION npointset_in(cstring) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npointset_out(npointset) RETURNS cstring AS 'MODULE_PATHNAME', 'Set_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npointset_recv(internal) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npointset_send(npointset) RETURNS bytea AS 'MODULE_PATHNAME', 'Set_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE npointset ( internallength = variable, input = npointset_in, output = npointset_out, receive = npointset_recv, send = npointset_send, alignment = double, storage = extended -- , analyze = geoset_analyze ); /******************************************************************************/ -- Input/output in WKB and HexWKB format CREATE FUNCTION npointsetFromBinary(bytea) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION npointsetFromHexWKB(text) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(npointset, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Set_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(npointset, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Set_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructor ******************************************************************************/ CREATE FUNCTION set(npoint[]) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Casting ******************************************************************************/ CREATE FUNCTION set(npoint) RETURNS npointset AS 'MODULE_PATHNAME', 'Value_to_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (npoint AS npointset) WITH FUNCTION set(npoint); CREATE FUNCTION stbox(npointset) RETURNS stbox AS 'MODULE_PATHNAME', 'Npointset_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (npointset AS stbox) WITH FUNCTION stbox(npointset); /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION round(npointset, integer DEFAULT 0) RETURNS npointset AS 'MODULE_PATHNAME', 'Npointset_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION memSize(npointset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numValues(npointset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_num_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(npointset) RETURNS npoint AS 'MODULE_PATHNAME', 'Set_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(npointset) RETURNS npoint AS 'MODULE_PATHNAME', 'Set_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueN(npointset, integer) RETURNS npoint AS 'MODULE_PATHNAME', 'Set_value_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION getValues(npointset) RETURNS npoint[] AS 'MODULE_PATHNAME', 'Set_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Transformation set of values <-> set ******************************************************************************/ CREATE FUNCTION unnest(npointset) RETURNS SETOF npoint AS 'MODULE_PATHNAME', 'Set_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ -- The function is not STRICT CREATE FUNCTION set_union_transfn(internal, npoint) RETURNS internal AS 'MODULE_PATHNAME', 'Value_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION set_union_transfn(internal, npointset) RETURNS internal AS 'MODULE_PATHNAME', 'Set_union_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION npointset_union_finalfn(internal) RETURNS npointset AS 'MODULE_PATHNAME', 'Set_union_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE setUnion(npoint) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = npointset_union_finalfn ); CREATE AGGREGATE setUnion(npointset) ( SFUNC = set_union_transfn, STYPE = internal, FINALFUNC = npointset_union_finalfn ); /****************************************************************************** * Comparison functions and B-tree indexing ******************************************************************************/ CREATE FUNCTION set_eq(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ne(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_lt(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_le(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_ge(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_gt(npointset, npointset) RETURNS bool AS 'MODULE_PATHNAME', 'Set_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_cmp(npointset, npointset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR = ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR < ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_lt, COMMUTATOR = >, NEGATOR = >= -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <= ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_le, COMMUTATOR = >=, NEGATOR = > -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR >= ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_ge, COMMUTATOR = <=, NEGATOR = < -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR > ( LEFTARG = npointset, RIGHTARG = npointset, PROCEDURE = set_gt, COMMUTATOR = <, NEGATOR = <= -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR CLASS npointset_btree_ops DEFAULT FOR TYPE npointset USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 set_cmp(npointset, npointset); /******************************************************************************/ CREATE FUNCTION set_hash(npointset) RETURNS integer AS 'MODULE_PATHNAME', 'Set_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_hash_extended(npointset, bigint) RETURNS bigint AS 'MODULE_PATHNAME', 'Set_hash_extended' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS npointset_hash_ops DEFAULT FOR TYPE npointset USING hash AS OPERATOR 1 = , FUNCTION 1 set_hash(npointset), FUNCTION 2 set_hash_extended(npointset, bigint); /****************************************************************************** * Operators ******************************************************************************/ CREATE FUNCTION set_contains(npointset, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contains(npointset, npointset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = npointset, RIGHTARG = npoint, COMMUTATOR = <@ -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR @> ( PROCEDURE = set_contains, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = <@ -- RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_contained(npoint, npointset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_contained(npointset, npointset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = npoint, RIGHTARG = npointset, COMMUTATOR = @> -- RESTRICT = span_sel, JOIN = span_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = set_contained, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = @> -- RESTRICT = span_sel, JOIN = span_joinsel ); /******************************************************************************/ CREATE FUNCTION set_overlaps(npointset, npointset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = set_overlaps, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = && -- RESTRICT = span_sel, JOIN = span_joinsel ); /*****************************************************************************/ CREATE FUNCTION set_union(npoint, npointset) RETURNS npointset AS 'MODULE_PATHNAME', 'Union_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(npointset, npoint) RETURNS npointset AS 'MODULE_PATHNAME', 'Union_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_union(npointset, npointset) RETURNS npointset AS 'MODULE_PATHNAME', 'Union_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = npoint, RIGHTARG = npointset, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = npointset, RIGHTARG = npoint, COMMUTATOR = + ); CREATE OPERATOR + ( PROCEDURE = set_union, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = + ); /*****************************************************************************/ CREATE FUNCTION set_minus(npoint, npointset) RETURNS npoint AS 'MODULE_PATHNAME', 'Minus_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(npointset, npoint) RETURNS npointset AS 'MODULE_PATHNAME', 'Minus_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_minus(npointset, npointset) RETURNS npointset AS 'MODULE_PATHNAME', 'Minus_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = npoint, RIGHTARG = npointset ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = npointset, RIGHTARG = npoint ); CREATE OPERATOR - ( PROCEDURE = set_minus, LEFTARG = npointset, RIGHTARG = npointset ); /*****************************************************************************/ CREATE FUNCTION set_intersection(npoint, npointset) RETURNS npoint AS 'MODULE_PATHNAME', 'Intersection_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(npointset, npoint) RETURNS npoint AS 'MODULE_PATHNAME', 'Intersection_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_intersection(npointset, npointset) RETURNS npointset AS 'MODULE_PATHNAME', 'Intersection_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = npoint, RIGHTARG = npointset, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = npointset, RIGHTARG = npoint, COMMUTATOR = * ); CREATE OPERATOR * ( PROCEDURE = set_intersection, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = * ); /*****************************************************************************/ CREATE FUNCTION set_distance(npoint, npointset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_value_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(npointset, npoint) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION set_distance(npointset, npointset) RETURNS float AS 'MODULE_PATHNAME', 'Distance_set_set' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = npoint, RIGHTARG = npointset, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = npointset, RIGHTARG = npoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = set_distance, LEFTARG = npointset, RIGHTARG = npointset, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint.sql * Basic functions for temporal network points. */ CREATE TYPE tnpoint; /****************************************************************************** * Input/Output ******************************************************************************/ CREATE FUNCTION tnpoint_in(cstring, oid, integer) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_in' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION Temporal_out(tnpoint) RETURNS cstring AS 'MODULE_PATHNAME', 'Temporal_out' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint_recv(internal, oid, integer) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_recv' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_send(tnpoint) RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_send' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint_analyze(internal) RETURNS boolean AS 'MODULE_PATHNAME', 'Tnpoint_analyze' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE TYPE tnpoint ( internallength = variable, input = tnpoint_in, output = temporal_out, receive = tnpoint_recv, send = temporal_send, typmod_in = temporal_typmod_in, typmod_out = temporal_typmod_out, storage = extended, alignment = double, analyze = tnpoint_analyze ); -- Special cast for enforcing the typmod restrictions CREATE FUNCTION tnpoint(tnpoint, integer) RETURNS tnpoint AS 'MODULE_PATHNAME','Temporal_enforce_typmod' LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tnpoint AS tnpoint) WITH FUNCTION tnpoint(tnpoint, integer) AS IMPLICIT; -- Input/output in WKT, WKB and HexWKB format CREATE FUNCTION tnpointFromBinary(bytea) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_from_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpointFromHexWKB(text) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_from_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tnpoint, maxdecimaldigits int4 DEFAULT 15) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asText(tnpoint[], maxdecimaldigits int4 DEFAULT 15) RETURNS text[] AS 'MODULE_PATHNAME', 'Temporalarr_as_text' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asBinary(tnpoint, endianenconding text DEFAULT '') RETURNS bytea AS 'MODULE_PATHNAME', 'Temporal_as_wkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION asHexWKB(tnpoint, endianenconding text DEFAULT '') RETURNS text AS 'MODULE_PATHNAME', 'Temporal_as_hexwkb' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Constructors ******************************************************************************/ CREATE FUNCTION tnpoint(npoint, timestamptz) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tinstant_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint(npoint, tstzset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint(npoint, tstzspan, text DEFAULT 'linear') RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequence_from_base_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint(npoint, tstzspanset, text DEFAULT 'linear') RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequenceset_from_base_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE FUNCTION tnpointSeq(tnpoint[], text DEFAULT 'linear', lower_inc boolean DEFAULT true, upper_inc boolean DEFAULT true) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequence_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpointSeqSet(tnpoint[]) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tnpointSeqSetGaps(tnpoint[], maxt interval DEFAULT NULL, maxdist float DEFAULT NULL, text DEFAULT 'linear') RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tsequenceset_constructor_gaps' LANGUAGE C IMMUTABLE PARALLEL SAFE; /****************************************************************************** * Cast functions ******************************************************************************/ CREATE FUNCTION tgeompoint(tnpoint) RETURNS tgeompoint AS 'MODULE_PATHNAME', 'Tnpoint_to_tgeompoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint(tgeompoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tgeompoint_to_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timeSpan(tnpoint) RETURNS tstzspan AS 'MODULE_PATHNAME', 'Temporal_to_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (tnpoint AS tgeompoint) WITH FUNCTION tgeompoint(tnpoint); CREATE CAST (tgeompoint AS tnpoint) WITH FUNCTION tnpoint(tgeompoint); CREATE CAST (tnpoint AS tstzspan) WITH FUNCTION timeSpan(tnpoint); /****************************************************************************** * Transformation functions ******************************************************************************/ CREATE FUNCTION tnpointInst(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_to_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tnpointSeq(tnpoint, text) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequence' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tnpointSeq(tnpoint) RETURNS tnpoint AS 'SELECT @extschema@.tnpointSeq($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tnpointSeqSet(tnpoint, text) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_to_tsequenceset' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not strict CREATE FUNCTION tnpointSeqSet(tnpoint) RETURNS tnpoint AS 'SELECT @extschema@.tnpointSeqSet($1, NULL)' LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE FUNCTION setInterp(tnpoint, text) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_set_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION round(tnpoint, integer DEFAULT 0) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_round' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Append functions ******************************************************************************/ CREATE FUNCTION appendInstant(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_append_tinstant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION appendSequence(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_append_tsequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_merge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION merge(tnpoint[]) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_merge_array' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Accessor functions ******************************************************************************/ CREATE FUNCTION tempSubtype(tnpoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_subtype' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION interp(tnpoint) RETURNS text AS 'MODULE_PATHNAME', 'Temporal_interp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION memSize(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_mem_size' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- value is a reserved word in SQL CREATE FUNCTION getValue(tnpoint) RETURNS npoint AS 'MODULE_PATHNAME', 'Tinstant_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- values is a reserved word in SQL CREATE FUNCTION getValues(tnpoint) RETURNS npointset AS 'MODULE_PATHNAME', 'Temporal_valueset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION positions(tnpoint) RETURNS nsegment[] AS 'MODULE_PATHNAME', 'Tnpoint_positions' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION route(tnpoint) RETURNS bigint AS 'MODULE_PATHNAME', 'Tnpoint_route' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION routes(tnpoint) RETURNS bigintset AS 'MODULE_PATHNAME', 'Tnpoint_routes' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- time is a reserved word in SQL CREATE FUNCTION getTime(tnpoint) RETURNS tstzspanset AS 'MODULE_PATHNAME', 'Temporal_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- timestamp is a reserved word in SQL CREATE FUNCTION getTimestamp(tnpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Tinstant_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startValue(tnpoint) RETURNS npoint AS 'MODULE_PATHNAME', 'Temporal_start_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endValue(tnpoint) RETURNS npoint AS 'MODULE_PATHNAME', 'Temporal_end_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION duration(tnpoint, boundspan boolean DEFAULT FALSE) RETURNS interval AS 'MODULE_PATHNAME', 'Temporal_duration' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION lowerInc(tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lower_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION upperInc(tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_upper_inc' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numInstants(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startInstant(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_start_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endInstant(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_end_instant' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instantN(tnpoint, integer) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_instant_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION instants(tnpoint) RETURNS tnpoint[] AS 'MODULE_PATHNAME', 'Temporal_instants' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numTimestamps(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startTimestamp(tnpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_start_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endTimestamp(tnpoint) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_end_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestampN(tnpoint, integer) RETURNS timestamptz AS 'MODULE_PATHNAME', 'Temporal_timestamptz_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION timestamps(tnpoint) RETURNS timestamptz[] AS 'MODULE_PATHNAME', 'Temporal_timestamps' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION numSequences(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_num_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION startSequence(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_start_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION endSequence(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_end_sequence' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequenceN(tnpoint, integer) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_sequence_n' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sequences(tnpoint) RETURNS tnpoint[] AS 'MODULE_PATHNAME', 'Temporal_sequences' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION segments(tnpoint) RETURNS tnpoint[] AS 'MODULE_PATHNAME', 'Temporal_segments' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Transformation functions *****************************************************************************/ CREATE FUNCTION shiftTime(tnpoint, interval) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_shift_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION scaleTime(tnpoint, interval) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shiftScaleTime(tnpoint, interval, interval) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_shift_scale_time' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Unnest Function *****************************************************************************/ CREATE TYPE npoint_tstzspanset AS ( value npoint, time tstzspanset ); CREATE FUNCTION unnest(tnpoint) RETURNS SETOF npoint_tstzspanset AS 'MODULE_PATHNAME', 'Temporal_unnest' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Index Support Functions *****************************************************************************/ CREATE FUNCTION tnpoint_supportfn(internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnpoint_supportfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Ever/Always Comparison Functions *****************************************************************************/ CREATE FUNCTION ever_eq(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?= ( LEFTARG = tnpoint, RIGHTARG = npoint, PROCEDURE = ever_eq, NEGATOR = %<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_eq(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_eq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %= ( LEFTARG = tnpoint, RIGHTARG = npoint, PROCEDURE = always_eq, NEGATOR = ?<>, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION ever_ne(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Ever_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?<> ( LEFTARG = tnpoint, RIGHTARG = npoint, PROCEDURE = ever_ne, NEGATOR = %=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); CREATE FUNCTION always_ne(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Always_ne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR %<> ( LEFTARG = tnpoint, RIGHTARG = npoint, PROCEDURE = always_ne, NEGATOR = ?=, RESTRICT = tpoint_sel, JOIN = tpoint_joinsel ); /****************************************************************************** * Restriction functions ******************************************************************************/ CREATE FUNCTION atValues(tnpoint, npoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tnpoint, npoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atValues(tnpoint, npointset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusValues(tnpoint, npointset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_values' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tnpoint, timestamptz) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tnpoint, timestamptz) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION valueAtTimestamp(tnpoint, timestamptz) RETURNS npoint AS 'MODULE_PATHNAME', 'Temporal_value_at_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tnpoint, tstzset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tnpoint, tstzset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tnpoint, tstzspan) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tnpoint, tstzspan) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION atTime(tnpoint, tstzspanset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_at_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusTime(tnpoint, tstzspanset) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_minus_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Stop Function *****************************************************************************/ CREATE FUNCTION stops(tnpoint, maxdist float DEFAULT 0.0, minduration interval DEFAULT '0 minutes') RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_stops' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Modification Functions *****************************************************************************/ CREATE FUNCTION insert(tnpoint, tnpoint, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION update(tnpoint, tnpoint, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_update' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tnpoint, timestamptz, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_delete_timestamptz' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tnpoint, tstzset, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tnpoint, tstzspan, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION deleteTime(tnpoint, tstzspanset, connect boolean DEFAULT TRUE) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_delete_tstzspanset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /****************************************************************************** * Multidimensional tiling ******************************************************************************/ CREATE TYPE time_tnpoint AS ( time timestamptz, temp tnpoint ); CREATE FUNCTION timeSplit(tnpoint, bucket_width interval, origin timestamptz DEFAULT '2000-01-03') RETURNS setof time_tnpoint AS 'MODULE_PATHNAME', 'Temporal_time_split' LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT; /****************************************************************************** * Comparison functions and B-tree indexing ******************************************************************************/ CREATE FUNCTION temporal_lt(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_lt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_le(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_le' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_eq(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ne(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ne' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_ge(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_ge' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_gt(tnpoint, tnpoint) RETURNS bool AS 'MODULE_PATHNAME', 'Temporal_gt' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_cmp(tnpoint, tnpoint) RETURNS int4 AS 'MODULE_PATHNAME', 'Temporal_cmp' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR < ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_lt, COMMUTATOR = >, NEGATOR = >=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR <= ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_le, COMMUTATOR = >=, NEGATOR = >, RESTRICT = scalarltsel, JOIN = scalarltjoinsel ); CREATE OPERATOR = ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_eq, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel ); CREATE OPERATOR <> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_ne, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel ); CREATE OPERATOR >= ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_ge, COMMUTATOR = <=, NEGATOR = <, RESTRICT = scalargtsel, JOIN = scalargtjoinsel ); CREATE OPERATOR > ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_gt, COMMUTATOR = <, NEGATOR = <=, RESTRICT = scalargtsel, JOIN = scalargtjoinsel ); CREATE OPERATOR CLASS tnpoint_btree_ops DEFAULT FOR TYPE tnpoint USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 temporal_cmp(tnpoint, tnpoint); /******************************************************************************/ CREATE FUNCTION temporal_hash(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Temporal_hash' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR CLASS tnpoint_hash_ops DEFAULT FOR TYPE tnpoint USING hash AS OPERATOR 1 = , FUNCTION 1 temporal_hash(tnpoint); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_compops.sql * Comparison functions and operators for temporal network points. */ /***************************************************************************** * Temporal equal *****************************************************************************/ CREATE FUNCTION temporal_teq(npoint, tnpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tnpoint, npoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_teq(tnpoint, tnpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Teq_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = npoint, RIGHTARG = tnpoint, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tnpoint, RIGHTARG = npoint, COMMUTATOR = #= ); CREATE OPERATOR #= ( PROCEDURE = temporal_teq, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = #= ); /***************************************************************************** * Temporal not equal *****************************************************************************/ CREATE FUNCTION temporal_tne(npoint, tnpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_base_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tnpoint, npoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_base' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_tne(tnpoint, tnpoint) RETURNS tbool AS 'MODULE_PATHNAME', 'Tne_temporal_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = npoint, RIGHTARG = tnpoint, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tnpoint, RIGHTARG = npoint, COMMUTATOR = #<> ); CREATE OPERATOR #<> ( PROCEDURE = temporal_tne, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = #<> ); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_spatialfuncs.sql * Geometric functions for temporal network points. */ /***************************************************************************** * SRID *****************************************************************************/ CREATE FUNCTION SRID(tnpoint) RETURNS integer AS 'MODULE_PATHNAME', 'Tnpoint_get_srid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Trajectory *****************************************************************************/ CREATE FUNCTION trajectory(tnpoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tnpoint_trajectory' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * AtGeometry and MinusGeometry *****************************************************************************/ CREATE FUNCTION atGeometry(tnpoint, geometry) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_at_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- This function is not STRICT CREATE FUNCTION atGeometryTime(tnpoint, geometry, tstzspan) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_at_geom_time' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION minusGeometry(tnpoint, geometry) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_minus_geom' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- This function is not STRICT CREATE FUNCTION minusGeometryTime(tnpoint, geometry, tstzspan) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_minus_geom_time' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION atStbox(tnpoint, stbox) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_at_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION minusStbox(tnpoint, stbox) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Tnpoint_minus_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Equals *****************************************************************************/ CREATE FUNCTION same(npoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Npoint_same' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Length *****************************************************************************/ CREATE FUNCTION length(tnpoint) RETURNS double precision AS 'MODULE_PATHNAME', 'Tnpoint_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Cumulative length *****************************************************************************/ CREATE FUNCTION cumulativeLength(tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnpoint_cumulative_length' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Speed *****************************************************************************/ CREATE FUNCTION speed(tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnpoint_speed' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Time-weighted centroid *****************************************************************************/ CREATE FUNCTION twCentroid(tnpoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Tnpoint_twcentroid' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Temporal azimuth *****************************************************************************/ CREATE FUNCTION azimuth(tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Tnpoint_azimuth' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Nearest approach instant *****************************************************************************/ CREATE FUNCTION NearestApproachInstant(geometry, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'NAI_geo_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachInstant(tnpoint, geometry) RETURNS tnpoint AS 'MODULE_PATHNAME', 'NAI_tnpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachInstant(npoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'NAI_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachInstant(tnpoint, npoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'NAI_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachInstant(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'NAI_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Nearest approach distance *****************************************************************************/ CREATE FUNCTION nearestApproachDistance(geometry, tnpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_geo_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tnpoint, geometry) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachDistance(npoint, tnpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION NearestApproachDistance(tnpoint, npoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION nearestApproachDistance(tnpoint, tnpoint) RETURNS float AS 'MODULE_PATHNAME', 'NAD_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR |=| ( LEFTARG = geometry, RIGHTARG = tnpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tnpoint, RIGHTARG = geometry, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = npoint, RIGHTARG = tnpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tnpoint, RIGHTARG = npoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); CREATE OPERATOR |=| ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = nearestApproachDistance, COMMUTATOR = '|=|' ); /***************************************************************************** * Shortest line *****************************************************************************/ CREATE FUNCTION shortestLine(geometry, tnpoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_geo_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tnpoint, geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_tnpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(npoint, tnpoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tnpoint, npoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION shortestLine(tnpoint, tnpoint) RETURNS geometry AS 'MODULE_PATHNAME', 'Shortestline_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_boxops.sql * Bounding box operators for temporal network points. */ /*****************************************************************************/ CREATE FUNCTION tnpoint_sel(internal, oid, internal, integer) RETURNS float AS 'MODULE_PATHNAME', 'Tnpoint_sel' LANGUAGE C IMMUTABLE STRICT; CREATE FUNCTION tnpoint_joinsel(internal, oid, internal, smallint, internal) RETURNS float AS 'MODULE_PATHNAME', 'Tnpoint_joinsel' LANGUAGE C IMMUTABLE STRICT; /***************************************************************************** * Temporal npoint to stbox *****************************************************************************/ CREATE FUNCTION stbox(npoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Npoint_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(nsegment) RETURNS stbox AS 'MODULE_PATHNAME', 'Nsegment_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(npoint, timestamptz) RETURNS stbox AS 'MODULE_PATHNAME', 'Npoint_timestamptz_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(npoint, tstzspan) RETURNS stbox AS 'MODULE_PATHNAME', 'Npoint_tstzspan_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION stbox(tnpoint) RETURNS stbox AS 'MODULE_PATHNAME', 'Tnpoint_to_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE CAST (npoint AS stbox) WITH FUNCTION stbox(npoint); CREATE CAST (nsegment AS stbox) WITH FUNCTION stbox(nsegment); CREATE CAST (tnpoint AS stbox) WITH FUNCTION stbox(tnpoint); /*****************************************************************************/ CREATE FUNCTION expandSpace(tnpoint, float) RETURNS stbox AS 'MODULE_PATHNAME', 'Tpoint_expand_space' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * Contains *****************************************************************************/ CREATE FUNCTION temporal_contains(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tstzspan, RIGHTARG = tnpoint, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tnpoint, RIGHTARG = tstzspan, COMMUTATOR = <@, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contains(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = stbox, RIGHTARG = tnpoint, COMMUTATOR = <@, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION temporal_contains(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contains(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tnpoint, RIGHTARG = stbox, COMMUTATOR = <@, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @> ( PROCEDURE = temporal_contains, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = <@, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Contained *****************************************************************************/ CREATE FUNCTION temporal_contained(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tstzspan, RIGHTARG = tnpoint, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tnpoint, RIGHTARG = tstzspan, COMMUTATOR = @>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_contained(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = stbox, RIGHTARG = tnpoint, COMMUTATOR = @>, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION temporal_contained(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_contained(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tnpoint, RIGHTARG = stbox, COMMUTATOR = @>, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <@ ( PROCEDURE = temporal_contained, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = @>, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Overlaps *****************************************************************************/ CREATE FUNCTION temporal_overlaps(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tstzspan, RIGHTARG = tnpoint, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tnpoint, RIGHTARG = tstzspan, COMMUTATOR = &&, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_overlaps(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = stbox, RIGHTARG = tnpoint, COMMUTATOR = &&, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION temporal_overlaps(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overlaps(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tnpoint, RIGHTARG = stbox, COMMUTATOR = &&, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR && ( PROCEDURE = temporal_overlaps, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = &&, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Same *****************************************************************************/ CREATE FUNCTION temporal_same(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tstzspan, RIGHTARG = tnpoint, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tnpoint, RIGHTARG = tstzspan, COMMUTATOR = ~=, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_same(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = stbox, RIGHTARG = tnpoint, COMMUTATOR = ~=, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION temporal_same(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_same(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tnpoint, RIGHTARG = stbox, COMMUTATOR = ~=, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR ~= ( PROCEDURE = temporal_same, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = ~=, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * adjacent *****************************************************************************/ CREATE FUNCTION temporal_adjacent(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tstzspan, RIGHTARG = tnpoint, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tnpoint, RIGHTARG = tstzspan, COMMUTATOR = -|-, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ CREATE FUNCTION temporal_adjacent(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = stbox, RIGHTARG = tnpoint, COMMUTATOR = -|-, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION temporal_adjacent(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_adjacent(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adjacent_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tnpoint, RIGHTARG = stbox, COMMUTATOR = -|-, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR -|- ( PROCEDURE = temporal_adjacent, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = -|-, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_posops.sql * Relative position operators for temporal network points. */ /***************************************************************************** * tstzspan *****************************************************************************/ /* tstzspan op tnpoint */ CREATE FUNCTION temporal_before(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tstzspan, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tstzspan_temporal' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tstzspan, RIGHTARG = tnpoint, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tstzspan, RIGHTARG = tnpoint, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tstzspan, RIGHTARG = tnpoint, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tstzspan, RIGHTARG = tnpoint, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /***************************************************************************** * stbox *****************************************************************************/ CREATE FUNCTION temporal_left(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(stbox, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_stbox_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_left, COMMUTATOR = '>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overleft, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_right, COMMUTATOR = '<<', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overright, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_below, COMMUTATOR = '|>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overbelow, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_above, COMMUTATOR = '<<|', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overabove, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_before, COMMUTATOR = '#>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overbefore, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_after, COMMUTATOR = '<<#', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = stbox, RIGHTARG = tnpoint, PROCEDURE = temporal_overafter, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * tnpoint *****************************************************************************/ /* tnpoint op tstzspan */ CREATE FUNCTION temporal_before(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'After_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tnpoint, tstzspan) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_temporal_tstzspan' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <<# ( LEFTARG = tnpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_before, COMMUTATOR = #>>, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tnpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overbefore, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tnpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_after, COMMUTATOR = <<#, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tnpoint, RIGHTARG = tstzspan, PROCEDURE = temporal_overafter, RESTRICT = temporal_sel, JOIN = temporal_joinsel ); /*****************************************************************************/ /* tnpoint op stbox */ CREATE FUNCTION temporal_left(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tnpoint, stbox) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnpoint_stbox' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_left, COMMUTATOR = '>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overleft, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_right, COMMUTATOR = '<<', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overright, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_below, COMMUTATOR = '|>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overbelow, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_above, COMMUTATOR = '<<|', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overabove, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_before, COMMUTATOR = '#>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overbefore, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_after, COMMUTATOR = '<<#', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tnpoint, RIGHTARG = stbox, PROCEDURE = temporal_overafter, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /*****************************************************************************/ /* tnpoint op tnpoint */ CREATE FUNCTION temporal_left(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Left_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overleft(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overleft_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_right(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Right_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overright(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overright_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_below(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Below_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbelow(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbelow_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_above(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Above_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overabove(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overabove_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_before(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Before_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overbefore(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overbefore_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_after(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'After_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION temporal_overafter(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overafter_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR << ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_left, COMMUTATOR = '>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &< ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overleft, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR >> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_right, COMMUTATOR = '<<', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overright, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<| ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_below, COMMUTATOR = '|>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<| ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overbelow, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |>> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_above, COMMUTATOR = '<<|', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR |&> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overabove, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR <<# ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_before, COMMUTATOR = '#>>', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR &<# ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overbefore, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #>> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_after, COMMUTATOR = '<<#', RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR #&> ( LEFTARG = tnpoint, RIGHTARG = tnpoint, PROCEDURE = temporal_overafter, RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_routeops.sql * Route operators for temporal network points. */ /*****************************************************************************/ -- CREATE FUNCTION tnpoint_sel(internal, oid, internal, integer) -- RETURNS float -- AS 'MODULE_PATHNAME', 'Tnpoint_sel' -- LANGUAGE C IMMUTABLE STRICT; -- CREATE FUNCTION tnpoint_joinsel(internal, oid, internal, smallint, internal) -- RETURNS float -- AS 'MODULE_PATHNAME', 'Tnpoint_joinsel' -- LANGUAGE C IMMUTABLE STRICT; /***************************************************************************** * Overlaps *****************************************************************************/ CREATE FUNCTION overlaps_rid(bigintset, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_rid_bigintset_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @@ ( PROCEDURE = overlaps_rid, LEFTARG = bigintset, RIGHTARG = tnpoint, COMMUTATOR = @@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION overlaps_rid(tnpoint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_rid_tnpoint_bigintset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION overlaps_rid(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Overlaps_rid_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @@ ( PROCEDURE = overlaps_rid, LEFTARG = tnpoint, RIGHTARG = bigintset, COMMUTATOR = @@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @@ ( PROCEDURE = overlaps_rid, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = @@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Contains *****************************************************************************/ CREATE FUNCTION contains_rid(bigintset, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_rid_bigintset_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @? ( PROCEDURE = contains_rid, LEFTARG = bigintset, RIGHTARG = tnpoint, COMMUTATOR = ?@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION contains_rid(tnpoint, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_rid_tnpoint_bigint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contains_rid(tnpoint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_rid_tnpoint_bigintset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contains_rid(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_rid_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contains_rid(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contains_rid_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @? ( PROCEDURE = contains_rid, LEFTARG = tnpoint, RIGHTARG = bigint, COMMUTATOR = ?@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @? ( PROCEDURE = contains_rid, LEFTARG = tnpoint, RIGHTARG = bigintset, COMMUTATOR = ?@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @? ( PROCEDURE = contains_rid, LEFTARG = tnpoint, RIGHTARG = npoint, COMMUTATOR = ?@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @? ( PROCEDURE = contains_rid, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = ?@ -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Contained *****************************************************************************/ CREATE FUNCTION contained_rid(bigint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_rid_bigint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contained_rid(bigintset, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_rid_bigintset_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contained_rid(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_rid_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?@ ( PROCEDURE = contained_rid, LEFTARG = bigint, RIGHTARG = tnpoint, COMMUTATOR = @? -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR ?@ ( PROCEDURE = contained_rid, LEFTARG = bigintset, RIGHTARG = tnpoint, COMMUTATOR = @? -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR ?@ ( PROCEDURE = contained_rid, LEFTARG = npoint, RIGHTARG = tnpoint, COMMUTATOR = @? -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION contained_rid(tnpoint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_rid_tnpoint_bigintset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION contained_rid(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Contained_rid_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ?@ ( PROCEDURE = contained_rid, LEFTARG = tnpoint, RIGHTARG = bigintset, COMMUTATOR = @? -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR ?@ ( PROCEDURE = contained_rid, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = @? -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /***************************************************************************** * Same *****************************************************************************/ CREATE FUNCTION same_rid(bigint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_bigint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION same_rid(bigintset, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_bigintset_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION same_rid(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = bigint, RIGHTARG = tnpoint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = bigintset, RIGHTARG = tnpoint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = npoint, RIGHTARG = tnpoint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE FUNCTION same_rid(tnpoint, bigint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_tnpoint_bigint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION same_rid(tnpoint, bigintset) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_tnpoint_bigintset' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION same_rid(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION same_rid(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Same_rid_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = tnpoint, RIGHTARG = bigint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = tnpoint, RIGHTARG = bigintset, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = tnpoint, RIGHTARG = npoint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); CREATE OPERATOR @= ( PROCEDURE = same_rid, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = @= -- , RESTRICT = tnpoint_sel, JOIN = tnpoint_joinsel ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * tnpoint_gin.sql * GIN index for temporal network points */ /******************************************************************************/ CREATE FUNCTION tnpoint_gin_extract_value(bigint, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnpoint_gin_extract_value' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint_gin_extract_query(bigint, internal, int2, internal, internal, internal, internal) RETURNS internal AS 'MODULE_PATHNAME', 'Tnpoint_gin_extract_query' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tnpoint_gin_triconsistent(internal, int2, bigint, int4, internal, internal, internal) RETURNS char AS 'MODULE_PATHNAME', 'Set_gin_triconsistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tnpoint_gin_ops DEFAULT FOR TYPE tnpoint USING gin AS STORAGE bigint, -- overlap set OPERATOR 10 @@ (tnpoint, bigintset), -- overlap tnpoint OPERATOR 11 @@ (tnpoint, tnpoint), -- contains value OPERATOR 20 @? (tnpoint, bigint), -- contains set OPERATOR 21 @? (tnpoint, bigintset), -- contains tnpoint OPERATOR 22 @? (tnpoint, tnpoint), -- contained set OPERATOR 30 ?@ (tnpoint, bigintset), -- contained tnpoint OPERATOR 31 ?@ (tnpoint, tnpoint), -- equal set OPERATOR 40 @= (tnpoint, bigintset), -- equal tnpoint OPERATOR 41 @= (tnpoint, tnpoint), -- functions FUNCTION 2 tnpoint_gin_extract_value(bigint, internal), FUNCTION 3 tnpoint_gin_extract_query(bigint, internal, int2, internal, internal, internal, internal), FUNCTION 6 tnpoint_gin_triconsistent(internal, int2, bigint, int4, internal, internal, internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_distance.sql * Temporal distance for temporal network points. */ CREATE FUNCTION tDistance(geometry(Point), tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_point_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(npoint, tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tnpoint, geometry(Point)) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tnpoint_point' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tnpoint, npoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION tDistance(tnpoint, tnpoint) RETURNS tfloat AS 'MODULE_PATHNAME', 'Distance_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = geometry, RIGHTARG = tnpoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = npoint, RIGHTARG = tnpoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tnpoint, RIGHTARG = geometry, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tnpoint, RIGHTARG = npoint, COMMUTATOR = <-> ); CREATE OPERATOR <-> ( PROCEDURE = tDistance, LEFTARG = tnpoint, RIGHTARG = tnpoint, COMMUTATOR = <-> ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_aggfuncs.sql * Aggregate functions for temporal network points. */ CREATE FUNCTION tcount_transfn(internal, tnpoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_tcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE tcount(tnpoint) ( SFUNC = tcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcount_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE FUNCTION wcount_transfn(internal, tnpoint, interval) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_wcount_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE wcount(tnpoint, interval) ( SFUNC = wcount_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tint_tsum_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); CREATE FUNCTION tcentroid_transfn(internal, tnpoint) RETURNS internal AS 'MODULE_PATHNAME', 'Tnpoint_tcentroid_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE tcentroid(tnpoint) ( SFUNC = tcentroid_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = tcentroid_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tcentroid_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = SAFE ); /*****************************************************************************/ CREATE FUNCTION temporal_merge_transfn(internal, tnpoint) RETURNS internal AS 'MODULE_PATHNAME', 'Temporal_merge_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tnpoint_tagg_finalfn(internal) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_tagg_finalfn' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE merge(tnpoint) ( SFUNC = temporal_merge_transfn, STYPE = internal, -- if POSTGRESQL_VERSION_NUMBER >= 130000 COMBINEFUNC = temporal_merge_combinefn, -- endif POSTGRESQL_VERSION_NUMBER >= 130000 FINALFUNC = tnpoint_tagg_finalfn, SERIALFUNC = taggstate_serialize, DESERIALFUNC = taggstate_deserialize, PARALLEL = safe ); /***************************************************************************** * Append tinstant aggregate functions *****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; -- The function is not STRICT CREATE FUNCTION temporal_app_tinst_transfn(tnpoint, tnpoint, maxdist float DEFAULT NULL, maxt interval DEFAULT NULL) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_app_tinst_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION temporal_append_finalfn(tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_append_finalfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendInstant(tnpoint) ( SFUNC = temporal_app_tinst_transfn, STYPE = tnpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); CREATE AGGREGATE appendInstant(tnpoint, float, interval) ( SFUNC = temporal_app_tinst_transfn, STYPE = tnpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ -- The function is not STRICT CREATE FUNCTION temporal_app_tseq_transfn(tnpoint, tnpoint) RETURNS tnpoint AS 'MODULE_PATHNAME', 'Temporal_app_tseq_transfn' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE AGGREGATE appendSequence(tnpoint) ( SFUNC = temporal_app_tseq_transfn, STYPE = tnpoint, FINALFUNC = temporal_append_finalfn, PARALLEL = safe ); /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * @file * @brief Spatial relationships for temporal network points * * These relationships are generalized to the temporal dimension with the * "at any instant" semantics, that is, the traditional operator is applied to * the union of all values taken by the temporal npoint and returns a Boolean. * The following relationships are supported: * eContains, aContains, eDisjoint, aDisjoint, eIntersects, aIntersects, * eTouches, aTouches, eDwithin, and aDwithin * All these relationships, excepted eDisjoint, will automatically * include a bounding box comparison that will make use of any spatial, * temporal, or spatiotemporal indexes that are available. */ /***************************************************************************** * eContains, aContains *****************************************************************************/ CREATE FUNCTION eContains(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Econtains_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aContains(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Acontains_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eDisjoint, aDisjoint *****************************************************************************/ CREATE FUNCTION eDisjoint(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_geo_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tnpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDisjoint(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Edisjoint_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_geo_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tnpoint_geo' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDisjoint(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Adisjoint_tnpoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eIntersects, aIntersects *****************************************************************************/ CREATE FUNCTION _eintersects(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(npoint, tnpoint) RETURNS boolean AS 'SELECT stbox($1) OPERATOR(@extschema@.&&) $2 AND @extschema@._eintersects($1,$2)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aIntersects(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _eintersects(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tnpoint, npoint) RETURNS boolean AS 'SELECT $1 OPERATOR(@extschema@.&&) stbox($2) AND @extschema@._eintersects($1,$2)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aIntersects(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eIntersects(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Eintersects_tnpoint_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aIntersects(tnpoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Aintersects_tnpoint_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eTouches, aTouches *****************************************************************************/ CREATE FUNCTION _eTouches(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eTouches(npoint, tnpoint) RETURNS boolean AS 'SELECT stbox($1) OPERATOR(@extschema@.&&) $2 AND @extschema@._etouches($1,$2)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aTouches(npoint, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _eTouches(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eTouches(tnpoint, npoint) RETURNS boolean AS 'SELECT $1 OPERATOR(@extschema@.&&) stbox($2) AND @extschema@._etouches($1,$2)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aTouches(tnpoint, npoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eTouches(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eTouches(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Etouches_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aTouches(geometry, tnpoint) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aTouches(tnpoint, geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'Atouches_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /***************************************************************************** * eDwithin, aDwithin *****************************************************************************/ CREATE FUNCTION _eDwithin(npoint, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(npoint, tnpoint, dist float) RETURNS boolean AS 'SELECT @extschema@.expandSpace(stbox($1),$3) OPERATOR(@extschema@.&&) $2 AND @extschema@._edwithin($1, $2, $3)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aDwithin(npoint, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_npoint_tnpoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION _eDwithin(tnpoint, npoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tnpoint, npoint, dist float) RETURNS boolean AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.expandSpace(stbox($2),$3) AND @extschema@._edwithin($1, $2, $3)' LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE; CREATE FUNCTION aDwithin(tnpoint, npoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tnpoint_npoint' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(geometry, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tnpoint, geometry, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION eDwithin(tnpoint, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Edwithin_tnpoint_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(geometry, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_geo_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(tnpoint, geometry, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tnpoint_geo' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION aDwithin(tnpoint, tnpoint, dist float) RETURNS boolean AS 'MODULE_PATHNAME', 'Adwithin_tnpoint_tnpoint' SUPPORT tnpoint_supportfn LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_tempspatialrels.sql * Spatial relationships for temporal network points. * * These relationships are applied at each instant and result in a temporal * Boolean. The following relationships are supported: * tContains, tDisjoint, tIntersects, tTouches, and tDwithin */ /***************************************************************************** * tContains *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tContains(geometry, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tcontains_geo_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tDisjoint *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tDisjoint(geometry, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_geo_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDisjoint(npoint, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_npoint_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDisjoint(tnpoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_tnpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDisjoint(tnpoint, npoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdisjoint_tnpoint_npoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tIntersects *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tIntersects(geometry, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_geo_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tIntersects(npoint, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_npoint_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tIntersects(tnpoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_tnpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tIntersects(tnpoint, npoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tintersects_tnpoint_npoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tTouches *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tTouches(geometry, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_geo_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tTouches(npoint, tnpoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_npoint_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tTouches(tnpoint, geometry, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_tnpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tTouches(tnpoint, npoint, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Ttouches_tnpoint_npoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /***************************************************************************** * tDwithin *****************************************************************************/ -- ALL the following functions are not STRICT CREATE FUNCTION tDwithin(geometry, tnpoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_geo_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(npoint, tnpoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_npoint_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(tnpoint, geometry, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_tnpoint_geo' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(tnpoint, npoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_tnpoint_npoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; CREATE FUNCTION tDwithin(tnpoint, tnpoint, dist float, atvalue bool DEFAULT NULL) RETURNS tbool AS 'MODULE_PATHNAME', 'Tdwithin_tnpoint_tnpoint' LANGUAGE C IMMUTABLE PARALLEL SAFE; /*****************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /** * tnpoint_indexes.sql * R-tree GiST and SP-GiST indexes for temporal network points. */ /******************************************************************************/ CREATE FUNCTION tnpoint_gist_consistent(internal, tnpoint, smallint, oid, internal) RETURNS bool AS 'MODULE_PATHNAME', 'Stbox_gist_consistent' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; /******************************************************************************/ CREATE OPERATOR CLASS tnpoint_rtree_ops DEFAULT FOR TYPE tnpoint USING gist AS STORAGE stbox, -- strictly left OPERATOR 1 << (tnpoint, stbox), OPERATOR 1 << (tnpoint, tnpoint), -- overlaps or left OPERATOR 2 &< (tnpoint, stbox), OPERATOR 2 &< (tnpoint, tnpoint), -- overlaps OPERATOR 3 && (tnpoint, tstzspan), OPERATOR 3 && (tnpoint, stbox), OPERATOR 3 && (tnpoint, tnpoint), -- overlaps or right OPERATOR 4 &> (tnpoint, stbox), OPERATOR 4 &> (tnpoint, tnpoint), -- strictly right OPERATOR 5 >> (tnpoint, stbox), OPERATOR 5 >> (tnpoint, tnpoint), -- same OPERATOR 6 ~= (tnpoint, tstzspan), OPERATOR 6 ~= (tnpoint, stbox), OPERATOR 6 ~= (tnpoint, tnpoint), -- contains OPERATOR 7 @> (tnpoint, tstzspan), OPERATOR 7 @> (tnpoint, stbox), OPERATOR 7 @> (tnpoint, tnpoint), -- contained by OPERATOR 8 <@ (tnpoint, tstzspan), OPERATOR 8 <@ (tnpoint, stbox), OPERATOR 8 <@ (tnpoint, tnpoint), -- overlaps or below OPERATOR 9 &<| (tnpoint, stbox), OPERATOR 9 &<| (tnpoint, tnpoint), -- strictly below OPERATOR 10 <<| (tnpoint, stbox), OPERATOR 10 <<| (tnpoint, tnpoint), -- strictly above OPERATOR 11 |>> (tnpoint, stbox), OPERATOR 11 |>> (tnpoint, tnpoint), -- overlaps or above OPERATOR 12 |&> (tnpoint, stbox), OPERATOR 12 |&> (tnpoint, tnpoint), -- adjacent OPERATOR 17 -|- (tnpoint, tstzspan), OPERATOR 17 -|- (tnpoint, stbox), OPERATOR 17 -|- (tnpoint, tnpoint), -- nearest approach distance -- OPERATOR 25 |=| (tnpoint, stbox) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tnpoint, tstzspan), OPERATOR 28 &<# (tnpoint, stbox), OPERATOR 28 &<# (tnpoint, tnpoint), -- strictly before OPERATOR 29 <<# (tnpoint, tstzspan), OPERATOR 29 <<# (tnpoint, stbox), OPERATOR 29 <<# (tnpoint, tnpoint), -- strictly after OPERATOR 30 #>> (tnpoint, tstzspan), OPERATOR 30 #>> (tnpoint, stbox), OPERATOR 30 #>> (tnpoint, tnpoint), -- overlaps or after OPERATOR 31 #&> (tnpoint, tstzspan), OPERATOR 31 #&> (tnpoint, stbox), OPERATOR 31 #&> (tnpoint, tnpoint), -- functions FUNCTION 1 tnpoint_gist_consistent(internal, tnpoint, smallint, oid, internal), FUNCTION 2 stbox_gist_union(internal, internal), FUNCTION 3 tpoint_gist_compress(internal), FUNCTION 5 stbox_gist_penalty(internal, internal, internal), FUNCTION 6 stbox_gist_picksplit(internal, internal), FUNCTION 7 stbox_gist_same(stbox, stbox, internal); -- FUNCTION 8 gist_tnpoint_distance(internal, tnpoint, smallint, oid, internal), /******************************************************************************/ CREATE OPERATOR CLASS tnpoint_quadtree_ops DEFAULT FOR TYPE tnpoint USING spgist AS -- strictly left OPERATOR 1 << (tnpoint, stbox), OPERATOR 1 << (tnpoint, tnpoint), -- overlaps or left OPERATOR 2 &< (tnpoint, stbox), OPERATOR 2 &< (tnpoint, tnpoint), -- overlaps OPERATOR 3 && (tnpoint, tstzspan), OPERATOR 3 && (tnpoint, stbox), OPERATOR 3 && (tnpoint, tnpoint), -- overlaps or right OPERATOR 4 &> (tnpoint, stbox), OPERATOR 4 &> (tnpoint, tnpoint), -- strictly right OPERATOR 5 >> (tnpoint, stbox), OPERATOR 5 >> (tnpoint, tnpoint), -- same OPERATOR 6 ~= (tnpoint, tstzspan), OPERATOR 6 ~= (tnpoint, stbox), OPERATOR 6 ~= (tnpoint, tnpoint), -- contains OPERATOR 7 @> (tnpoint, tstzspan), OPERATOR 7 @> (tnpoint, stbox), OPERATOR 7 @> (tnpoint, tnpoint), -- contained by OPERATOR 8 <@ (tnpoint, tstzspan), OPERATOR 8 <@ (tnpoint, stbox), OPERATOR 8 <@ (tnpoint, tnpoint), -- overlaps or below OPERATOR 9 &<| (tnpoint, stbox), OPERATOR 9 &<| (tnpoint, tnpoint), -- strictly below OPERATOR 10 <<| (tnpoint, stbox), OPERATOR 10 <<| (tnpoint, tnpoint), -- strictly above OPERATOR 11 |>> (tnpoint, stbox), OPERATOR 11 |>> (tnpoint, tnpoint), -- overlaps or above OPERATOR 12 |&> (tnpoint, stbox), OPERATOR 12 |&> (tnpoint, tnpoint), -- adjacent OPERATOR 17 -|- (tnpoint, tstzspan), OPERATOR 17 -|- (tnpoint, stbox), OPERATOR 17 -|- (tnpoint, tnpoint), -- nearest approach distance -- OPERATOR 25 |=| (tnpoint, stbox) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tnpoint, tstzspan), OPERATOR 28 &<# (tnpoint, stbox), OPERATOR 28 &<# (tnpoint, tnpoint), -- strictly before OPERATOR 29 <<# (tnpoint, tstzspan), OPERATOR 29 <<# (tnpoint, stbox), OPERATOR 29 <<# (tnpoint, tnpoint), -- strictly after OPERATOR 30 #>> (tnpoint, tstzspan), OPERATOR 30 #>> (tnpoint, stbox), OPERATOR 30 #>> (tnpoint, tnpoint), -- overlaps or after OPERATOR 31 #&> (tnpoint, tstzspan), OPERATOR 31 #&> (tnpoint, stbox), OPERATOR 31 #&> (tnpoint, tnpoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_quadtree_choose(internal, internal), FUNCTION 3 stbox_quadtree_picksplit(internal, internal), FUNCTION 4 stbox_quadtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ CREATE OPERATOR CLASS tnpoint_kdtree_ops FOR TYPE tnpoint USING spgist AS -- strictly left OPERATOR 1 << (tnpoint, stbox), OPERATOR 1 << (tnpoint, tnpoint), -- overlaps or left OPERATOR 2 &< (tnpoint, stbox), OPERATOR 2 &< (tnpoint, tnpoint), -- overlaps OPERATOR 3 && (tnpoint, tstzspan), OPERATOR 3 && (tnpoint, stbox), OPERATOR 3 && (tnpoint, tnpoint), -- overlaps or right OPERATOR 4 &> (tnpoint, stbox), OPERATOR 4 &> (tnpoint, tnpoint), -- strictly right OPERATOR 5 >> (tnpoint, stbox), OPERATOR 5 >> (tnpoint, tnpoint), -- same OPERATOR 6 ~= (tnpoint, tstzspan), OPERATOR 6 ~= (tnpoint, stbox), OPERATOR 6 ~= (tnpoint, tnpoint), -- contains OPERATOR 7 @> (tnpoint, tstzspan), OPERATOR 7 @> (tnpoint, stbox), OPERATOR 7 @> (tnpoint, tnpoint), -- contained by OPERATOR 8 <@ (tnpoint, tstzspan), OPERATOR 8 <@ (tnpoint, stbox), OPERATOR 8 <@ (tnpoint, tnpoint), -- overlaps or below OPERATOR 9 &<| (tnpoint, stbox), OPERATOR 9 &<| (tnpoint, tnpoint), -- strictly below OPERATOR 10 <<| (tnpoint, stbox), OPERATOR 10 <<| (tnpoint, tnpoint), -- strictly above OPERATOR 11 |>> (tnpoint, stbox), OPERATOR 11 |>> (tnpoint, tnpoint), -- overlaps or above OPERATOR 12 |&> (tnpoint, stbox), OPERATOR 12 |&> (tnpoint, tnpoint), -- adjacent OPERATOR 17 -|- (tnpoint, tstzspan), OPERATOR 17 -|- (tnpoint, stbox), OPERATOR 17 -|- (tnpoint, tnpoint), -- nearest approach distance -- OPERATOR 25 |=| (tnpoint, stbox) FOR ORDER BY pg_catalog.float_ops, -- overlaps or before OPERATOR 28 &<# (tnpoint, tstzspan), OPERATOR 28 &<# (tnpoint, stbox), OPERATOR 28 &<# (tnpoint, tnpoint), -- strictly before OPERATOR 29 <<# (tnpoint, tstzspan), OPERATOR 29 <<# (tnpoint, stbox), OPERATOR 29 <<# (tnpoint, tnpoint), -- strictly after OPERATOR 30 #>> (tnpoint, tstzspan), OPERATOR 30 #>> (tnpoint, stbox), OPERATOR 30 #>> (tnpoint, tnpoint), -- overlaps or after OPERATOR 31 #&> (tnpoint, tstzspan), OPERATOR 31 #&> (tnpoint, stbox), OPERATOR 31 #&> (tnpoint, tnpoint), -- functions FUNCTION 1 stbox_spgist_config(internal, internal), FUNCTION 2 stbox_kdtree_choose(internal, internal), FUNCTION 3 stbox_kdtree_picksplit(internal, internal), FUNCTION 4 stbox_kdtree_inner_consistent(internal, internal), FUNCTION 5 stbox_spgist_leaf_consistent(internal, internal), FUNCTION 6 tpoint_spgist_compress(internal); /******************************************************************************/ /***************************************************************************** * * This MobilityDB code is provided under The PostgreSQL License. * Copyright (c) 2016-2024, Université libre de Bruxelles and MobilityDB * contributors * * MobilityDB includes portions of PostGIS version 3 source code released * under the GNU General Public License (GPLv2 or later). * Copyright (c) 2001-2024, PostGIS contributors * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without a written * agreement is hereby granted, provided that the above copyright notice and * this paragraph and the following two paragraphs appear in all copies. * * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *****************************************************************************/ /* * oid_cache.sql * Routine that pre-computes the type and operator Oid cache and store them in * a global array and a hash table. */ CREATE TABLE mobilitydb_opcache ( opnum INT, ltypnum INT, rtypnum INT, opid Oid ); CREATE FUNCTION fill_oid_cache() RETURNS VOID AS 'MODULE_PATHNAME', 'fill_oid_cache' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; SELECT fill_oid_cache(); /******************************************************************************/