MobilityDB 1.3
Loading...
Searching...
No Matches
meos.h
Go to the documentation of this file.
1/*****************************************************************************
2 *
3 * This MobilityDB code is provided under The PostgreSQL License.
4 * Copyright (c) 2016-2025, Université libre de Bruxelles and MobilityDB
5 * contributors
6 *
7 * MobilityDB includes portions of PostGIS version 3 source code released
8 * under the GNU General Public License (GPLv2 or later).
9 * Copyright (c) 2001-2025, PostGIS contributors
10 *
11 * Permission to use, copy, modify, and distribute this software and its
12 * documentation for any purpose, without fee, and without a written
13 * agreement is hereby granted, provided that the above copyright notice and
14 * this paragraph and the following two paragraphs appear in all copies.
15 *
16 * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR
17 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
18 * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
19 * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY
20 * OF SUCH DAMAGE.
21 *
22 * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES,
23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON
25 * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO
26 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
27 *
28 *****************************************************************************/
29
35#ifndef __MEOS_H__
36#define __MEOS_H__
37
38/* C */
39#include <stdbool.h>
40#include <stdint.h>
41/* PostgreSQL */
42#if MEOS
43#include "postgres_int_defs.h"
44#else
45#include <postgres.h>
46#include <utils/date.h>
47#include <utils/timestamp.h>
48#endif
49
50/*****************************************************************************
51 * Toolchain dependent definitions
52 *****************************************************************************/
53
54#ifdef _MSC_VER
55/*
56 * Under MSVC, functions exported by a loadable module must be marked
57 * "dllexport". Other compilers don't need that.
58 * Borrowed from PostgreSQL file win32.h
59 */
60#define PGDLLEXPORT __declspec (dllexport)
61/*
62 * Avoids warning C4996: 'strdup': The POSIX name for this item is deprecated.
63 */
64#define strdup _strdup
65#endif
66
67/*****************************************************************************
68 * Type definitions
69 *****************************************************************************/
70
74#define DOUBLE_PAD(size) ( (size) + ((size) % 8 ? (8 - (size) % 8) : 0 ) )
75
79typedef struct
80{
88} Set;
89
93typedef struct
94{
97 bool lower_inc;
98 bool upper_inc;
99 char padding[4];
102} Span;
103
107typedef struct
108{
113 char padding;
117 Span elems[1];
118} SpanSet;
119
123typedef struct
124{
128} TBox;
129
133typedef struct
134{
136 double xmin;
137 double ymin;
138 double zmin;
139 double xmax;
140 double ymax;
141 double zmax;
142 int32_t srid;
144} STBox;
145
149typedef enum
150{
156
160typedef enum
161{
164 STEP = 2,
166} interpType;
167
172typedef struct
173{
178 /* variable-length data follows */
179} Temporal;
180
184typedef struct
185{
195 /* variable-length data follows */
196} TInstant;
197
201typedef struct
202{
210 char padding[6];
215 /* variable-length data follows */
216} TSequence;
217
218#define TSEQUENCE_BBOX_PTR(seq) ((void *)(&(seq)->period))
219
223typedef struct
224{
239 /* variable-length data follows */
241
242#define TSEQUENCESET_BBOX_PTR(ss) ((void *)(&(ss)->period))
243
247typedef struct
248{
249 int i;
250 int j;
251} Match;
252
253/*****************************************************************************/
254
259#define SKIPLIST_MAXLEVEL 32
261typedef struct
262{
263 void *value;
267
271typedef struct
272{
274 int next;
276 int *freed;
279 int tail;
280 void *extra;
281 size_t extrasize;
283} SkipList;
284
285/*****************************************************************************/
286
290typedef struct RTree RTree;
291
292/*****************************************************************************
293 * Error codes
294 *****************************************************************************/
295
296typedef enum
297{
298 MEOS_SUCCESS = 0, // Successful operation
299
300 MEOS_ERR_INTERNAL_ERROR = 1, // Unspecified internal error
301 MEOS_ERR_INTERNAL_TYPE_ERROR = 2, // Internal type error
302 MEOS_ERR_VALUE_OUT_OF_RANGE = 3, // Internal out of range error
303 MEOS_ERR_DIVISION_BY_ZERO = 4, // Internal division by zero error
304 MEOS_ERR_MEMORY_ALLOC_ERROR = 5, // Internal malloc error
305 MEOS_ERR_AGGREGATION_ERROR = 6, // Internal aggregation error
306 MEOS_ERR_DIRECTORY_ERROR = 7, // Internal directory error
307 MEOS_ERR_FILE_ERROR = 8, // Internal file error
308
309 MEOS_ERR_INVALID_ARG = 10, // Invalid argument
310 MEOS_ERR_INVALID_ARG_TYPE = 11, // Invalid argument type
311 MEOS_ERR_INVALID_ARG_VALUE = 12, // Invalid argument value
312 MEOS_ERR_FEATURE_NOT_SUPPORTED = 13, // Feature not currently supported
313
314 MEOS_ERR_MFJSON_INPUT = 20, // MFJSON input error
315 MEOS_ERR_MFJSON_OUTPUT = 21, // MFJSON output error
316 MEOS_ERR_TEXT_INPUT = 22, // Text input error
317 MEOS_ERR_TEXT_OUTPUT = 23, // Text output error
318 MEOS_ERR_WKB_INPUT = 24, // WKB input error
319 MEOS_ERR_WKB_OUTPUT = 25, // WKB output error
320 MEOS_ERR_GEOJSON_INPUT = 26, // GEOJSON input error
321 MEOS_ERR_GEOJSON_OUTPUT = 27, // GEOJSON output error
322
323} errorCode;
324
325extern void meos_error(int errlevel, int errcode, const char *format, ...);
326
327/* Set or read error level */
328
329extern int meos_errno(void);
330extern int meos_errno_set(int err);
331extern int meos_errno_restore(int err);
332extern int meos_errno_reset(void);
333
334/*****************************************************************************
335 * Initialization of the MEOS library
336 *****************************************************************************/
337
338/* Definition of error handler function */
339typedef void (*error_handler_fn)(int, int, const char *);
340
341extern void meos_initialize_timezone(const char *name);
342extern void meos_initialize_error_handler(error_handler_fn err_handler);
343extern void meos_finalize_timezone(void);
344extern void meos_finalize_projsrs(void);
345
346extern bool meos_set_datestyle(const char *newval, void *extra);
347extern bool meos_set_intervalstyle(const char *newval, int extra);
348extern char *meos_get_datestyle(void);
349extern char *meos_get_intervalstyle(void);
350
351extern void meos_initialize(void);
352extern void meos_finalize(void);
353
354/******************************************************************************
355 * Functions for base and time types
356 ******************************************************************************/
357
359extern Interval *add_interval_interval(const Interval *interv1, const Interval *interv2);
362extern bool bool_in(const char *str);
363extern char *bool_out(bool b);
364extern text *cstring2text(const char *str);
365extern Timestamp date_to_timestamp(DateADT dateVal);
367extern double float_exp(double d);
368extern double float_ln(double d);
369extern double float_log10(double d);
370extern double float_round(double d, int maxdd);
371extern Interval *interval_make(int32 years, int32 months, int32 weeks, int32 days, int32 hours, int32 mins, double secs);
376extern Interval *mul_interval_double(const Interval *interv, double factor);
377extern char *text2cstring(const text *txt);
378extern int text_cmp(const text *txt1, const text *txt2);
379extern text *text_copy(const text *txt);
380extern text *text_initcap(const text *txt);
381extern text *text_lower(const text *txt);
382extern char *text_out(const text *txt);
383extern text *text_upper(const text *txt);
384extern text *textcat_text_text(const text *txt1, const text *txt2);
385extern TimestampTz timestamptz_shift(TimestampTz t, const Interval *interv);
388
389/*============================================================================
390 * Functions for set and span types
391 ===========================================================================*/
392
393/*****************************************************************************
394 * Input/output functions for set and span types
395 *****************************************************************************/
396
397extern Set *bigintset_in(const char *str);
398extern char *bigintset_out(const Set *set);
399extern Span *bigintspan_in(const char *str);
400extern char *bigintspan_out(const Span *s);
401extern SpanSet *bigintspanset_in(const char *str);
402extern char *bigintspanset_out(const SpanSet *ss);
403extern Set *dateset_in(const char *str);
404extern char *dateset_out(const Set *s);
405extern Span *datespan_in(const char *str);
406extern char *datespan_out(const Span *s);
407extern SpanSet *datespanset_in(const char *str);
408extern char *datespanset_out(const SpanSet *ss);
409extern Set *floatset_in(const char *str);
410extern char *floatset_out(const Set *set, int maxdd);
411extern Span *floatspan_in(const char *str);
412extern char *floatspan_out(const Span *s, int maxdd);
413extern SpanSet *floatspanset_in(const char *str);
414extern char *floatspanset_out(const SpanSet *ss, int maxdd);
415extern Set *intset_in(const char *str);
416extern char *intset_out(const Set *set);
417extern Span *intspan_in(const char *str);
418extern char *intspan_out(const Span *s);
419extern SpanSet *intspanset_in(const char *str);
420extern char *intspanset_out(const SpanSet *ss);
421extern char *set_as_hexwkb(const Set *s, uint8_t variant, size_t *size_out);
422extern uint8_t *set_as_wkb(const Set *s, uint8_t variant, size_t *size_out);
423extern Set *set_from_hexwkb(const char *hexwkb);
424extern Set *set_from_wkb(const uint8_t *wkb, size_t size);
425extern char *span_as_hexwkb(const Span *s, uint8_t variant, size_t *size_out);
426extern uint8_t *span_as_wkb(const Span *s, uint8_t variant, size_t *size_out);
427extern Span *span_from_hexwkb(const char *hexwkb);
428extern Span *span_from_wkb(const uint8_t *wkb, size_t size);
429extern char *spanset_as_hexwkb(const SpanSet *ss, uint8_t variant, size_t *size_out);
430extern uint8_t *spanset_as_wkb(const SpanSet *ss, uint8_t variant, size_t *size_out);
431extern SpanSet *spanset_from_hexwkb(const char *hexwkb);
432extern SpanSet *spanset_from_wkb(const uint8_t *wkb, size_t size);
433extern Set *textset_in(const char *str);
434extern char *textset_out(const Set *set);
435extern Set *tstzset_in(const char *str);
436extern char *tstzset_out(const Set *set);
437extern Span *tstzspan_in(const char *str);
438extern char *tstzspan_out(const Span *s);
439extern SpanSet *tstzspanset_in(const char *str);
440extern char *tstzspanset_out(const SpanSet *ss);
441
442/*****************************************************************************
443 * Constructor functions for set and span types
444 *****************************************************************************/
445
446extern Set *bigintset_make(const int64 *values, int count);
447extern Span *bigintspan_make(int64 lower, int64 upper, bool lower_inc, bool upper_inc);
448extern Set *dateset_make(const DateADT *values, int count);
449extern Span *datespan_make(DateADT lower, DateADT upper, bool lower_inc, bool upper_inc);
450extern Set *floatset_make(const double *values, int count);
451extern Span *floatspan_make(double lower, double upper, bool lower_inc, bool upper_inc);
452extern Set *intset_make(const int *values, int count);
453extern Span *intspan_make(int lower, int upper, bool lower_inc, bool upper_inc);
454extern Set *set_copy(const Set *s);
455extern Span *span_copy(const Span *s);
456extern SpanSet *spanset_copy(const SpanSet *ss);
457extern SpanSet *spanset_make(Span *spans, int count);
458extern Set *textset_make(const text **values, int count);
459extern Set *tstzset_make(const TimestampTz *values, int count);
460extern Span *tstzspan_make(TimestampTz lower, TimestampTz upper, bool lower_inc, bool upper_inc);
461
462/*****************************************************************************
463 * Conversion functions for set and span types
464 *****************************************************************************/
465
466extern Set *bigint_to_set(int64 i);
467extern Span *bigint_to_span(int i);
468extern SpanSet *bigint_to_spanset(int i);
469extern Set *date_to_set(DateADT d);
470extern Span *date_to_span(DateADT d);
472extern Set *dateset_to_tstzset(const Set *s);
473extern Span *datespan_to_tstzspan(const Span *s);
475extern Set *float_to_set(double d);
476extern Span *float_to_span(double d);
477extern SpanSet *float_to_spanset(double d);
478extern Set *floatset_to_intset(const Set *s);
479extern Span *floatspan_to_intspan(const Span *s);
481extern Set *int_to_set(int i);
482extern Span *int_to_span(int i);
483extern SpanSet *int_to_spanset(int i);
484extern Set *intset_to_floatset(const Set *s);
485extern Span *intspan_to_floatspan(const Span *s);
487extern Span *set_to_span(const Set *s);
488extern SpanSet *set_to_spanset(const Set *s);
489extern SpanSet *span_to_spanset(const Span *s);
490extern Set *text_to_set(const text *txt);
494extern Set *tstzset_to_dateset(const Set *s);
495extern Span *tstzspan_to_datespan(const Span *s);
497
498/*****************************************************************************
499 * Accessor functions for set and span types
500 *****************************************************************************/
501
502extern int64 bigintset_end_value(const Set *s);
503extern int64 bigintset_start_value(const Set *s);
504extern bool bigintset_value_n(const Set *s, int n, int64 *result);
505extern int64 *bigintset_values(const Set *s);
506extern int64 bigintspan_lower(const Span *s);
507extern int64 bigintspan_upper(const Span *s);
508extern int64 bigintspan_width(const Span *s);
509extern int64 bigintspanset_lower(const SpanSet *ss);
510extern int64 bigintspanset_upper(const SpanSet *ss);
511extern int64 bigintspanset_width(const SpanSet *ss, bool boundspan);
512extern DateADT dateset_end_value(const Set *s);
513extern DateADT dateset_start_value(const Set *s);
514extern bool dateset_value_n(const Set *s, int n, DateADT *result);
515extern DateADT *dateset_values(const Set *s);
516extern Interval *datespan_duration(const Span *s);
517extern DateADT datespan_lower(const Span *s);
518extern DateADT datespan_upper(const Span *s);
519extern bool datespanset_date_n(const SpanSet *ss, int n, DateADT *result);
520extern Set *datespanset_dates(const SpanSet *ss);
521extern Interval *datespanset_duration(const SpanSet *ss, bool boundspan);
522extern DateADT datespanset_end_date(const SpanSet *ss);
523extern int datespanset_num_dates(const SpanSet *ss);
524extern DateADT datespanset_start_date(const SpanSet *ss);
525extern double floatset_end_value(const Set *s);
526extern double floatset_start_value(const Set *s);
527extern bool floatset_value_n(const Set *s, int n, double *result);
528extern double *floatset_values(const Set *s);
529extern double floatspan_lower(const Span *s);
530extern double floatspan_upper(const Span *s);
531extern double floatspan_width(const Span *s);
532extern double floatspanset_lower(const SpanSet *ss);
533extern double floatspanset_upper(const SpanSet *ss);
534extern double floatspanset_width(const SpanSet *ss, bool boundspan);
535extern int intset_end_value(const Set *s);
536extern int intset_start_value(const Set *s);
537extern bool intset_value_n(const Set *s, int n, int *result);
538extern int *intset_values(const Set *s);
539extern int intspan_lower(const Span *s);
540extern int intspan_upper(const Span *s);
541extern int intspan_width(const Span *s);
542extern int intspanset_lower(const SpanSet *ss);
543extern int intspanset_upper(const SpanSet *ss);
544extern int intspanset_width(const SpanSet *ss, bool boundspan);
545extern uint32 set_hash(const Set *s);
546extern uint64 set_hash_extended(const Set *s, uint64 seed);
547extern int set_num_values(const Set *s);
548extern uint32 span_hash(const Span *s);
549extern uint64 span_hash_extended(const Span *s, uint64 seed);
550extern bool span_lower_inc(const Span *s);
551extern bool span_upper_inc(const Span *s);
552extern Span *spanset_end_span(const SpanSet *ss);
553extern uint32 spanset_hash(const SpanSet *ss);
554extern uint64 spanset_hash_extended(const SpanSet *ss, uint64 seed);
555extern bool spanset_lower_inc(const SpanSet *ss);
556extern int spanset_num_spans(const SpanSet *ss);
557extern Span *spanset_span(const SpanSet *ss);
558extern Span *spanset_span_n(const SpanSet *ss, int i);
559extern Span **spanset_spanarr(const SpanSet *ss);
560extern Span *spanset_start_span(const SpanSet *ss);
561extern bool spanset_upper_inc(const SpanSet *ss);
562extern text *textset_end_value(const Set *s);
563extern text *textset_start_value(const Set *s);
564extern bool textset_value_n(const Set *s, int n, text **result);
565extern text **textset_values(const Set *s);
566extern TimestampTz tstzset_end_value(const Set *s);
567extern TimestampTz tstzset_start_value(const Set *s);
568extern bool tstzset_value_n(const Set *s, int n, TimestampTz *result);
569extern TimestampTz *tstzset_values(const Set *s);
570extern Interval *tstzspan_duration(const Span *s);
571extern TimestampTz tstzspan_lower(const Span *s);
572extern TimestampTz tstzspan_upper(const Span *s);
573extern Interval *tstzspanset_duration(const SpanSet *ss, bool boundspan);
575extern TimestampTz tstzspanset_lower(const SpanSet *ss);
576extern int tstzspanset_num_timestamps(const SpanSet *ss);
578extern Set *tstzspanset_timestamps(const SpanSet *ss);
579extern bool tstzspanset_timestamptz_n(const SpanSet *ss, int n, TimestampTz *result);
580extern TimestampTz tstzspanset_upper(const SpanSet *ss);
581
582/*****************************************************************************
583 * Transformation functions for set and span types
584 *****************************************************************************/
585
586extern Set *bigintset_shift_scale(const Set *s, int64 shift, int64 width, bool hasshift, bool haswidth);
587extern Span *bigintspan_shift_scale(const Span *s, int64 shift, int64 width, bool hasshift, bool haswidth);
588extern SpanSet *bigintspanset_shift_scale(const SpanSet *ss, int64 shift, int64 width, bool hasshift, bool haswidth);
589extern Set *dateset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth);
590extern Span *datespan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth);
591extern SpanSet *datespanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth);
592extern Set *floatset_ceil(const Set *s);
593extern Set *floatset_degrees(const Set *s, bool normalize);
594extern Set *floatset_floor(const Set *s);
595extern Set *floatset_radians(const Set *s);
596extern Set *floatset_shift_scale(const Set *s, double shift, double width, bool hasshift, bool haswidth);
597extern Span *floatspan_ceil(const Span *s);
598extern Span *floatspan_degrees(const Span *s, bool normalize);
599extern Span *floatspan_floor(const Span *s);
600extern Span *floatspan_radians(const Span *s);
601extern Span *floatspan_round(const Span *s, int maxdd);
602extern Span *floatspan_shift_scale(const Span *s, double shift, double width, bool hasshift, bool haswidth);
603extern SpanSet *floatspanset_ceil(const SpanSet *ss);
604extern SpanSet *floatspanset_floor(const SpanSet *ss);
605extern SpanSet *floatspanset_degrees(const SpanSet *ss, bool normalize);
606extern SpanSet *floatspanset_radians(const SpanSet *ss);
607extern SpanSet *floatspanset_round(const SpanSet *ss, int maxdd);
608extern SpanSet *floatspanset_shift_scale(const SpanSet *ss, double shift, double width, bool hasshift, bool haswidth);
609extern Set *intset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth);
610extern Span *intspan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth);
611extern SpanSet *intspanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth);
612extern Span *numspan_expand(const Span *s, Datum value);
613extern Span *tstzspan_expand(const Span *s, const Interval *interv);
614extern Set *set_round(const Set *s, int maxdd);
615extern Set *textcat_text_textset(const text *txt, const Set *s);
616extern Set *textcat_textset_text(const Set *s, const text *txt);
617extern Set *textset_initcap(const Set *s);
618extern Set *textset_lower(const Set *s);
619extern Set *textset_upper(const Set *s);
620extern TimestampTz timestamptz_tprecision(TimestampTz t, const Interval *duration, TimestampTz torigin);
621extern Set *tstzset_shift_scale(const Set *s, const Interval *shift, const Interval *duration);
622extern Set *tstzset_tprecision(const Set *s, const Interval *duration, TimestampTz torigin);
623extern Span *tstzspan_shift_scale(const Span *s, const Interval *shift, const Interval *duration);
624extern Span *tstzspan_tprecision(const Span *s, const Interval *duration, TimestampTz torigin);
625extern SpanSet *tstzspanset_shift_scale(const SpanSet *ss, const Interval *shift, const Interval *duration);
626extern SpanSet *tstzspanset_tprecision(const SpanSet *ss, const Interval *duration, TimestampTz torigin);
627
628/*****************************************************************************
629 * Comparison functions for set and span types
630 *****************************************************************************/
631
632extern int set_cmp(const Set *s1, const Set *s2);
633extern bool set_eq(const Set *s1, const Set *s2);
634extern bool set_ge(const Set *s1, const Set *s2);
635extern bool set_gt(const Set *s1, const Set *s2);
636extern bool set_le(const Set *s1, const Set *s2);
637extern bool set_lt(const Set *s1, const Set *s2);
638extern bool set_ne(const Set *s1, const Set *s2);
639extern int span_cmp(const Span *s1, const Span *s2);
640extern bool span_eq(const Span *s1, const Span *s2);
641extern bool span_ge(const Span *s1, const Span *s2);
642extern bool span_gt(const Span *s1, const Span *s2);
643extern bool span_le(const Span *s1, const Span *s2);
644extern bool span_lt(const Span *s1, const Span *s2);
645extern bool span_ne(const Span *s1, const Span *s2);
646extern int spanset_cmp(const SpanSet *ss1, const SpanSet *ss2);
647extern bool spanset_eq(const SpanSet *ss1, const SpanSet *ss2);
648extern bool spanset_ge(const SpanSet *ss1, const SpanSet *ss2);
649extern bool spanset_gt(const SpanSet *ss1, const SpanSet *ss2);
650extern bool spanset_le(const SpanSet *ss1, const SpanSet *ss2);
651extern bool spanset_lt(const SpanSet *ss1, const SpanSet *ss2);
652extern bool spanset_ne(const SpanSet *ss1, const SpanSet *ss2);
653
654/*****************************************************************************
655 * Bounding box functions for set and span types
656 *****************************************************************************/
657
658/* Split functions */
659
660extern Span *set_spans(const Set *s);
661extern Span *set_split_each_n_spans(const Set *s, int elems_per_span, int *count);
662extern Span *set_split_n_spans(const Set *s, int span_count, int *count);
663extern Span *spanset_spans(const SpanSet *ss);
664extern Span *spanset_split_each_n_spans(const SpanSet *ss, int elems_per_span, int *count);
665extern Span *spanset_split_n_spans(const SpanSet *ss, int span_count, int *count);
666
667/* Topological functions */
668
669extern bool adjacent_span_bigint(const Span *s, int64 i);
670extern bool adjacent_span_date(const Span *s, DateADT d);
671extern bool adjacent_span_float(const Span *s, double d);
672extern bool adjacent_span_int(const Span *s, int i);
673extern bool adjacent_span_span(const Span *s1, const Span *s2);
674extern bool adjacent_span_spanset(const Span *s, const SpanSet *ss);
675extern bool adjacent_span_timestamptz(const Span *s, TimestampTz t);
676extern bool adjacent_spanset_bigint(const SpanSet *ss, int64 i);
677extern bool adjacent_spanset_date(const SpanSet *ss, DateADT d);
678extern bool adjacent_spanset_float(const SpanSet *ss, double d);
679extern bool adjacent_spanset_int(const SpanSet *ss, int i);
680extern bool adjacent_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
681extern bool adjacent_spanset_span(const SpanSet *ss, const Span *s);
682extern bool adjacent_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
683extern bool contained_bigint_set(int64 i, const Set *s);
684extern bool contained_bigint_span(int64 i, const Span *s);
685extern bool contained_bigint_spanset(int64 i, const SpanSet *ss);
686extern bool contained_date_set(DateADT d, const Set *s);
687extern bool contained_date_span(DateADT d, const Span *s);
688extern bool contained_date_spanset(DateADT d, const SpanSet *ss);
689extern bool contained_float_set(double d, const Set *s);
690extern bool contained_float_span(double d, const Span *s);
691extern bool contained_float_spanset(double d, const SpanSet *ss);
692extern bool contained_int_set(int i, const Set *s);
693extern bool contained_int_span(int i, const Span *s);
694extern bool contained_int_spanset(int i, const SpanSet *ss);
695extern bool contained_set_set(const Set *s1, const Set *s2);
696extern bool contained_span_span(const Span *s1, const Span *s2);
697extern bool contained_span_spanset(const Span *s, const SpanSet *ss);
698extern bool contained_spanset_span(const SpanSet *ss, const Span *s);
699extern bool contained_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
700extern bool contained_text_set(const text *txt, const Set *s);
701extern bool contained_timestamptz_set(TimestampTz t, const Set *s);
702extern bool contained_timestamptz_span(TimestampTz t, const Span *s);
703extern bool contained_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
704extern bool contains_set_bigint(const Set *s, int64 i);
705extern bool contains_set_date(const Set *s, DateADT d);
706extern bool contains_set_float(const Set *s, double d);
707extern bool contains_set_int(const Set *s, int i);
708extern bool contains_set_set(const Set *s1, const Set *s2);
709extern bool contains_set_text(const Set *s, text *t);
710extern bool contains_set_timestamptz(const Set *s, TimestampTz t);
711extern bool contains_span_bigint(const Span *s, int64 i);
712extern bool contains_span_date(const Span *s, DateADT d);
713extern bool contains_span_float(const Span *s, double d);
714extern bool contains_span_int(const Span *s, int i);
715extern bool contains_span_span(const Span *s1, const Span *s2);
716extern bool contains_span_spanset(const Span *s, const SpanSet *ss);
717extern bool contains_span_timestamptz(const Span *s, TimestampTz t);
718extern bool contains_spanset_bigint(const SpanSet *ss, int64 i);
719extern bool contains_spanset_date(const SpanSet *ss, DateADT d);
720extern bool contains_spanset_float(const SpanSet *ss, double d);
721extern bool contains_spanset_int(const SpanSet *ss, int i);
722extern bool contains_spanset_span(const SpanSet *ss, const Span *s);
723extern bool contains_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
724extern bool contains_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
725extern bool overlaps_set_set(const Set *s1, const Set *s2);
726extern bool overlaps_span_span(const Span *s1, const Span *s2);
727extern bool overlaps_span_spanset(const Span *s, const SpanSet *ss);
728extern bool overlaps_spanset_span(const SpanSet *ss, const Span *s);
729extern bool overlaps_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
730
731/*****************************************************************************/
732
733/* Position functions for set and span types */
734
735extern bool after_date_set(DateADT d, const Set *s);
736extern bool after_date_span(DateADT d, const Span *s);
737extern bool after_date_spanset(DateADT d, const SpanSet *ss);
738extern bool after_set_date(const Set *s, DateADT d);
739extern bool after_set_timestamptz(const Set *s, TimestampTz t);
740extern bool after_span_date(const Span *s, DateADT d);
741extern bool after_span_timestamptz(const Span *s, TimestampTz t);
742extern bool after_spanset_date(const SpanSet *ss, DateADT d);
743extern bool after_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
744extern bool after_timestamptz_set(TimestampTz t, const Set *s);
745extern bool after_timestamptz_span(TimestampTz t, const Span *s);
746extern bool after_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
747extern bool before_date_set(DateADT d, const Set *s);
748extern bool before_date_span(DateADT d, const Span *s);
749extern bool before_date_spanset(DateADT d, const SpanSet *ss);
750extern bool before_set_date(const Set *s, DateADT d);
751extern bool before_set_timestamptz(const Set *s, TimestampTz t);
752extern bool before_span_date(const Span *s, DateADT d);
753extern bool before_span_timestamptz(const Span *s, TimestampTz t);
754extern bool before_spanset_date(const SpanSet *ss, DateADT d);
755extern bool before_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
756extern bool before_timestamptz_set(TimestampTz t, const Set *s);
757extern bool before_timestamptz_span(TimestampTz t, const Span *s);
758extern bool before_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
759extern bool left_bigint_set(int64 i, const Set *s);
760extern bool left_bigint_span(int64 i, const Span *s);
761extern bool left_bigint_spanset(int64 i, const SpanSet *ss);
762extern bool left_float_set(double d, const Set *s);
763extern bool left_float_span(double d, const Span *s);
764extern bool left_float_spanset(double d, const SpanSet *ss);
765extern bool left_int_set(int i, const Set *s);
766extern bool left_int_span(int i, const Span *s);
767extern bool left_int_spanset(int i, const SpanSet *ss);
768extern bool left_set_bigint(const Set *s, int64 i);
769extern bool left_set_float(const Set *s, double d);
770extern bool left_set_int(const Set *s, int i);
771extern bool left_set_set(const Set *s1, const Set *s2);
772extern bool left_set_text(const Set *s, text *txt);
773extern bool left_span_bigint(const Span *s, int64 i);
774extern bool left_span_float(const Span *s, double d);
775extern bool left_span_int(const Span *s, int i);
776extern bool left_span_span(const Span *s1, const Span *s2);
777extern bool left_span_spanset(const Span *s, const SpanSet *ss);
778extern bool left_spanset_bigint(const SpanSet *ss, int64 i);
779extern bool left_spanset_float(const SpanSet *ss, double d);
780extern bool left_spanset_int(const SpanSet *ss, int i);
781extern bool left_spanset_span(const SpanSet *ss, const Span *s);
782extern bool left_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
783extern bool left_text_set(const text *txt, const Set *s);
784extern bool overafter_date_set(DateADT d, const Set *s);
785extern bool overafter_date_span(DateADT d, const Span *s);
786extern bool overafter_date_spanset(DateADT d, const SpanSet *ss);
787extern bool overafter_set_date(const Set *s, DateADT d);
788extern bool overafter_set_timestamptz(const Set *s, TimestampTz t);
789extern bool overafter_span_date(const Span *s, DateADT d);
790extern bool overafter_span_timestamptz(const Span *s, TimestampTz t);
791extern bool overafter_spanset_date(const SpanSet *ss, DateADT d);
792extern bool overafter_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
793extern bool overafter_timestamptz_set(TimestampTz t, const Set *s);
794extern bool overafter_timestamptz_span(TimestampTz t, const Span *s);
795extern bool overafter_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
796extern bool overbefore_date_set(DateADT d, const Set *s);
797extern bool overbefore_date_span(DateADT d, const Span *s);
798extern bool overbefore_date_spanset(DateADT d, const SpanSet *ss);
799extern bool overbefore_set_date(const Set *s, DateADT d);
800extern bool overbefore_set_timestamptz(const Set *s, TimestampTz t);
801extern bool overbefore_span_date(const Span *s, DateADT d);
802extern bool overbefore_span_timestamptz(const Span *s, TimestampTz t);
803extern bool overbefore_spanset_date(const SpanSet *ss, DateADT d);
804extern bool overbefore_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
805extern bool overbefore_timestamptz_set(TimestampTz t, const Set *s);
806extern bool overbefore_timestamptz_span(TimestampTz t, const Span *s);
807extern bool overbefore_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
808extern bool overleft_bigint_set(int64 i, const Set *s);
809extern bool overleft_bigint_span(int64 i, const Span *s);
810extern bool overleft_bigint_spanset(int64 i, const SpanSet *ss);
811extern bool overleft_float_set(double d, const Set *s);
812extern bool overleft_float_span(double d, const Span *s);
813extern bool overleft_float_spanset(double d, const SpanSet *ss);
814extern bool overleft_int_set(int i, const Set *s);
815extern bool overleft_int_span(int i, const Span *s);
816extern bool overleft_int_spanset(int i, const SpanSet *ss);
817extern bool overleft_set_bigint(const Set *s, int64 i);
818extern bool overleft_set_float(const Set *s, double d);
819extern bool overleft_set_int(const Set *s, int i);
820extern bool overleft_set_set(const Set *s1, const Set *s2);
821extern bool overleft_set_text(const Set *s, text *txt);
822extern bool overleft_span_bigint(const Span *s, int64 i);
823extern bool overleft_span_float(const Span *s, double d);
824extern bool overleft_span_int(const Span *s, int i);
825extern bool overleft_span_span(const Span *s1, const Span *s2);
826extern bool overleft_span_spanset(const Span *s, const SpanSet *ss);
827extern bool overleft_spanset_bigint(const SpanSet *ss, int64 i);
828extern bool overleft_spanset_float(const SpanSet *ss, double d);
829extern bool overleft_spanset_int(const SpanSet *ss, int i);
830extern bool overleft_spanset_span(const SpanSet *ss, const Span *s);
831extern bool overleft_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
832extern bool overleft_text_set(const text *txt, const Set *s);
833extern bool overright_bigint_set(int64 i, const Set *s);
834extern bool overright_bigint_span(int64 i, const Span *s);
835extern bool overright_bigint_spanset(int64 i, const SpanSet *ss);
836extern bool overright_float_set(double d, const Set *s);
837extern bool overright_float_span(double d, const Span *s);
838extern bool overright_float_spanset(double d, const SpanSet *ss);
839extern bool overright_int_set(int i, const Set *s);
840extern bool overright_int_span(int i, const Span *s);
841extern bool overright_int_spanset(int i, const SpanSet *ss);
842extern bool overright_set_bigint(const Set *s, int64 i);
843extern bool overright_set_float(const Set *s, double d);
844extern bool overright_set_int(const Set *s, int i);
845extern bool overright_set_set(const Set *s1, const Set *s2);
846extern bool overright_set_text(const Set *s, text *txt);
847extern bool overright_span_bigint(const Span *s, int64 i);
848extern bool overright_span_float(const Span *s, double d);
849extern bool overright_span_int(const Span *s, int i);
850extern bool overright_span_span(const Span *s1, const Span *s2);
851extern bool overright_span_spanset(const Span *s, const SpanSet *ss);
852extern bool overright_spanset_bigint(const SpanSet *ss, int64 i);
853extern bool overright_spanset_float(const SpanSet *ss, double d);
854extern bool overright_spanset_int(const SpanSet *ss, int i);
855extern bool overright_spanset_span(const SpanSet *ss, const Span *s);
856extern bool overright_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
857extern bool overright_text_set(const text *txt, const Set *s);
858extern bool right_bigint_set(int64 i, const Set *s);
859extern bool right_bigint_span(int64 i, const Span *s);
860extern bool right_bigint_spanset(int64 i, const SpanSet *ss);
861extern bool right_float_set(double d, const Set *s);
862extern bool right_float_span(double d, const Span *s);
863extern bool right_float_spanset(double d, const SpanSet *ss);
864extern bool right_int_set(int i, const Set *s);
865extern bool right_int_span(int i, const Span *s);
866extern bool right_int_spanset(int i, const SpanSet *ss);
867extern bool right_set_bigint(const Set *s, int64 i);
868extern bool right_set_float(const Set *s, double d);
869extern bool right_set_int(const Set *s, int i);
870extern bool right_set_set(const Set *s1, const Set *s2);
871extern bool right_set_text(const Set *s, text *txt);
872extern bool right_span_bigint(const Span *s, int64 i);
873extern bool right_span_float(const Span *s, double d);
874extern bool right_span_int(const Span *s, int i);
875extern bool right_span_span(const Span *s1, const Span *s2);
876extern bool right_span_spanset(const Span *s, const SpanSet *ss);
877extern bool right_spanset_bigint(const SpanSet *ss, int64 i);
878extern bool right_spanset_float(const SpanSet *ss, double d);
879extern bool right_spanset_int(const SpanSet *ss, int i);
880extern bool right_spanset_span(const SpanSet *ss, const Span *s);
881extern bool right_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
882extern bool right_text_set(const text *txt, const Set *s);
883
884/*****************************************************************************
885 * Set functions for set and span types
886 *****************************************************************************/
887
888extern Set *intersection_bigint_set(int64 i, const Set *s);
889extern Set *intersection_date_set(DateADT d, const Set *s);
890extern Set *intersection_float_set(double d, const Set *s);
891extern Set *intersection_int_set(int i, const Set *s);
892extern Set *intersection_set_bigint(const Set *s, int64 i);
893extern Set *intersection_set_date(const Set *s, DateADT d);
894extern Set *intersection_set_float(const Set *s, double d);
895extern Set *intersection_set_int(const Set *s, int i);
896extern Set *intersection_set_set(const Set *s1, const Set *s2);
897extern Set *intersection_set_text(const Set *s, const text *txt);
899extern Span *intersection_span_bigint(const Span *s, int64 i);
900extern Span *intersection_span_date(const Span *s, DateADT d);
901extern Span *intersection_span_float(const Span *s, double d);
902extern Span *intersection_span_int(const Span *s, int i);
903extern Span *intersection_span_span(const Span *s1, const Span *s2);
904extern SpanSet *intersection_span_spanset(const Span *s, const SpanSet *ss);
908extern SpanSet *intersection_spanset_float(const SpanSet *ss, double d);
909extern SpanSet *intersection_spanset_int(const SpanSet *ss, int i);
910extern SpanSet *intersection_spanset_span(const SpanSet *ss, const Span *s);
911extern SpanSet *intersection_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
913extern Set *intersection_text_set(const text *txt, const Set *s);
915extern Set *minus_bigint_set(int64 i, const Set *s);
916extern SpanSet *minus_bigint_span(int64 i, const Span *s);
917extern SpanSet *minus_bigint_spanset(int64 i, const SpanSet *ss);
918extern Set *minus_date_set(DateADT d, const Set *s);
919extern SpanSet *minus_date_span(DateADT d, const Span *s);
920extern SpanSet *minus_date_spanset(DateADT d, const SpanSet *ss);
921extern Set *minus_float_set(double d, const Set *s);
922extern SpanSet *minus_float_span(double d, const Span *s);
923extern SpanSet *minus_float_spanset(double d, const SpanSet *ss);
924extern Set *minus_int_set(int i, const Set *s);
925extern SpanSet *minus_int_span(int i, const Span *s);
926extern SpanSet *minus_int_spanset(int i, const SpanSet *ss);
927extern Set *minus_set_bigint(const Set *s, int64 i);
928extern Set *minus_set_date(const Set *s, DateADT d);
929extern Set *minus_set_float(const Set *s, double d);
930extern Set *minus_set_int(const Set *s, int i);
931extern Set *minus_set_set(const Set *s1, const Set *s2);
932extern Set *minus_set_text(const Set *s, const text *txt);
933extern Set *minus_set_timestamptz(const Set *s, TimestampTz t);
934extern SpanSet *minus_span_bigint(const Span *s, int64 i);
935extern SpanSet *minus_span_date(const Span *s, DateADT d);
936extern SpanSet *minus_span_float(const Span *s, double d);
937extern SpanSet *minus_span_int(const Span *s, int i);
938extern SpanSet *minus_span_span(const Span *s1, const Span *s2);
939extern SpanSet *minus_span_spanset(const Span *s, const SpanSet *ss);
941extern SpanSet *minus_spanset_bigint(const SpanSet *ss, int64 i);
942extern SpanSet *minus_spanset_date(const SpanSet *ss, DateADT d);
943extern SpanSet *minus_spanset_float(const SpanSet *ss, double d);
944extern SpanSet *minus_spanset_int(const SpanSet *ss, int i);
945extern SpanSet *minus_spanset_span(const SpanSet *ss, const Span *s);
946extern SpanSet *minus_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
948extern Set *minus_text_set(const text *txt, const Set *s);
949extern Set *minus_timestamptz_set(TimestampTz t, const Set *s);
952extern Set *union_bigint_set(int64 i, const Set *s);
953extern SpanSet *union_bigint_span(const Span *s, int64 i);
955extern Set *union_date_set(DateADT d, const Set *s);
956extern SpanSet *union_date_span(const Span *s, DateADT d);
958extern Set *union_float_set(double d, const Set *s);
959extern SpanSet *union_float_span(const Span *s, double d);
960extern SpanSet *union_float_spanset(double d, SpanSet *ss);
961extern Set *union_int_set(int i, const Set *s);
962extern SpanSet *union_int_span(int i, const Span *s);
963extern SpanSet *union_int_spanset(int i, SpanSet *ss);
964extern Set *union_set_bigint(const Set *s, int64 i);
965extern Set *union_set_date(const Set *s, DateADT d);
966extern Set *union_set_float(const Set *s, double d);
967extern Set *union_set_int(const Set *s, int i);
968extern Set *union_set_set(const Set *s1, const Set *s2);
969extern Set *union_set_text(const Set *s, const text *txt);
970extern Set *union_set_timestamptz(const Set *s, TimestampTz t);
971extern SpanSet *union_span_bigint(const Span *s, int64 i);
972extern SpanSet *union_span_date(const Span *s, DateADT d);
973extern SpanSet *union_span_float(const Span *s, double d);
974extern SpanSet *union_span_int(const Span *s, int i);
975extern SpanSet *union_span_span(const Span *s1, const Span *s2);
976extern SpanSet *union_span_spanset(const Span *s, const SpanSet *ss);
978extern SpanSet *union_spanset_bigint(const SpanSet *ss, int64 i);
979extern SpanSet *union_spanset_date(const SpanSet *ss, DateADT d);
980extern SpanSet *union_spanset_float(const SpanSet *ss, double d);
981extern SpanSet *union_spanset_int(const SpanSet *ss, int i);
982extern SpanSet *union_spanset_span(const SpanSet *ss, const Span *s);
983extern SpanSet *union_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
985extern Set *union_text_set(const text *txt, const Set *s);
986extern Set *union_timestamptz_set(TimestampTz t, const Set *s);
989
990/*****************************************************************************
991 * Distance functions for set and span types
992 *****************************************************************************/
993
994extern int64 distance_bigintset_bigintset(const Set *s1, const Set *s2);
995extern int64 distance_bigintspan_bigintspan(const Span *s1, const Span *s2);
996extern int64 distance_bigintspanset_bigintspan(const SpanSet *ss, const Span *s);
997extern int64 distance_bigintspanset_bigintspanset(const SpanSet *ss1, const SpanSet *ss2);
998extern int distance_dateset_dateset(const Set *s1, const Set *s2);
999extern int distance_datespan_datespan(const Span *s1, const Span *s2);
1000extern int distance_datespanset_datespan(const SpanSet *ss, const Span *s);
1001extern int distance_datespanset_datespanset(const SpanSet *ss1, const SpanSet *ss2);
1002extern double distance_floatset_floatset(const Set *s1, const Set *s2);
1003extern double distance_floatspan_floatspan(const Span *s1, const Span *s2);
1004extern double distance_floatspanset_floatspan(const SpanSet *ss, const Span *s);
1005extern double distance_floatspanset_floatspanset(const SpanSet *ss1, const SpanSet *ss2);
1006extern int distance_intset_intset(const Set *s1, const Set *s2);
1007extern int distance_intspan_intspan(const Span *s1, const Span *s2);
1008extern int distance_intspanset_intspan(const SpanSet *ss, const Span *s);
1009extern int distance_intspanset_intspanset(const SpanSet *ss1, const SpanSet *ss2);
1010extern int64 distance_set_bigint(const Set *s, int64 i);
1011extern int distance_set_date(const Set *s, DateADT d);
1012extern double distance_set_float(const Set *s, double d);
1013extern int distance_set_int(const Set *s, int i);
1014extern double distance_set_timestamptz(const Set *s, TimestampTz t);
1015extern int64 distance_span_bigint(const Span *s, int64 i);
1016extern int distance_span_date(const Span *s, DateADT d);
1017extern double distance_span_float(const Span *s, double d);
1018extern int distance_span_int(const Span *s, int i);
1019extern double distance_span_timestamptz(const Span *s, TimestampTz t);
1020extern int64 distance_spanset_bigint(const SpanSet *ss, int64 i);
1021extern int distance_spanset_date(const SpanSet *ss, DateADT d);
1022extern double distance_spanset_float(const SpanSet *ss, double d);
1023extern int distance_spanset_int(const SpanSet *ss, int i);
1024extern double distance_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
1025extern double distance_tstzset_tstzset(const Set *s1, const Set *s2);
1026extern double distance_tstzspan_tstzspan(const Span *s1, const Span *s2);
1027extern double distance_tstzspanset_tstzspan(const SpanSet *ss, const Span *s);
1028extern double distance_tstzspanset_tstzspanset(const SpanSet *ss1, const SpanSet *ss2);
1029
1030/*****************************************************************************
1031 * Aggregate functions for set and span types
1032 *****************************************************************************/
1033
1038extern Span *float_extent_transfn(Span *state, double d);
1039extern Set *float_union_transfn(Set *state, double d);
1040extern Span *int_extent_transfn(Span *state, int i);
1041extern Set *int_union_transfn(Set *state, int32 i);
1042extern Span *set_extent_transfn(Span *state, const Set *s);
1043extern Set *set_union_finalfn(Set *state);
1044extern Set *set_union_transfn(Set *state, Set *s);
1045extern Span *span_extent_transfn(Span *state, const Span *s);
1046extern SpanSet *span_union_transfn(SpanSet *state, const Span *s);
1047extern Span *spanset_extent_transfn(Span *state, const SpanSet *ss);
1050extern Set *text_union_transfn(Set *state, const text *txt);
1053
1054/*****************************************************************************
1055 * Bin functions for span and spanset types
1056 *****************************************************************************/
1057
1058extern int64 bigint_get_bin(int64 value, int64 vsize, int64 vorigin);
1059extern Span *bigintspan_bins(const Span *s, int64 vsize, int64 vorigin, int *count);
1060extern Span *bigintspanset_bins(const SpanSet *ss, int64 vsize, int64 vorigin, int *count);
1061extern DateADT date_get_bin(DateADT d, const Interval *duration, DateADT torigin);
1062extern Span *datespan_bins(const Span *s, const Interval *duration, DateADT torigin, int *count);
1063extern Span *datespanset_bins(const SpanSet *ss, const Interval *duration, DateADT torigin, int *count);
1064extern double float_get_bin(double value, double vsize, double vorigin);
1065extern Span *floatspan_bins(const Span *s, double vsize, double vorigin, int *count);
1066extern Span *floatspanset_bins(const SpanSet *ss, double vsize, double vorigin, int *count);
1067extern int int_get_bin(int value, int vsize, int vorigin);
1068extern Span *intspan_bins(const Span *s, int vsize, int vorigin, int *count);
1069extern Span *intspanset_bins(const SpanSet *ss, int vsize, int vorigin, int *count);
1070extern TimestampTz timestamptz_get_bin(TimestampTz t, const Interval *duration, TimestampTz torigin);
1071extern Span *tstzspan_bins(const Span *s, const Interval *duration, TimestampTz origin, int *count);
1072extern Span *tstzspanset_bins(const SpanSet *ss, const Interval *duration, TimestampTz torigin, int *count);
1073
1074/*===========================================================================*
1075 * Functions for temporal boxes
1076 *===========================================================================*/
1077
1078/*****************************************************************************
1079 * Input and output functions for box types
1080 *****************************************************************************/
1081
1082extern char *tbox_as_hexwkb(const TBox *box, uint8_t variant, size_t *size);
1083extern uint8_t *tbox_as_wkb(const TBox *box, uint8_t variant, size_t *size_out);
1084extern TBox *tbox_from_hexwkb(const char *hexwkb);
1085extern TBox *tbox_from_wkb(const uint8_t *wkb, size_t size);
1086extern TBox *tbox_in(const char *str);
1087extern char *tbox_out(const TBox *box, int maxdd);
1088
1089/*****************************************************************************
1090 * Constructor functions for box types
1091 *****************************************************************************/
1092
1093extern TBox *float_timestamptz_to_tbox(double d, TimestampTz t);
1094extern TBox *float_tstzspan_to_tbox(double d, const Span *s);
1095extern TBox *int_timestamptz_to_tbox(int i, TimestampTz t);
1096extern TBox *int_tstzspan_to_tbox(int i, const Span *s);
1097extern TBox *numspan_tstzspan_to_tbox(const Span *span, const Span *s);
1098extern TBox *numspan_timestamptz_to_tbox(const Span *span, TimestampTz t);
1099extern TBox *tbox_copy(const TBox *box);
1100extern TBox *tbox_make(const Span *s, const Span *p);
1101
1102/*****************************************************************************
1103 * Conversion functions for box types
1104 *****************************************************************************/
1105
1106extern TBox *float_to_tbox(double d);
1107extern TBox *int_to_tbox(int i);
1108extern TBox *set_to_tbox(const Set *s);
1109extern TBox *span_to_tbox(const Span *s);
1110extern TBox *spanset_to_tbox(const SpanSet *ss);
1111extern Span *tbox_to_intspan(const TBox *box);
1112extern Span *tbox_to_floatspan(const TBox *box);
1113extern Span *tbox_to_tstzspan(const TBox *box);
1115
1116/*****************************************************************************
1117 * Accessor functions for box types
1118 *****************************************************************************/
1119
1120extern bool tbox_hast(const TBox *box);
1121extern bool tbox_hasx(const TBox *box);
1122extern bool tbox_tmax(const TBox *box, TimestampTz *result);
1123extern bool tbox_tmax_inc(const TBox *box, bool *result);
1124extern bool tbox_tmin(const TBox *box, TimestampTz *result);
1125extern bool tbox_tmin_inc(const TBox *box, bool *result);
1126extern bool tbox_xmax(const TBox *box, double *result);
1127extern bool tbox_xmax_inc(const TBox *box, bool *result);
1128extern bool tbox_xmin(const TBox *box, double *result);
1129extern bool tbox_xmin_inc(const TBox *box, bool *result);
1130extern bool tboxfloat_xmax(const TBox *box, double *result);
1131extern bool tboxfloat_xmin(const TBox *box, double *result);
1132extern bool tboxint_xmax(const TBox *box, int *result);
1133extern bool tboxint_xmin(const TBox *box, int *result);
1134
1135/*****************************************************************************
1136 * Transformation functions for box types
1137 *****************************************************************************/
1138
1139extern TBox *tbox_expand_float(const TBox *box, double d);
1140extern TBox *tbox_expand_int(const TBox *box, int i);
1141extern TBox *tbox_expand_time(const TBox *box, const Interval *interv);
1142extern TBox *tbox_round(const TBox *box, int maxdd);
1143extern TBox *tbox_shift_scale_float(const TBox *box, double shift, double width, bool hasshift, bool haswidth);
1144extern TBox *tbox_shift_scale_int(const TBox *box, int shift, int width, bool hasshift, bool haswidth);
1145extern TBox *tbox_shift_scale_time(const TBox *box, const Interval *shift, const Interval *duration);
1146
1147/*****************************************************************************
1148 * Set functions for box types
1149 *****************************************************************************/
1150
1151extern TBox *union_tbox_tbox(const TBox *box1, const TBox *box2, bool strict);
1152extern TBox *intersection_tbox_tbox(const TBox *box1, const TBox *box2);
1153
1154/*****************************************************************************
1155 * Bounding box functions for box types
1156 *****************************************************************************/
1157
1158/* Topological functions for box types */
1159
1160extern bool adjacent_tbox_tbox(const TBox *box1, const TBox *box2);
1161extern bool contained_tbox_tbox(const TBox *box1, const TBox *box2);
1162extern bool contains_tbox_tbox(const TBox *box1, const TBox *box2);
1163extern bool overlaps_tbox_tbox(const TBox *box1, const TBox *box2);
1164extern bool same_tbox_tbox(const TBox *box1, const TBox *box2);
1165
1166/*****************************************************************************/
1167
1168/* Position functions for box types */
1169
1170extern bool after_tbox_tbox(const TBox *box1, const TBox *box2);
1171extern bool before_tbox_tbox(const TBox *box1, const TBox *box2);
1172extern bool left_tbox_tbox(const TBox *box1, const TBox *box2);
1173extern bool overafter_tbox_tbox(const TBox *box1, const TBox *box2);
1174extern bool overbefore_tbox_tbox(const TBox *box1, const TBox *box2);
1175extern bool overleft_tbox_tbox(const TBox *box1, const TBox *box2);
1176extern bool overright_tbox_tbox(const TBox *box1, const TBox *box2);
1177extern bool right_tbox_tbox(const TBox *box1, const TBox *box2);
1178
1179/*****************************************************************************
1180 * Comparison functions for box types
1181 *****************************************************************************/
1182
1183extern int tbox_cmp(const TBox *box1, const TBox *box2);
1184extern bool tbox_eq(const TBox *box1, const TBox *box2);
1185extern bool tbox_ge(const TBox *box1, const TBox *box2);
1186extern bool tbox_gt(const TBox *box1, const TBox *box2);
1187extern bool tbox_le(const TBox *box1, const TBox *box2);
1188extern bool tbox_lt(const TBox *box1, const TBox *box2);
1189extern bool tbox_ne(const TBox *box1, const TBox *box2);
1190
1191/*===========================================================================*
1192 * Functions for temporal types
1193 *===========================================================================*/
1194
1195/*****************************************************************************
1196 * Input and output functions for temporal types
1197 *****************************************************************************/
1198
1199extern Temporal *tbool_from_mfjson(const char *str);
1200extern Temporal *tbool_in(const char *str);
1201extern char *tbool_out(const Temporal *temp);
1202extern char *temporal_as_hexwkb(const Temporal *temp, uint8_t variant, size_t *size_out);
1203extern char *temporal_as_mfjson(const Temporal *temp, bool with_bbox, int flags, int precision, const char *srs);
1204extern uint8_t *temporal_as_wkb(const Temporal *temp, uint8_t variant, size_t *size_out);
1205extern Temporal *temporal_from_hexwkb(const char *hexwkb);
1206extern Temporal *temporal_from_wkb(const uint8_t *wkb, size_t size);
1207extern Temporal *tfloat_from_mfjson(const char *str);
1208extern Temporal *tfloat_in(const char *str);
1209extern char *tfloat_out(const Temporal *temp, int maxdd);
1210extern Temporal *tint_from_mfjson(const char *str);
1211extern Temporal *tint_in(const char *str);
1212extern char *tint_out(const Temporal *temp);
1213extern Temporal *ttext_from_mfjson(const char *str);
1214extern Temporal *ttext_in(const char *str);
1215extern char *ttext_out(const Temporal *temp);
1216
1217/*****************************************************************************
1218 * Constructor functions for temporal types
1219 *****************************************************************************/
1220
1221extern Temporal *tbool_from_base_temp(bool b, const Temporal *temp);
1222extern TInstant *tboolinst_make(bool b, TimestampTz t);
1223extern TSequence *tboolseq_from_base_tstzset(bool b, const Set *s);
1224extern TSequence *tboolseq_from_base_tstzspan(bool b, const Span *s);
1225extern TSequenceSet *tboolseqset_from_base_tstzspanset(bool b, const SpanSet *ss);
1226extern Temporal *temporal_copy(const Temporal *temp);
1227extern Temporal *tfloat_from_base_temp(double d, const Temporal *temp);
1228extern TInstant *tfloatinst_make(double d, TimestampTz t);
1229extern TSequence *tfloatseq_from_base_tstzset(double d, const Set *s);
1230extern TSequence *tfloatseq_from_base_tstzspan(double d, const Span *s, interpType interp);
1231extern TSequenceSet *tfloatseqset_from_base_tstzspanset(double d, const SpanSet *ss, interpType interp);
1232extern Temporal *tint_from_base_temp(int i, const Temporal *temp);
1233extern TInstant *tintinst_make(int i, TimestampTz t);
1234extern TSequence *tintseq_from_base_tstzset(int i, const Set *s);
1235extern TSequence *tintseq_from_base_tstzspan(int i, const Span *s);
1236extern TSequenceSet *tintseqset_from_base_tstzspanset(int i, const SpanSet *ss);
1237extern TSequence *tsequence_make(const TInstant **instants, int count, bool lower_inc, bool upper_inc, interpType interp, bool normalize);
1238extern TSequenceSet *tsequenceset_make(const TSequence **sequences, int count, bool normalize);
1239extern TSequenceSet *tsequenceset_make_gaps(const TInstant **instants, int count, interpType interp, const Interval *maxt, double maxdist);
1240extern Temporal *ttext_from_base_temp(const text *txt, const Temporal *temp);
1241extern TInstant *ttextinst_make(const text *txt, TimestampTz t);
1242extern TSequence *ttextseq_from_base_tstzset(const text *txt, const Set *s);
1243extern TSequence *ttextseq_from_base_tstzspan(const text *txt, const Span *s);
1244extern TSequenceSet *ttextseqset_from_base_tstzspanset(const text *txt, const SpanSet *ss);
1245
1246/*****************************************************************************
1247 * Conversion functions for temporal types
1248 *****************************************************************************/
1249
1250extern Temporal *tbool_to_tint(const Temporal *temp);
1251extern Span *temporal_to_tstzspan(const Temporal *temp);
1252extern Temporal *tfloat_to_tint(const Temporal *temp);
1253extern Temporal *tint_to_tfloat(const Temporal *temp);
1254extern Span *tnumber_to_span(const Temporal *temp);
1255extern TBox *tnumber_to_tbox (const Temporal *temp);
1256
1257/*****************************************************************************
1258 * Accessor functions for temporal types
1259 *****************************************************************************/
1260
1261extern bool tbool_end_value(const Temporal *temp);
1262extern bool tbool_start_value(const Temporal *temp);
1263extern bool tbool_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, bool *value);
1264extern bool tbool_value_n(const Temporal *temp, int n, bool *result);
1265extern bool *tbool_values(const Temporal *temp, int *count);
1266extern Interval *temporal_duration(const Temporal *temp, bool boundspan);
1267extern TInstant *temporal_end_instant(const Temporal *temp);
1268extern TSequence *temporal_end_sequence(const Temporal *temp);
1270extern uint32 temporal_hash(const Temporal *temp);
1271extern TInstant *temporal_instant_n(const Temporal *temp, int n);
1272extern TInstant **temporal_instants(const Temporal *temp, int *count);
1273extern const char *temporal_interp(const Temporal *temp);
1274extern bool temporal_lower_inc(const Temporal *temp);
1275extern TInstant *temporal_max_instant(const Temporal *temp);
1276extern TInstant *temporal_min_instant(const Temporal *temp);
1277extern int temporal_num_instants(const Temporal *temp);
1278extern int temporal_num_sequences(const Temporal *temp);
1279extern int temporal_num_timestamps(const Temporal *temp);
1280extern TSequence **temporal_segments(const Temporal *temp, int *count);
1281extern TSequence *temporal_sequence_n(const Temporal *temp, int i);
1282extern TSequence **temporal_sequences(const Temporal *temp, int *count);
1283extern TInstant *temporal_start_instant(const Temporal *temp);
1284extern TSequence *temporal_start_sequence(const Temporal *temp);
1286extern TSequenceSet *temporal_stops(const Temporal *temp, double maxdist, const Interval *minduration);
1287extern const char *temporal_subtype(const Temporal *temp);
1288extern SpanSet *temporal_time(const Temporal *temp);
1289extern TimestampTz *temporal_timestamps(const Temporal *temp, int *count);
1290extern bool temporal_timestamptz_n(const Temporal *temp, int n, TimestampTz *result);
1291extern bool temporal_upper_inc(const Temporal *temp);
1292extern double tfloat_end_value(const Temporal *temp);
1293extern double tfloat_max_value(const Temporal *temp);
1294extern double tfloat_min_value(const Temporal *temp);
1295extern double tfloat_start_value(const Temporal *temp);
1296extern bool tfloat_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, double *value);
1297extern bool tfloat_value_n(const Temporal *temp, int n, double *result);
1298extern double *tfloat_values(const Temporal *temp, int *count);
1299extern int tint_end_value(const Temporal *temp);
1300extern int tint_max_value(const Temporal *temp);
1301extern int tint_min_value(const Temporal *temp);
1302extern int tint_start_value(const Temporal *temp);
1303extern bool tint_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, int *value);
1304extern bool tint_value_n(const Temporal *temp, int n, int *result);
1305extern int *tint_values(const Temporal *temp, int *count);
1306extern double tnumber_integral(const Temporal *temp);
1307extern double tnumber_twavg(const Temporal *temp);
1308extern SpanSet *tnumber_valuespans(const Temporal *temp);
1309extern text *ttext_end_value(const Temporal *temp);
1310extern text *ttext_max_value(const Temporal *temp);
1311extern text *ttext_min_value(const Temporal *temp);
1312extern text *ttext_start_value(const Temporal *temp);
1313extern bool ttext_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, text **value);
1314extern bool ttext_value_n(const Temporal *temp, int n, text **result);
1315extern text **ttext_values(const Temporal *temp, int *count);
1316
1317/*****************************************************************************
1318 * Transformation functions for temporal types
1319 *****************************************************************************/
1320
1321extern double float_degrees(double value, bool normalize);
1322extern Temporal **temparr_round(const Temporal **temp, int count, int maxdd);
1323extern Temporal *temporal_round(const Temporal *temp, int maxdd);
1324extern Temporal *temporal_scale_time(const Temporal *temp, const Interval *duration);
1325extern Temporal *temporal_set_interp(const Temporal *temp, interpType interp);
1326extern Temporal *temporal_shift_scale_time(const Temporal *temp, const Interval *shift, const Interval *duration);
1327extern Temporal *temporal_shift_time(const Temporal *temp, const Interval *shift);
1328extern TInstant *temporal_to_tinstant(const Temporal *temp);
1329extern TSequence *temporal_to_tsequence(const Temporal *temp, interpType interp);
1330extern TSequenceSet *temporal_to_tsequenceset(const Temporal *temp, interpType interp);
1331extern Temporal *tfloat_ceil(const Temporal *temp);
1332extern Temporal *tfloat_degrees(const Temporal *temp, bool normalize);
1333extern Temporal *tfloat_floor(const Temporal *temp);
1334extern Temporal *tfloat_radians(const Temporal *temp);
1335extern Temporal *tfloat_scale_value(const Temporal *temp, double width);
1336extern Temporal *tfloat_shift_scale_value(const Temporal *temp, double shift, double width);
1337extern Temporal *tfloat_shift_value(const Temporal *temp, double shift);
1338extern Temporal *tint_scale_value(const Temporal *temp, int width);
1339extern Temporal *tint_shift_scale_value(const Temporal *temp, int shift, int width);
1340extern Temporal *tint_shift_value(const Temporal *temp, int shift);
1341
1342/*****************************************************************************
1343 * Modification functions for temporal types
1344 *****************************************************************************/
1345
1346extern Temporal *temporal_append_tinstant(Temporal *temp, const TInstant *inst, interpType interp, double maxdist, const Interval *maxt, bool expand);
1347extern Temporal *temporal_append_tsequence(Temporal *temp, const TSequence *seq, bool expand);
1349extern Temporal *temporal_delete_tstzset(const Temporal *temp, const Set *s, bool connect);
1350extern Temporal *temporal_delete_tstzspan(const Temporal *temp, const Span *s, bool connect);
1351extern Temporal *temporal_delete_tstzspanset(const Temporal *temp, const SpanSet *ss, bool connect);
1352extern Temporal *temporal_insert(const Temporal *temp1, const Temporal *temp2, bool connect);
1353extern Temporal *temporal_merge(const Temporal *temp1, const Temporal *temp2);
1354extern Temporal *temporal_merge_array(const Temporal **temparr, int count);
1355extern Temporal *temporal_update(const Temporal *temp1, const Temporal *temp2, bool connect);
1356
1357/*****************************************************************************
1358 * Restriction functions for temporal types
1359 *****************************************************************************/
1360
1361extern Temporal *tbool_at_value(const Temporal *temp, bool b);
1362extern Temporal *tbool_minus_value(const Temporal *temp, bool b);
1363extern Temporal *temporal_at_max(const Temporal *temp);
1364extern Temporal *temporal_at_min(const Temporal *temp);
1366extern Temporal *temporal_at_tstzset(const Temporal *temp, const Set *s);
1367extern Temporal *temporal_at_tstzspan(const Temporal *temp, const Span *s);
1368extern Temporal *temporal_at_tstzspanset(const Temporal *temp, const SpanSet *ss);
1369extern Temporal *temporal_at_values(const Temporal *temp, const Set *set);
1370extern Temporal *temporal_minus_max(const Temporal *temp);
1371extern Temporal *temporal_minus_min(const Temporal *temp);
1373extern Temporal *temporal_minus_tstzset(const Temporal *temp, const Set *s);
1374extern Temporal *temporal_minus_tstzspan(const Temporal *temp, const Span *s);
1375extern Temporal *temporal_minus_tstzspanset(const Temporal *temp, const SpanSet *ss);
1376extern Temporal *temporal_minus_values(const Temporal *temp, const Set *set);
1377extern Temporal *tfloat_at_value(const Temporal *temp, double d);
1378extern Temporal *tfloat_minus_value(const Temporal *temp, double d);
1379extern Temporal *tint_at_value(const Temporal *temp, int i);
1380extern Temporal *tint_minus_value(const Temporal *temp, int i);
1381extern Temporal *tnumber_at_span(const Temporal *temp, const Span *span);
1382extern Temporal *tnumber_at_spanset(const Temporal *temp, const SpanSet *ss);
1383extern Temporal *tnumber_at_tbox(const Temporal *temp, const TBox *box);
1384extern Temporal *tnumber_minus_span(const Temporal *temp, const Span *span);
1385extern Temporal *tnumber_minus_spanset(const Temporal *temp, const SpanSet *ss);
1386extern Temporal *tnumber_minus_tbox(const Temporal *temp, const TBox *box);
1387extern Temporal *ttext_at_value(const Temporal *temp, text *txt);
1388extern Temporal *ttext_minus_value(const Temporal *temp, text *txt);
1389
1390/*****************************************************************************
1391 * Comparison functions for temporal types
1392 *****************************************************************************/
1393
1394/* Traditional comparison functions for temporal types */
1395
1396extern int temporal_cmp(const Temporal *temp1, const Temporal *temp2);
1397extern bool temporal_eq(const Temporal *temp1, const Temporal *temp2);
1398extern bool temporal_ge(const Temporal *temp1, const Temporal *temp2);
1399extern bool temporal_gt(const Temporal *temp1, const Temporal *temp2);
1400extern bool temporal_le(const Temporal *temp1, const Temporal *temp2);
1401extern bool temporal_lt(const Temporal *temp1, const Temporal *temp2);
1402extern bool temporal_ne(const Temporal *temp1, const Temporal *temp2);
1403
1404/*****************************************************************************/
1405
1406/* Ever and always comparison functions for temporal types */
1407
1408extern int always_eq_bool_tbool(bool b, const Temporal *temp);
1409extern int always_eq_float_tfloat(double d, const Temporal *temp);
1410extern int always_eq_int_tint(int i, const Temporal *temp);
1411extern int always_eq_tbool_bool(const Temporal *temp, bool b);
1412extern int always_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1413extern int always_eq_text_ttext(const text *txt, const Temporal *temp);
1414extern int always_eq_tfloat_float(const Temporal *temp, double d);
1415extern int always_eq_tint_int(const Temporal *temp, int i);
1416extern int always_eq_ttext_text(const Temporal *temp, const text *txt);
1417extern int always_ge_float_tfloat(double d, const Temporal *temp);
1418extern int always_ge_int_tint(int i, const Temporal *temp);
1419extern int always_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1420extern int always_ge_text_ttext(const text *txt, const Temporal *temp);
1421extern int always_ge_tfloat_float(const Temporal *temp, double d);
1422extern int always_ge_tint_int(const Temporal *temp, int i);
1423extern int always_ge_ttext_text(const Temporal *temp, const text *txt);
1424extern int always_gt_float_tfloat(double d, const Temporal *temp);
1425extern int always_gt_int_tint(int i, const Temporal *temp);
1426extern int always_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1427extern int always_gt_text_ttext(const text *txt, const Temporal *temp);
1428extern int always_gt_tfloat_float(const Temporal *temp, double d);
1429extern int always_gt_tint_int(const Temporal *temp, int i);
1430extern int always_gt_ttext_text(const Temporal *temp, const text *txt);
1431extern int always_le_float_tfloat(double d, const Temporal *temp);
1432extern int always_le_int_tint(int i, const Temporal *temp);
1433extern int always_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1434extern int always_le_text_ttext(const text *txt, const Temporal *temp);
1435extern int always_le_tfloat_float(const Temporal *temp, double d);
1436extern int always_le_tint_int(const Temporal *temp, int i);
1437extern int always_le_ttext_text(const Temporal *temp, const text *txt);
1438extern int always_lt_float_tfloat(double d, const Temporal *temp);
1439extern int always_lt_int_tint(int i, const Temporal *temp);
1440extern int always_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1441extern int always_lt_text_ttext(const text *txt, const Temporal *temp);
1442extern int always_lt_tfloat_float(const Temporal *temp, double d);
1443extern int always_lt_tint_int(const Temporal *temp, int i);
1444extern int always_lt_ttext_text(const Temporal *temp, const text *txt);
1445extern int always_ne_bool_tbool(bool b, const Temporal *temp);
1446extern int always_ne_float_tfloat(double d, const Temporal *temp);
1447extern int always_ne_int_tint(int i, const Temporal *temp);
1448extern int always_ne_tbool_bool(const Temporal *temp, bool b);
1449extern int always_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1450extern int always_ne_text_ttext(const text *txt, const Temporal *temp);
1451extern int always_ne_tfloat_float(const Temporal *temp, double d);
1452extern int always_ne_tint_int(const Temporal *temp, int i);
1453extern int always_ne_ttext_text(const Temporal *temp, const text *txt);
1454extern int ever_eq_bool_tbool(bool b, const Temporal *temp);
1455extern int ever_eq_float_tfloat(double d, const Temporal *temp);
1456extern int ever_eq_int_tint(int i, const Temporal *temp);
1457extern int ever_eq_tbool_bool(const Temporal *temp, bool b);
1458extern int ever_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1459extern int ever_eq_text_ttext(const text *txt, const Temporal *temp);
1460extern int ever_eq_tfloat_float(const Temporal *temp, double d);
1461extern int ever_eq_tint_int(const Temporal *temp, int i);
1462extern int ever_eq_ttext_text(const Temporal *temp, const text *txt);
1463extern int ever_ge_float_tfloat(double d, const Temporal *temp);
1464extern int ever_ge_int_tint(int i, const Temporal *temp);
1465extern int ever_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1466extern int ever_ge_text_ttext(const text *txt, const Temporal *temp);
1467extern int ever_ge_tfloat_float(const Temporal *temp, double d);
1468extern int ever_ge_tint_int(const Temporal *temp, int i);
1469extern int ever_ge_ttext_text(const Temporal *temp, const text *txt);
1470extern int ever_gt_float_tfloat(double d, const Temporal *temp);
1471extern int ever_gt_int_tint(int i, const Temporal *temp);
1472extern int ever_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1473extern int ever_gt_text_ttext(const text *txt, const Temporal *temp);
1474extern int ever_gt_tfloat_float(const Temporal *temp, double d);
1475extern int ever_gt_tint_int(const Temporal *temp, int i);
1476extern int ever_gt_ttext_text(const Temporal *temp, const text *txt);
1477extern int ever_le_float_tfloat(double d, const Temporal *temp);
1478extern int ever_le_int_tint(int i, const Temporal *temp);
1479extern int ever_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1480extern int ever_le_text_ttext(const text *txt, const Temporal *temp);
1481extern int ever_le_tfloat_float(const Temporal *temp, double d);
1482extern int ever_le_tint_int(const Temporal *temp, int i);
1483extern int ever_le_ttext_text(const Temporal *temp, const text *txt);
1484extern int ever_lt_float_tfloat(double d, const Temporal *temp);
1485extern int ever_lt_int_tint(int i, const Temporal *temp);
1486extern int ever_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1487extern int ever_lt_text_ttext(const text *txt, const Temporal *temp);
1488extern int ever_lt_tfloat_float(const Temporal *temp, double d);
1489extern int ever_lt_tint_int(const Temporal *temp, int i);
1490extern int ever_lt_ttext_text(const Temporal *temp, const text *txt);
1491extern int ever_ne_bool_tbool(bool b, const Temporal *temp);
1492extern int ever_ne_float_tfloat(double d, const Temporal *temp);
1493extern int ever_ne_int_tint(int i, const Temporal *temp);
1494extern int ever_ne_tbool_bool(const Temporal *temp, bool b);
1495extern int ever_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1496extern int ever_ne_text_ttext(const text *txt, const Temporal *temp);
1497extern int ever_ne_tfloat_float(const Temporal *temp, double d);
1498extern int ever_ne_tint_int(const Temporal *temp, int i);
1499extern int ever_ne_ttext_text(const Temporal *temp, const text *txt);
1500
1501/*****************************************************************************/
1502
1503/* Temporal comparison functions for temporal types */
1504
1505extern Temporal *teq_bool_tbool(bool b, const Temporal *temp);
1506extern Temporal *teq_float_tfloat(double d, const Temporal *temp);
1507extern Temporal *teq_int_tint(int i, const Temporal *temp);
1508extern Temporal *teq_tbool_bool(const Temporal *temp, bool b);
1509extern Temporal *teq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1510extern Temporal *teq_text_ttext(const text *txt, const Temporal *temp);
1511extern Temporal *teq_tfloat_float(const Temporal *temp, double d);
1512extern Temporal *teq_tint_int(const Temporal *temp, int i);
1513extern Temporal *teq_ttext_text(const Temporal *temp, const text *txt);
1514extern Temporal *tge_float_tfloat(double d, const Temporal *temp);
1515extern Temporal *tge_int_tint(int i, const Temporal *temp);
1516extern Temporal *tge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1517extern Temporal *tge_text_ttext(const text *txt, const Temporal *temp);
1518extern Temporal *tge_tfloat_float(const Temporal *temp, double d);
1519extern Temporal *tge_tint_int(const Temporal *temp, int i);
1520extern Temporal *tge_ttext_text(const Temporal *temp, const text *txt);
1521extern Temporal *tgt_float_tfloat(double d, const Temporal *temp);
1522extern Temporal *tgt_int_tint(int i, const Temporal *temp);
1523extern Temporal *tgt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1524extern Temporal *tgt_text_ttext(const text *txt, const Temporal *temp);
1525extern Temporal *tgt_tfloat_float(const Temporal *temp, double d);
1526extern Temporal *tgt_tint_int(const Temporal *temp, int i);
1527extern Temporal *tgt_ttext_text(const Temporal *temp, const text *txt);
1528extern Temporal *tle_float_tfloat(double d, const Temporal *temp);
1529extern Temporal *tle_int_tint(int i, const Temporal *temp);
1530extern Temporal *tle_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1531extern Temporal *tle_text_ttext(const text *txt, const Temporal *temp);
1532extern Temporal *tle_tfloat_float(const Temporal *temp, double d);
1533extern Temporal *tle_tint_int(const Temporal *temp, int i);
1534extern Temporal *tle_ttext_text(const Temporal *temp, const text *txt);
1535extern Temporal *tlt_float_tfloat(double d, const Temporal *temp);
1536extern Temporal *tlt_int_tint(int i, const Temporal *temp);
1537extern Temporal *tlt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1538extern Temporal *tlt_text_ttext(const text *txt, const Temporal *temp);
1539extern Temporal *tlt_tfloat_float(const Temporal *temp, double d);
1540extern Temporal *tlt_tint_int(const Temporal *temp, int i);
1541extern Temporal *tlt_ttext_text(const Temporal *temp, const text *txt);
1542extern Temporal *tne_bool_tbool(bool b, const Temporal *temp);
1543extern Temporal *tne_float_tfloat(double d, const Temporal *temp);
1544extern Temporal *tne_int_tint(int i, const Temporal *temp);
1545extern Temporal *tne_tbool_bool(const Temporal *temp, bool b);
1546extern Temporal *tne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1547extern Temporal *tne_text_ttext(const text *txt, const Temporal *temp);
1548extern Temporal *tne_tfloat_float(const Temporal *temp, double d);
1549extern Temporal *tne_tint_int(const Temporal *temp, int i);
1550extern Temporal *tne_ttext_text(const Temporal *temp, const text *txt);
1551
1552/*****************************************************************************
1553 * Bounding box functions for temporal types
1554 *****************************************************************************/
1555
1556/* Split functions */
1557
1558extern Span *temporal_spans(const Temporal *temp, int *count);
1559extern Span *temporal_split_each_n_spans(const Temporal *temp, int elem_count, int *count);
1560extern Span *temporal_split_n_spans(const Temporal *temp, int span_count, int *count);
1561extern TBox *tnumber_split_each_n_tboxes(const Temporal *temp, int elem_count, int *count);
1562extern TBox *tnumber_split_n_tboxes(const Temporal *temp, int box_count, int *count);
1563extern TBox *tnumber_tboxes(const Temporal *temp, int *count);
1564
1565/* Topological functions for temporal types */
1566
1567extern bool adjacent_numspan_tnumber(const Span *s, const Temporal *temp);
1568extern bool adjacent_tbox_tnumber(const TBox *box, const Temporal *temp);
1569extern bool adjacent_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1570extern bool adjacent_temporal_tstzspan(const Temporal *temp, const Span *s);
1571extern bool adjacent_tnumber_numspan(const Temporal *temp, const Span *s);
1572extern bool adjacent_tnumber_tbox(const Temporal *temp, const TBox *box);
1573extern bool adjacent_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1574extern bool adjacent_tstzspan_temporal(const Span *s, const Temporal *temp);
1575extern bool contained_numspan_tnumber(const Span *s, const Temporal *temp);
1576extern bool contained_tbox_tnumber(const TBox *box, const Temporal *temp);
1577extern bool contained_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1578extern bool contained_temporal_tstzspan(const Temporal *temp, const Span *s);
1579extern bool contained_tnumber_numspan(const Temporal *temp, const Span *s);
1580extern bool contained_tnumber_tbox(const Temporal *temp, const TBox *box);
1581extern bool contained_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1582extern bool contained_tstzspan_temporal(const Span *s, const Temporal *temp);
1583extern bool contains_numspan_tnumber(const Span *s, const Temporal *temp);
1584extern bool contains_tbox_tnumber(const TBox *box, const Temporal *temp);
1585extern bool contains_temporal_tstzspan(const Temporal *temp, const Span *s);
1586extern bool contains_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1587extern bool contains_tnumber_numspan(const Temporal *temp, const Span *s);
1588extern bool contains_tnumber_tbox(const Temporal *temp, const TBox *box);
1589extern bool contains_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1590extern bool contains_tstzspan_temporal(const Span *s, const Temporal *temp);
1591extern bool overlaps_numspan_tnumber(const Span *s, const Temporal *temp);
1592extern bool overlaps_tbox_tnumber(const TBox *box, const Temporal *temp);
1593extern bool overlaps_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1594extern bool overlaps_temporal_tstzspan(const Temporal *temp, const Span *s);
1595extern bool overlaps_tnumber_numspan(const Temporal *temp, const Span *s);
1596extern bool overlaps_tnumber_tbox(const Temporal *temp, const TBox *box);
1597extern bool overlaps_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1598extern bool overlaps_tstzspan_temporal(const Span *s, const Temporal *temp);
1599extern bool same_numspan_tnumber(const Span *s, const Temporal *temp);
1600extern bool same_tbox_tnumber(const TBox *box, const Temporal *temp);
1601extern bool same_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1602extern bool same_temporal_tstzspan(const Temporal *temp, const Span *s);
1603extern bool same_tnumber_numspan(const Temporal *temp, const Span *s);
1604extern bool same_tnumber_tbox(const Temporal *temp, const TBox *box);
1605extern bool same_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1606extern bool same_tstzspan_temporal(const Span *s, const Temporal *temp);
1607
1608/*****************************************************************************/
1609
1610/* Position functions for temporal types */
1611
1612extern bool after_tbox_tnumber(const TBox *box, const Temporal *temp);
1613extern bool after_temporal_tstzspan(const Temporal *temp, const Span *s);
1614extern bool after_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1615extern bool after_tnumber_tbox(const Temporal *temp, const TBox *box);
1616extern bool after_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1617extern bool after_tstzspan_temporal(const Span *s, const Temporal *temp);
1618extern bool before_tbox_tnumber(const TBox *box, const Temporal *temp);
1619extern bool before_temporal_tstzspan(const Temporal *temp, const Span *s);
1620extern bool before_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1621extern bool before_tnumber_tbox(const Temporal *temp, const TBox *box);
1622extern bool before_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1623extern bool before_tstzspan_temporal(const Span *s, const Temporal *temp);
1624extern bool left_tbox_tnumber(const TBox *box, const Temporal *temp);
1625extern bool left_numspan_tnumber(const Span *s, const Temporal *temp);
1626extern bool left_tnumber_numspan(const Temporal *temp, const Span *s);
1627extern bool left_tnumber_tbox(const Temporal *temp, const TBox *box);
1628extern bool left_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1629extern bool overafter_tbox_tnumber(const TBox *box, const Temporal *temp);
1630extern bool overafter_temporal_tstzspan(const Temporal *temp, const Span *s);
1631extern bool overafter_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1632extern bool overafter_tnumber_tbox(const Temporal *temp, const TBox *box);
1633extern bool overafter_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1634extern bool overafter_tstzspan_temporal(const Span *s, const Temporal *temp);
1635extern bool overbefore_tbox_tnumber(const TBox *box, const Temporal *temp);
1636extern bool overbefore_temporal_tstzspan(const Temporal *temp, const Span *s);
1637extern bool overbefore_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1638extern bool overbefore_tnumber_tbox(const Temporal *temp, const TBox *box);
1639extern bool overbefore_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1640extern bool overbefore_tstzspan_temporal(const Span *s, const Temporal *temp);
1641extern bool overleft_numspan_tnumber(const Span *s, const Temporal *temp);
1642extern bool overleft_tbox_tnumber(const TBox *box, const Temporal *temp);
1643extern bool overleft_tnumber_numspan(const Temporal *temp, const Span *s);
1644extern bool overleft_tnumber_tbox(const Temporal *temp, const TBox *box);
1645extern bool overleft_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1646extern bool overright_numspan_tnumber(const Span *s, const Temporal *temp);
1647extern bool overright_tbox_tnumber(const TBox *box, const Temporal *temp);
1648extern bool overright_tnumber_numspan(const Temporal *temp, const Span *s);
1649extern bool overright_tnumber_tbox(const Temporal *temp, const TBox *box);
1650extern bool overright_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1651extern bool right_numspan_tnumber(const Span *s, const Temporal *temp);
1652extern bool right_tbox_tnumber(const TBox *box, const Temporal *temp);
1653extern bool right_tnumber_numspan(const Temporal *temp, const Span *s);
1654extern bool right_tnumber_tbox(const Temporal *temp, const TBox *box);
1655extern bool right_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1656
1657/*****************************************************************************
1658 * Boolean functions for temporal types
1659 *****************************************************************************/
1660
1661extern Temporal *tand_bool_tbool(bool b, const Temporal *temp);
1662extern Temporal *tand_tbool_bool(const Temporal *temp, bool b);
1663extern Temporal *tand_tbool_tbool(const Temporal *temp1, const Temporal *temp2);
1664extern SpanSet *tbool_when_true(const Temporal *temp);
1665extern Temporal *tnot_tbool(const Temporal *temp);
1666extern Temporal *tor_bool_tbool(bool b, const Temporal *temp);
1667extern Temporal *tor_tbool_bool(const Temporal *temp, bool b);
1668extern Temporal *tor_tbool_tbool(const Temporal *temp1, const Temporal *temp2);
1669
1670/*****************************************************************************
1671 * Mathematical functions for temporal types
1672 *****************************************************************************/
1673
1674extern Temporal *add_float_tfloat(double d, const Temporal *tnumber);
1675extern Temporal *add_int_tint(int i, const Temporal *tnumber);
1676extern Temporal *add_tfloat_float(const Temporal *tnumber, double d);
1677extern Temporal *add_tint_int(const Temporal *tnumber, int i);
1678extern Temporal *add_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1679extern Temporal *div_float_tfloat(double d, const Temporal *tnumber);
1680extern Temporal *div_int_tint(int i, const Temporal *tnumber);
1681extern Temporal *div_tfloat_float(const Temporal *tnumber, double d);
1682extern Temporal *div_tint_int(const Temporal *tnumber, int i);
1683extern Temporal *div_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1684extern Temporal *mult_float_tfloat(double d, const Temporal *tnumber);
1685extern Temporal *mult_int_tint(int i, const Temporal *tnumber);
1686extern Temporal *mult_tfloat_float(const Temporal *tnumber, double d);
1687extern Temporal *mult_tint_int(const Temporal *tnumber, int i);
1688extern Temporal *mult_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1689extern Temporal *sub_float_tfloat(double d, const Temporal *tnumber);
1690extern Temporal *sub_int_tint(int i, const Temporal *tnumber);
1691extern Temporal *sub_tfloat_float(const Temporal *tnumber, double d);
1692extern Temporal *sub_tint_int(const Temporal *tnumber, int i);
1693extern Temporal *sub_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1694extern Temporal *tfloat_derivative(const Temporal *temp);
1695extern Temporal *tfloat_exp(const Temporal *temp);
1696extern Temporal *tfloat_ln(const Temporal *temp);
1697extern Temporal *tfloat_log10(const Temporal *temp);
1698extern Temporal *tnumber_abs(const Temporal *temp);
1699extern Temporal *tnumber_angular_difference(const Temporal *temp);
1700extern Temporal *tnumber_delta_value(const Temporal *temp);
1701
1702/*****************************************************************************
1703 * Text functions for temporal types
1704 *****************************************************************************/
1705
1706extern Temporal *textcat_text_ttext(const text *txt, const Temporal *temp);
1707extern Temporal *textcat_ttext_text(const Temporal *temp, const text *txt);
1708extern Temporal *textcat_ttext_ttext(const Temporal *temp1, const Temporal *temp2);
1709extern Temporal *ttext_initcap(const Temporal *temp);
1710extern Temporal *ttext_upper(const Temporal *temp);
1711extern Temporal *ttext_lower(const Temporal *temp);
1712
1713/*****************************************************************************
1714 * Distance functions for temporal types
1715 *****************************************************************************/
1716
1717extern Temporal *distance_tfloat_float(const Temporal *temp, double d);
1718extern Temporal *distance_tint_int(const Temporal *temp, int i);
1719extern Temporal *distance_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1720extern double nad_tboxfloat_tboxfloat(const TBox *box1, const TBox *box2);
1721extern int nad_tboxint_tboxint(const TBox *box1, const TBox *box2);
1722extern double nad_tfloat_float(const Temporal *temp, double d);
1723extern double nad_tfloat_tfloat(const Temporal *temp1, const Temporal *temp2);
1724extern double nad_tfloat_tbox(const Temporal *temp, const TBox *box);
1725extern int nad_tint_int(const Temporal *temp, int i);
1726extern int nad_tint_tbox(const Temporal *temp, const TBox *box);
1727extern int nad_tint_tint(const Temporal *temp1, const Temporal *temp2);
1728
1729/*****************************************************************************
1730 * Aggregate functions for temporal types
1731 *****************************************************************************/
1732
1733extern SkipList *tbool_tand_transfn(SkipList *state, const Temporal *temp);
1734extern SkipList *tbool_tor_transfn(SkipList *state, const Temporal *temp);
1735extern Span *temporal_extent_transfn(Span *s, const Temporal *temp);
1738extern SkipList *tfloat_tmax_transfn(SkipList *state, const Temporal *temp);
1739extern SkipList *tfloat_tmin_transfn(SkipList *state, const Temporal *temp);
1740extern SkipList *tfloat_tsum_transfn(SkipList *state, const Temporal *temp);
1741extern SkipList *tfloat_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1742extern SkipList *tfloat_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1743extern SkipList *tfloat_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1745extern SkipList *tint_tmax_transfn(SkipList *state, const Temporal *temp);
1746extern SkipList *tint_tmin_transfn(SkipList *state, const Temporal *temp);
1747extern SkipList *tint_tsum_transfn(SkipList *state, const Temporal *temp);
1748extern SkipList *tint_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1749extern SkipList *tint_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1750extern SkipList *tint_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1751extern TBox *tnumber_extent_transfn(TBox *box, const Temporal *temp);
1753extern SkipList *tnumber_tavg_transfn(SkipList *state, const Temporal *temp);
1754extern SkipList *tnumber_wavg_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1758extern SkipList *ttext_tmax_transfn(SkipList *state, const Temporal *temp);
1759extern SkipList *ttext_tmin_transfn(SkipList *state, const Temporal *temp);
1760
1761/*****************************************************************************
1762 * Analytics functions for temporal types
1763 *****************************************************************************/
1764
1765/* Simplification functions for temporal types */
1766
1767extern Temporal *temporal_simplify_dp(const Temporal *temp, double eps_dist, bool synchronized);
1768extern Temporal *temporal_simplify_max_dist(const Temporal *temp, double eps_dist, bool synchronized);
1769extern Temporal *temporal_simplify_min_dist(const Temporal *temp, double dist);
1770extern Temporal *temporal_simplify_min_tdelta(const Temporal *temp, const Interval *mint);
1771
1772/*****************************************************************************/
1773
1774/* Reduction functions for temporal types */
1775
1776extern Temporal *temporal_tprecision(const Temporal *temp, const Interval *duration, TimestampTz origin);
1777extern Temporal *temporal_tsample(const Temporal *temp, const Interval *duration, TimestampTz origin, interpType interp);
1778
1779/*****************************************************************************/
1780
1781/* Similarity functions for temporal types */
1782
1783extern double temporal_dyntimewarp_distance(const Temporal *temp1, const Temporal *temp2);
1784extern Match *temporal_dyntimewarp_path(const Temporal *temp1, const Temporal *temp2, int *count);
1785extern double temporal_frechet_distance(const Temporal *temp1, const Temporal *temp2);
1786extern Match *temporal_frechet_path(const Temporal *temp1, const Temporal *temp2, int *count);
1787extern double temporal_hausdorff_distance(const Temporal *temp1, const Temporal *temp2);
1788
1789/*****************************************************************************/
1790
1791/* Tile functions for temporal types */
1792
1793extern Span *temporal_time_bins(const Temporal *temp, const Interval *duration, TimestampTz origin, int *count);
1794extern Temporal **temporal_time_split(const Temporal *temp, const Interval *duration, TimestampTz torigin, TimestampTz **time_bins, int *count);
1795extern TBox *tfloat_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count);
1796extern Span *tfloat_value_bins(const Temporal *temp, double vsize, double vorigin, int *count);
1797extern TBox *tfloat_value_boxes(const Temporal *temp, double vsize, double vorigin, int *count);
1798extern Temporal **tfloat_value_split(const Temporal *temp, double size, double origin, double **bins, int *count);
1799extern TBox *tfloat_value_time_boxes(const Temporal *temp, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count);
1800extern Temporal **tfloat_value_time_split(const Temporal *temp, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, double **value_bins, TimestampTz **time_bins, int *count);
1801extern TBox *tfloatbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count);
1802extern TBox *tfloatbox_value_tiles(const TBox *box, double vsize, double vorigin, int *count);
1803extern TBox *tfloatbox_value_time_tiles(const TBox *box, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count);
1804extern TBox *tint_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count);
1805extern Span *tint_value_bins(const Temporal *temp, int vsize, int vorigin, int *count);
1806extern TBox *tint_value_boxes(const Temporal *temp, int vsize, int vorigin, int *count);
1807extern Temporal **tint_value_split(const Temporal *temp, int vsize, int vorigin, int **value_bins, int *count);
1808extern TBox *tint_value_time_boxes(const Temporal *temp, int vsize, const Interval *duration, int vorigin, TimestampTz torigin, int *count);
1809extern Temporal **tint_value_time_split(const Temporal *temp, int size, const Interval *duration, int vorigin, TimestampTz torigin, int **value_bins, TimestampTz **time_bins, int *count);
1810extern TBox *tintbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count);
1811extern TBox *tintbox_value_tiles(const TBox *box, int xsize, int xorigin, int *count);
1812extern TBox *tintbox_value_time_tiles(const TBox *box, int xsize, const Interval *duration, int xorigin, TimestampTz torigin, int *count);
1813
1814/*****************************************************************************/
1815
1816#endif
const char *const months[]
Definition: datetime.c:55
const char *const days[]
Definition: datetime.c:58
DateADT timestamptz_to_date(TimestampTz t)
Convert a timestamp with time zone into a date.
Definition: postgres_types.c:1443
char * text_out(const text *txt)
Return the string representation of a text value.
Definition: type_out.c:97
TimestampTz date_to_timestamptz(DateADT d)
Convert a date into a timestamptz.
Definition: postgres_types.c:829
text * text_lower(const text *txt)
Return the text value transformed to lowercase.
Definition: postgres_types.c:2413
DateADT add_date_int(DateADT d, int32 days)
Return the addition of a date and a number of days.
Definition: postgres_types.c:843
DateADT minus_date_int(DateADT d, int32 days)
Return the subtraction of a date and a number of days.
Definition: postgres_types.c:871
TimestampTz add_timestamptz_interval(TimestampTz t, const Interval *interv)
Return the addition of a timestamp and an interval.
Definition: postgres_types.c:1892
Interval * minus_date_date(DateADT d1, DateADT d2)
Return the subtraction of two dates.
Definition: postgres_types.c:898
double float_log10(double d)
Return the logarithm base 10 of a double.
Definition: tnumber_mathfuncs.c:845
Timestamp date_to_timestamp(DateADT dateVal)
Convert a date into a timestamp.
Definition: postgres_types.c:981
TimestampTz minus_timestamptz_interval(TimestampTz t, const Interval *interv)
Return the subtraction of a timestamptz and an interval.
Definition: postgres_types.c:1989
char * text2cstring(const text *txt)
Convert a text into a C string.
Definition: postgres_types.c:2274
int text_cmp(const text *txt1, const text *txt2)
Comparison function for text values.
Definition: postgres_types.c:2311
double float_exp(double d)
Return the exponential of a double.
Definition: tnumber_mathfuncs.c:692
text * textcat_text_text(const text *txt1, const text *txt2)
Return the concatenation of the two text values.
Definition: postgres_types.c:2344
char * bool_out(bool b)
Return the string representation of a boolean.
Definition: postgres_types.c:224
Interval * interval_make(int32 years, int32 months, int32 weeks, int32 days, int32 hours, int32 mins, double secs)
Return an interval constructed from its arguments.
Definition: postgres_types.c:1749
Interval * minus_timestamptz_timestamptz(TimestampTz t1, TimestampTz t2)
Return the subtraction of two timestamptz values.
Definition: postgres_types.c:2042
text * text_upper(const text *txt)
Return the text value transformed to uppercase.
Definition: postgres_types.c:2445
bool bool_in(const char *str)
Return a boolean from its string representation.
Definition: postgres_types.c:189
double float_round(double d, int maxdd)
Return a float number rounded to a given number of decimal places.
Definition: temporal.c:1259
double float_ln(double d)
Return the natural logarithm of a double.
Definition: tnumber_mathfuncs.c:773
DateADT timestamp_to_date(Timestamp t)
Convert a timestamp into a date.
Definition: postgres_types.c:995
Interval * mul_interval_double(const Interval *interv, double factor)
Return the multiplication of an interval and a factor.
Definition: postgres_types.c:2131
text * text_copy(const text *txt)
Copy a text value.
Definition: postgres_types.c:2327
text * cstring2text(const char *str)
Convert a C string into a text.
Definition: postgres_types.c:2255
TimestampTz timestamptz_shift(TimestampTz t, const Interval *interv)
Return a timestamptz shifted by an interval.
Definition: span.c:1328
Interval * add_interval_interval(const Interval *interv1, const Interval *interv2)
Return the addition of two intervals.
Definition: postgres_types.c:1839
text * text_initcap(const text *txt)
Convert the text value to initcap.
Definition: postgres_types.c:2477
bool tbox_tmin(const TBox *box, TimestampTz *result)
Return in the last argument the minimum T value of a temporal box.
Definition: tbox.c:969
bool tbox_xmax_inc(const TBox *box, bool *result)
Return in the last argument whether the maximum X value of a temporal box is inclusive.
Definition: tbox.c:950
bool tboxint_xmax(const TBox *box, int *result)
Return in the last argument the maximum X value of a temporal box.
Definition: tbox.c:908
bool tbox_tmax(const TBox *box, TimestampTz *result)
Return in the last argument the maximum T value of a temporal box.
Definition: tbox.c:1010
bool tboxint_xmin(const TBox *box, int *result)
Return in the last argument the minimum X value of a temporal box.
Definition: tbox.c:822
bool tbox_tmin_inc(const TBox *box, bool *result)
Return in the last argument whether the minimum T value of a temporal box is inclusive.
Definition: tbox.c:990
bool tbox_tmax_inc(const TBox *box, bool *result)
Return in the last argument whether the maximum T value of a temporal box is inclusive.
Definition: tbox.c:1031
bool tboxfloat_xmax(const TBox *box, double *result)
Return in the last argument the maximum X value of a temporal box.
Definition: tbox.c:928
bool tbox_xmin_inc(const TBox *box, bool *result)
Return in the last argument whether the minimum X value of a temporal box is inclusive.
Definition: tbox.c:864
bool tbox_hasx(const TBox *box)
Return true if a temporal box has value dimension.
Definition: tbox.c:771
bool tbox_hast(const TBox *box)
Return true if a temporal box has time dimension.
Definition: tbox.c:785
bool tboxfloat_xmin(const TBox *box, double *result)
Return in the last argument the minimum X value of a temporal box.
Definition: tbox.c:842
bool before_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is before the second one.
Definition: tbox.c:1526
bool overbefore_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is not after the second one.
Definition: tbox.c:1543
bool after_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is after the second one.
Definition: tbox.c:1560
bool left_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is to the left of the second one.
Definition: tbox.c:1452
bool overafter_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is not before the second one.
Definition: tbox.c:1577
bool right_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is to the right of the second one.
Definition: tbox.c:1489
bool overleft_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box does not extend to the right of the second one.
Definition: tbox.c:1471
bool overright_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box does not extend to the left of the second one.
Definition: tbox.c:1508
bool contains_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box contains the second one.
Definition: tbox.c:1345
bool adjacent_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are adjacent.
Definition: tbox.c:1423
bool overlaps_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if two temporal boxes overlap.
Definition: tbox.c:1379
bool same_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are equal in the common dimensions.
Definition: tbox.c:1401
bool contained_tbox_tbox(const TBox *box1, const TBox *box2)
Return true if the first temporal box is contained in the second one.
Definition: tbox.c:1367
bool tbox_gt(const TBox *box1, const TBox *box2)
Return true if the first temporal box is greater than the second one.
Definition: tbox.c:1806
bool tbox_ge(const TBox *box1, const TBox *box2)
Return true if the first temporal box is greater than or equal to the second one.
Definition: tbox.c:1793
bool tbox_le(const TBox *box1, const TBox *box2)
Return true if the first temporal box is less than or equal to the second one.
Definition: tbox.c:1780
bool tbox_lt(const TBox *box1, const TBox *box2)
Return true if the first temporal box is less than the second one.
Definition: tbox.c:1767
bool tbox_eq(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are equal.
Definition: tbox.c:1693
int tbox_cmp(const TBox *box1, const TBox *box2)
Return -1, 0, or 1 depending on whether the first temporal box is less than, equal to,...
Definition: tbox.c:1729
bool tbox_ne(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are different.
Definition: tbox.c:1715
TBox * numspan_tstzspan_to_tbox(const Span *span, const Span *s)
Return a temporal box from a number span and a timestamptz span.
Definition: tbox.c:347
TBox * tbox_copy(const TBox *box)
Return a copy of a temporal box.
Definition: tbox.c:211
TBox * int_tstzspan_to_tbox(int i, const Span *s)
Return a temporal box from an integer and a timestamptz span.
Definition: tbox.c:297
TBox * float_tstzspan_to_tbox(double d, const Span *s)
Return a temporal box from a float and a timestamptz span.
Definition: tbox.c:312
TBox * int_timestamptz_to_tbox(int i, TimestampTz t)
Return a temporal box from an integer and a timestamptz.
Definition: tbox.c:251
TBox * numspan_timestamptz_to_tbox(const Span *span, TimestampTz t)
Return a temporal box from a number span and a timestamptz.
Definition: tbox.c:328
TBox * float_timestamptz_to_tbox(double d, TimestampTz t)
Return a temporal box from a float and a timestamptz.
Definition: tbox.c:264
TBox * tbox_make(const Span *s, const Span *p)
Return a temporal box from a number span and a timestamptz span.
Definition: tbox.c:163
Span * tbox_to_tstzspan(const TBox *box)
Convert a temporal box into a timestamptz span.
Definition: tbox.c:751
TBox * int_to_tbox(int i)
Convert an integer into a temporal box.
Definition: tbox.c:417
Span * tbox_to_intspan(const TBox *box)
Convert a temporal box into an integer span.
Definition: tbox.c:688
TBox * set_to_tbox(const Set *s)
Convert a number or a timestamptz set into a temporal box.
Definition: tbox.c:551
TBox * float_to_tbox(double d)
Convert a float into a temporal box.
Definition: tbox.c:445
Span * tbox_to_floatspan(const TBox *box)
Convert a temporal box into a float span.
Definition: tbox.c:722
TBox * timestamptz_to_tbox(TimestampTz t)
Convert a timestamptz into a temporal box.
Definition: tbox.c:478
TBox * spanset_to_tbox(const SpanSet *ss)
Convert a number span set into a temporal box.
Definition: tbox.c:651
TBox * span_to_tbox(const Span *s)
Convert a number span into a temporal box.
Definition: tbox.c:614
TBox * tbox_in(const char *str)
Return a temporal box from its Well-Known Text (WKT) representation.
Definition: tbox.c:96
char * tbox_as_hexwkb(const TBox *box, uint8_t variant, size_t *size)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a temporal box.
Definition: type_out.c:2482
TBox * tbox_from_wkb(const uint8_t *wkb, size_t size)
Return a temporal box from its Well-Known Binary (WKB) representation.
Definition: type_in.c:2281
uint8_t * tbox_as_wkb(const TBox *box, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a temporal box.
Definition: type_out.c:2463
TBox * tbox_from_hexwkb(const char *hexwkb)
Return a temporal box from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: type_in.c:2296
char * tbox_out(const TBox *box, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal box.
Definition: tbox.c:112
TBox * intersection_tbox_tbox(const TBox *box1, const TBox *box2)
Return the intersection of two temporal boxes.
Definition: tbox.c:1664
TBox * union_tbox_tbox(const TBox *box1, const TBox *box2, bool strict)
Return the union of two temporal boxes.
Definition: tbox.c:1599
TBox * tbox_shift_scale_int(const TBox *box, int shift, int width, bool hasshift, bool haswidth)
Return a temporal box with the value span shifted and/or scaled by the values.
Definition: tbox.c:1116
TBox * tbox_expand_int(const TBox *box, int i)
Return a temporal box with the value span expanded/decreased by an integer.
Definition: tbox.c:1209
TBox * tbox_shift_scale_float(const TBox *box, double shift, double width, bool hasshift, bool haswidth)
Return a temporal box with the value span shifted and/or scaled by the values.
Definition: tbox.c:1139
TBox * tbox_expand_time(const TBox *box, const Interval *interv)
Return a temporal box with the time span expanded/decreased by an interval.
Definition: tbox.c:1300
TBox * tbox_expand_float(const TBox *box, double d)
Return a temporal box with the value span expanded/decreased by a double.
Definition: tbox.c:1238
TBox * tbox_shift_scale_time(const TBox *box, const Interval *shift, const Interval *duration)
Return a temporal box with the value span shifted and/or scaled by the values.
Definition: tbox.c:1161
TBox * tbox_round(const TBox *box, int maxdd)
Return a temporal box with the precision of the value span set to a number of decimal places.
Definition: tbox.c:1055
Span * numspan_expand(const Span *s, Datum value)
Return a number span with its bounds expanded/decreased by a value.
Definition: span.c:967
double * floatset_values(const Set *s)
Return the array of values of a float set.
Definition: set_meos.c:798
Set * datespanset_dates(const SpanSet *ss)
Return the set of dates of a span set.
Definition: spanset.c:774
int * intset_values(const Set *s)
Return the array of values of an integer set.
Definition: set_meos.c:762
text * textset_end_value(const Set *s)
Return a copy of the end value of a text set.
Definition: set_meos.c:593
int64 bigintspanset_lower(const SpanSet *ss)
Return the lower bound of an integer span set.
Definition: spanset_meos.c:385
Span * spanset_span(const SpanSet *ss)
Return the bounding span of a span set.
Definition: spanset.c:546
bool tstzspanset_timestamptz_n(const SpanSet *ss, int n, TimestampTz *result)
Return in the last argument the n-th timestamptz of a span set.
Definition: spanset.c:873
bool span_lower_inc(const Span *s)
Return true if the lower bound of a span is inclusive.
Definition: span_meos.c:547
uint64 spanset_hash_extended(const SpanSet *ss, uint64 seed)
Return the 64-bit hash value of a span set using a seed.
Definition: spanset.c:1571
Interval * tstzspan_duration(const Span *s)
Return the duration of a timestamptz span as an interval.
Definition: span.c:783
uint64 set_hash_extended(const Set *s, uint64 seed)
Return the 64-bit hash of a set using a seed.
Definition: set.c:1210
bool spanset_upper_inc(const SpanSet *ss)
Return true if the upper bound of a span set is inclusive.
Definition: spanset.c:603
Interval * datespan_duration(const Span *s)
Return the duration of a date span as an interval.
Definition: span.c:767
DateADT datespan_upper(const Span *s)
Return the upper bound of a date span.
Definition: span_meos.c:518
bool bigintset_value_n(const Set *s, int n, int64 *result)
Return in the last argument the n-th value of a big integer set.
Definition: set_meos.c:662
Span * spanset_start_span(const SpanSet *ss)
Return a copy to the the start span of a span set.
Definition: spanset.c:973
int intset_start_value(const Set *s)
Return the start value of an integer set.
Definition: set_meos.c:455
TimestampTz * tstzset_values(const Set *s)
Return the array of values of a timestamptz set.
Definition: set_meos.c:852
int intspan_upper(const Span *s)
Return the upper bound of an integer span.
Definition: span_meos.c:473
int datespanset_num_dates(const SpanSet *ss)
Return the number of dates of a span set.
Definition: spanset.c:700
bool textset_value_n(const Set *s, int n, text **result)
Return in the last argument a copy of the n-th value of a text set.
Definition: set_meos.c:702
int intspanset_upper(const SpanSet *ss)
Return the upper bound of an integer span set.
Definition: spanset_meos.c:432
double floatspanset_width(const SpanSet *ss, bool boundspan)
Return the width of a float span set.
Definition: spanset_meos.c:527
uint32 span_hash(const Span *s)
Return the 32-bit hash of a span.
Definition: span.c:1597
uint32 set_hash(const Set *s)
Return the 32-bit hash of a set.
Definition: set.c:1189
TimestampTz tstzspan_lower(const Span *s)
Return the lower bound of a timestamptz span.
Definition: span_meos.c:456
int64 bigintspanset_width(const SpanSet *ss, bool boundspan)
Return the width of an integer span set.
Definition: spanset_meos.c:511
Span * spanset_span_n(const SpanSet *ss, int i)
Return a copy of the n-th span of a span set.
Definition: spanset.c:1003
Span ** spanset_spanarr(const SpanSet *ss)
Return a C array with copies of the spans of a span set.
Definition: spanset.c:1037
int intset_end_value(const Set *s)
Return the end value of an integer set.
Definition: set_meos.c:548
double floatspanset_lower(const SpanSet *ss)
Return the lower bound of a float span set.
Definition: spanset_meos.c:400
int64 bigintspan_lower(const Span *s)
Return the lower bound of an integer span.
Definition: span_meos.c:411
TimestampTz tstzset_end_value(const Set *s)
Return the end value of a timestamptz set.
Definition: set_meos.c:623
TimestampTz tstzspanset_lower(const SpanSet *ss)
Return the lower bound of a timestamptz span set.
Definition: spanset_meos.c:415
DateADT datespanset_start_date(const SpanSet *ss)
Return the start date of a span set.
Definition: spanset.c:716
int tstzspanset_num_timestamps(const SpanSet *ss)
Return the number of timestamps of a span set.
Definition: spanset.c:798
int intspanset_width(const SpanSet *ss, bool boundspan)
Return the width of an integer span set.
Definition: spanset_meos.c:495
double floatspanset_upper(const SpanSet *ss)
Return the upper bound of a float span set.
Definition: spanset_meos.c:462
bool dateset_value_n(const Set *s, int n, DateADT *result)
Return in the last argument the n-th value of a date set.
Definition: set_meos.c:722
text * textset_start_value(const Set *s)
Return a copy of the start value of a text set.
Definition: set_meos.c:501
int64 * bigintset_values(const Set *s)
Return the array of values of a big integer set.
Definition: set_meos.c:780
TimestampTz tstzspan_upper(const Span *s)
Return the upper bound of a timestamptz span.
Definition: span_meos.c:533
int64 bigintspan_width(const Span *s)
Return the width of a big integer span.
Definition: span_meos.c:593
int64 bigintspan_upper(const Span *s)
Return the upper bound of an integer span.
Definition: span_meos.c:488
bool floatset_value_n(const Set *s, int n, double *result)
Return in the last argument the n-th value of a float set.
Definition: set_meos.c:682
DateADT datespan_lower(const Span *s)
Return the lower bound of a date span.
Definition: span_meos.c:441
double floatset_start_value(const Set *s)
Return the start value of a float set.
Definition: set_meos.c:485
Interval * datespanset_duration(const SpanSet *ss, bool boundspan)
Return the duration of a date span set.
Definition: spanset.c:644
int spanset_num_spans(const SpanSet *ss)
Return the number of spans of a span set.
Definition: spanset.c:958
double floatspan_width(const Span *s)
Return the width of a float span.
Definition: span_meos.c:608
Interval * tstzspanset_duration(const SpanSet *ss, bool boundspan)
Return the duration of a timestamptz span set.
Definition: spanset.c:671
DateADT * dateset_values(const Set *s)
Return the array of values of a date set.
Definition: set_meos.c:834
int intspan_width(const Span *s)
Return the width of an integer span.
Definition: span_meos.c:578
int set_num_values(const Set *s)
Return the number of values of a set.
Definition: set.c:635
uint64 span_hash_extended(const Span *s, uint64 seed)
Return the 64-bit hash of a span using a seed.
Definition: span.c:1637
uint32 spanset_hash(const SpanSet *ss)
Return the 32-bit hash value of a span set.
Definition: spanset.c:1549
Span * spanset_end_span(const SpanSet *ss)
Return a copy of the end span of a span set.
Definition: spanset.c:988
int64 bigintset_end_value(const Set *s)
Return the end value of a big integer set.
Definition: set_meos.c:563
int64 bigintset_start_value(const Set *s)
Return the start value of a big integer set.
Definition: set_meos.c:470
bool span_upper_inc(const Span *s)
Return true if the upper bound of a span is inclusive.
Definition: span_meos.c:561
bool tstzset_value_n(const Set *s, int n, TimestampTz *result)
Return in the last argument the n-th value of a timestamptz set.
Definition: set_meos.c:742
DateADT dateset_start_value(const Set *s)
Return the start value of a date set.
Definition: set_meos.c:516
DateADT dateset_end_value(const Set *s)
Return the end value of a date set.
Definition: set_meos.c:608
TimestampTz tstzspanset_start_timestamptz(const SpanSet *ss)
Return the start timestamptz of a span set.
Definition: spanset.c:839
int intspan_lower(const Span *s)
Return the lower bound of an integer span.
Definition: span_meos.c:396
text ** textset_values(const Set *s)
Return the array of copies of the values of a text set.
Definition: set_meos.c:816
bool spanset_lower_inc(const SpanSet *ss)
Return true if the lower bound of a span set is inclusive.
Definition: spanset.c:589
double floatspan_lower(const Span *s)
Return the lower bound of a float span.
Definition: span_meos.c:426
double floatspan_upper(const Span *s)
Return the upper bound of a float span.
Definition: span_meos.c:503
TimestampTz tstzspanset_end_timestamptz(const SpanSet *ss)
Return the end timestamptz of a span set.
Definition: spanset.c:855
DateADT datespanset_end_date(const SpanSet *ss)
Return the end date of a span set.
Definition: spanset.c:732
TimestampTz tstzspanset_upper(const SpanSet *ss)
Return the upper bound of a timestamptz span set.
Definition: spanset_meos.c:477
Set * tstzspanset_timestamps(const SpanSet *ss)
Return the set of timestamps of a span set.
Definition: spanset.c:927
TimestampTz tstzset_start_value(const Set *s)
Return the start value of a timestamptz set.
Definition: set_meos.c:531
bool intset_value_n(const Set *s, int n, int *result)
Return in the last argument the n-th value of an integer set.
Definition: set_meos.c:642
int64 bigintspanset_upper(const SpanSet *ss)
Return the upper bound of an integer span set.
Definition: spanset_meos.c:447
double floatset_end_value(const Set *s)
Return the end value of a float set.
Definition: set_meos.c:578
int intspanset_lower(const SpanSet *ss)
Return the lower bound of an integer span set.
Definition: spanset_meos.c:370
bool datespanset_date_n(const SpanSet *ss, int n, DateADT *result)
Return in the last argument the n-th date of a date span set.
Definition: spanset.c:750
Span * timestamptz_extent_transfn(Span *state, TimestampTz t)
Transition function for span extent aggregate of timestamptz.
Definition: span_aggfuncs_meos.c:116
Set * text_union_transfn(Set *state, const text *txt)
Transition function for set union aggregate of texts.
Definition: set_aggfuncs_meos.c:362
Span * bigint_extent_transfn(Span *state, int64 i)
Transition function for span extent aggregate of big integers.
Definition: span_aggfuncs_meos.c:71
Set * set_union_transfn(Set *state, Set *s)
Transition function for set union aggregate of sets.
Definition: set_aggfuncs_meos.c:230
Span * float_extent_transfn(Span *state, double d)
Transition function for span extent aggregate of floats.
Definition: span_aggfuncs_meos.c:86
Set * set_union_finalfn(Set *state)
Final function for set union aggregate.
Definition: set_aggfuncs_meos.c:259
Span * spanset_extent_transfn(Span *state, const SpanSet *ss)
Transition function for span extent aggregate of span sets.
Definition: span_aggfuncs.c:134
Set * int_union_transfn(Set *state, int32 i)
Transition function for set union aggregate of integers.
Definition: set_aggfuncs_meos.c:287
SpanSet * span_union_transfn(SpanSet *state, const Span *s)
Transition function for span set aggregate union.
Definition: span_aggfuncs_meos.c:228
Set * bigint_union_transfn(Set *state, int64 i)
Transition function for set union aggregate of big integers.
Definition: set_aggfuncs_meos.c:302
Set * float_union_transfn(Set *state, double d)
Transition function for set union aggregate of floats.
Definition: set_aggfuncs_meos.c:317
Span * span_extent_transfn(Span *state, const Span *s)
Transition function for span extent aggregate of spans.
Definition: span_aggfuncs.c:107
SpanSet * spanset_union_finalfn(SpanSet *state)
Transition function for set aggregate of values.
Definition: span_aggfuncs_meos.c:284
Span * set_extent_transfn(Span *state, const Set *s)
Transition function for span extent aggregate of sets.
Definition: span_aggfuncs.c:77
Span * int_extent_transfn(Span *state, int i)
Transition function for span extent aggregate of integers.
Definition: span_aggfuncs_meos.c:56
Set * date_union_transfn(Set *state, DateADT d)
Transition function for set union aggregate of dates.
Definition: set_aggfuncs_meos.c:332
Span * date_extent_transfn(Span *state, DateADT d)
Transition function for span extent aggregate of dates.
Definition: span_aggfuncs_meos.c:101
SpanSet * spanset_union_transfn(SpanSet *state, const SpanSet *ss)
Transition function for span set aggregate union.
Definition: span_aggfuncs_meos.c:258
Set * timestamptz_union_transfn(Set *state, TimestampTz t)
Transition function for set union aggregate of timestamptz.
Definition: set_aggfuncs_meos.c:347
Span * set_split_each_n_spans(const Set *s, int elems_per_span, int *count)
Return an array of spans from a set obtained by merging consecutive elements.
Definition: span.c:1444
Span * spanset_spans(const SpanSet *ss)
Return the array of spans of a spanset.
Definition: spanset.c:1267
Span * set_split_n_spans(const Set *s, int span_count, int *count)
Return an array of N spans from the values of a set.
Definition: span.c:1397
Span * spanset_split_n_spans(const SpanSet *ss, int span_count, int *count)
Return an array of N spans from the composing spans of a spanset.
Definition: spanset.c:1330
Span * spanset_split_each_n_spans(const SpanSet *ss, int elems_per_span, int *count)
Return an array of N spans from a spanset obtained by merging consecutive composing spans.
Definition: spanset.c:1381
Span * set_spans(const Set *s)
Return an array of spans from the values of a set.
Definition: span.c:1376
double float_get_bin(double value, double vsize, double vorigin)
Return the initial value of the bin that contains a float.
Definition: temporal_tile.c:174
int64 bigint_get_bin(int64 value, int64 vsize, int64 vorigin)
Return the initial value of the bin that contains an integer.
Definition: temporal_tile.c:122
Span * intspanset_bins(const SpanSet *ss, int vsize, int vorigin, int *count)
Return the bins of an integer span set.
Definition: span_tile_meos.c:163
DateADT date_get_bin(DateADT d, const Interval *duration, DateADT torigin)
Return the initial date of the bin that contains a date.
Definition: temporal_tile.c:237
TimestampTz timestamptz_get_bin(TimestampTz t, const Interval *duration, TimestampTz torigin)
Return the initial timestamp of the bin that contains a timestamptz.
Definition: temporal_tile.c:313
int int_get_bin(int value, int vsize, int vorigin)
Return the initial value of the bin that contains an integer.
Definition: temporal_tile.c:70
Span * floatspan_bins(const Span *s, double vsize, double vorigin, int *count)
Return the bins of a float span.
Definition: span_tile_meos.c:102
Span * datespanset_bins(const SpanSet *ss, const Interval *duration, DateADT torigin, int *count)
Return the bins of a date span set.
Definition: span_tile_meos.c:216
Span * tstzspan_bins(const Span *s, const Interval *duration, TimestampTz origin, int *count)
Return the bins of a timestamptz span.
Definition: span_tile_meos.c:139
Span * datespan_bins(const Span *s, const Interval *duration, DateADT torigin, int *count)
Return the bins of a date span.
Definition: span_tile_meos.c:118
Span * floatspanset_bins(const SpanSet *ss, double vsize, double vorigin, int *count)
Return the bins of a float span set.
Definition: span_tile_meos.c:198
Span * tstzspanset_bins(const SpanSet *ss, const Interval *duration, TimestampTz torigin, int *count)
Return the bins of a timestamptz span set.
Definition: span_tile_meos.c:234
Span * bigintspanset_bins(const SpanSet *ss, int64 vsize, int64 vorigin, int *count)
Return the bins of a big integer span set.
Definition: span_tile_meos.c:180
Span * bigintspan_bins(const Span *s, int64 vsize, int64 vorigin, int *count)
Return the bins of a big integer span.
Definition: span_tile_meos.c:86
Span * intspan_bins(const Span *s, int vsize, int vorigin, int *count)
Return the bins of an integer span.
Definition: span_tile_meos.c:70
bool span_eq(const Span *s1, const Span *s2)
Return true if the two spans are equal.
Definition: span.c:1482
bool spanset_eq(const SpanSet *ss1, const SpanSet *ss2)
Return true if the two span sets are equal.
Definition: spanset.c:1418
int set_cmp(const Set *s1, const Set *s2)
Return -1, 0, or 1 depending on whether the first set is less than, equal, or greater than the second...
Definition: set.c:1102
bool set_ge(const Set *s1, const Set *s2)
Return true if the first set is greater than or equal to the second one.
Definition: set.c:1171
bool spanset_le(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is less than or equal to the second one.
Definition: spanset.c:1505
bool span_lt(const Span *s1, const Span *s2)
Return true if the first span is less than the second one.
Definition: span.c:1543
bool set_ne(const Set *s1, const Set *s2)
Return true if the first set is not equal to the second one.
Definition: set.c:1087
bool set_eq(const Set *s1, const Set *s2)
Return true if the two sets are equal.
Definition: set.c:1064
bool spanset_lt(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is less than the second one.
Definition: spanset.c:1492
int span_cmp(const Span *s1, const Span *s2)
Return -1, 0, or 1 depending on whether the first span is less than, equal, or greater than the secon...
Definition: span.c:1515
bool set_lt(const Set *s1, const Set *s2)
Return true if the first set is less than the second one.
Definition: set.c:1135
bool span_gt(const Span *s1, const Span *s2)
Return true if the first span is greater than the second one.
Definition: span.c:1580
int spanset_cmp(const SpanSet *ss1, const SpanSet *ss2)
Return -1, 0, or 1 depending on whether the first span set is less than, equal, or greater than the s...
Definition: spanset.c:1456
bool spanset_gt(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is greater than the second one.
Definition: spanset.c:1530
bool spanset_ge(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is greater than or equal to the second one.
Definition: spanset.c:1518
bool spanset_ne(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is different from the second one.
Definition: spanset.c:1441
bool span_le(const Span *s1, const Span *s2)
Return true if the first span is less than or equal to the second one.
Definition: span.c:1555
bool span_ne(const Span *s1, const Span *s2)
Return true if the first span is different from the second one.
Definition: span.c:1501
bool span_ge(const Span *s1, const Span *s2)
Return true if the first span is greater than or equal to the second one.
Definition: span.c:1568
bool set_gt(const Set *s1, const Set *s2)
Return true if the first set is greater than the second one.
Definition: set.c:1159
bool set_le(const Set *s1, const Set *s2)
Return true if the first set is less than or equal to the second one.
Definition: set.c:1147
SpanSet * spanset_copy(const SpanSet *ss)
Return a copy of a span set.
Definition: spanset.c:369
Span * datespan_make(DateADT lower, DateADT upper, bool lower_inc, bool upper_inc)
Return a date span from the bounds.
Definition: span_meos.c:276
Span * floatspan_make(double lower, double upper, bool lower_inc, bool upper_inc)
Return a float span from the bounds.
Definition: span_meos.c:259
Set * dateset_make(const DateADT *values, int count)
Return a date set from an array of values.
Definition: set_meos.c:325
Set * set_copy(const Set *s)
Return a copy of a set.
Definition: set.c:506
Span * tstzspan_make(TimestampTz lower, TimestampTz upper, bool lower_inc, bool upper_inc)
Return a timestamptz span from the bounds.
Definition: span_meos.c:292
Set * textset_make(const text **values, int count)
Return a text set from an array of values.
Definition: set_meos.c:304
Set * intset_make(const int *values, int count)
Return an integer set from an array of values.
Definition: set_meos.c:241
Span * intspan_make(int lower, int upper, bool lower_inc, bool upper_inc)
Return an integer span from the bounds.
Definition: span_meos.c:225
Set * tstzset_make(const TimestampTz *values, int count)
Return a timestamptz set from an array of values.
Definition: set_meos.c:346
Set * floatset_make(const double *values, int count)
Return a float set from an array of values.
Definition: set_meos.c:283
Span * span_copy(const Span *s)
Return a copy of a span.
Definition: span.c:495
Set * bigintset_make(const int64 *values, int count)
Return a big integer set from an array of values.
Definition: set_meos.c:262
Span * bigintspan_make(int64 lower, int64 upper, bool lower_inc, bool upper_inc)
Return a big integer span from the bounds.
Definition: span_meos.c:242
SpanSet * spanset_make(Span *spans, int count)
Return a span set from an array of disjoint spans.
Definition: spanset.c:332
Span * int_to_span(int i)
Convert an integer into a span.
Definition: span_meos.c:313
Span * floatspan_to_intspan(const Span *s)
Convert a float span into an integer span.
Definition: span.c:658
SpanSet * timestamptz_to_spanset(TimestampTz t)
Convert a timestamptz into a span set.
Definition: spanset_meos.c:269
Set * dateset_to_tstzset(const Set *s)
Convert a date set into a timestamptz set.
Definition: set.c:577
Set * date_to_set(DateADT d)
Convert a date into a set.
Definition: set_meos.c:424
Span * tstzspan_to_datespan(const Span *s)
Convert a timestamptz span into a date span.
Definition: span.c:734
SpanSet * span_to_spanset(const Span *s)
Convert a span into a span set.
Definition: spanset.c:443
Span * intspan_to_floatspan(const Span *s)
Convert an integer span into a float span.
Definition: span.c:626
SpanSet * datespanset_to_tstzspanset(const SpanSet *ss)
Convert a date span set into a timestamptz span set.
Definition: spanset.c:493
SpanSet * int_to_spanset(int i)
Convert an integer into a span set.
Definition: spanset_meos.c:221
SpanSet * float_to_spanset(double d)
Convert a float into a span set.
Definition: spanset_meos.c:245
Set * int_to_set(int i)
Convert an integer into a set.
Definition: set_meos.c:370
Span * set_to_span(const Set *s)
Convert a set into a span.
Definition: span.c:593
Set * text_to_set(const text *txt)
Convert a text into a set.
Definition: set_meos.c:409
Span * datespan_to_tstzspan(const Span *s)
Convert a date span into a timestamptz span.
Definition: span.c:692
SpanSet * set_to_spanset(const Set *s)
Convert a set into a span set.
Definition: spanset.c:426
Set * tstzset_to_dateset(const Set *s)
Convert a timestamptz set into a date set.
Definition: set.c:596
Span * timestamptz_to_span(TimestampTz t)
Convert a timestamptz into a span.
Definition: span_meos.c:376
SpanSet * intspanset_to_floatspanset(const SpanSet *ss)
Convert an integer span set into a float span set.
Definition: spanset.c:459
SpanSet * date_to_spanset(DateADT d)
Convert a date into a span set.
Definition: spanset_meos.c:257
Set * floatset_to_intset(const Set *s)
Convert a float set into an integer set.
Definition: set.c:559
SpanSet * tstzspanset_to_datespanset(const SpanSet *ss)
Convert a timestamptz span set into a date span set.
Definition: spanset.c:510
Set * float_to_set(double d)
Convert a float into a set.
Definition: set_meos.c:396
Set * bigint_to_set(int64 i)
Convert a big integer into a set.
Definition: set_meos.c:383
Set * timestamptz_to_set(TimestampTz t)
Convert a timestamptz into a set.
Definition: set_meos.c:437
SpanSet * bigint_to_spanset(int i)
Convert a big integer into a span set.
Definition: spanset_meos.c:233
Span * date_to_span(DateADT d)
Convert a date into a span.
Definition: span_meos.c:360
Span * float_to_span(double d)
Convert a float into a span.
Definition: span_meos.c:345
Set * intset_to_floatset(const Set *s)
Convert an integer set into a float set.
Definition: set.c:541
Span * bigint_to_span(int i)
Convert a big integer into a span.
Definition: span_meos.c:329
SpanSet * floatspanset_to_intspanset(const SpanSet *ss)
Convert a float span set into an integer span set.
Definition: spanset.c:476
int distance_span_int(const Span *s, int i)
Return the distance between a span and an integer as a double.
Definition: span_ops_meos.c:1285
int distance_datespanset_datespan(const SpanSet *ss, const Span *s)
Return the distance in days between a date span set and a span.
Definition: spanset_ops_meos.c:1410
double distance_set_float(const Set *s, double d)
Return the distance between a set and a float.
Definition: set_ops_meos.c:1568
int distance_intset_intset(const Set *s1, const Set *s2)
Return the distance between two integer sets.
Definition: set_ops_meos.c:1618
double distance_tstzspanset_tstzspan(const SpanSet *ss, const Span *s)
Return the distance in seconds between a timestamptz span set and a span.
Definition: spanset_ops_meos.c:1427
int64 distance_bigintspan_bigintspan(const Span *s1, const Span *s2)
Return the distance between two big integer spans.
Definition: span_ops_meos.c:1382
int64 distance_span_bigint(const Span *s, int64 i)
Return the distance between a span and a big integer as a double.
Definition: span_ops_meos.c:1301
int distance_set_date(const Set *s, DateADT d)
Return the distance in days between a set and a date.
Definition: set_ops_meos.c:1584
int distance_span_date(const Span *s, DateADT d)
Return the distance in days between a span and a date as a double.
Definition: span_ops_meos.c:1333
double distance_floatspanset_floatspanset(const SpanSet *ss1, const SpanSet *ss2)
Return the distance between two float span sets.
Definition: spanset_ops_meos.c:1474
int distance_set_int(const Set *s, int i)
Return the distance between a set and an integer.
Definition: set_ops_meos.c:1536
double distance_floatset_floatset(const Set *s1, const Set *s2)
Return the distance between two float sets.
Definition: set_ops_meos.c:1650
double distance_span_timestamptz(const Span *s, TimestampTz t)
Return the distance in seconds between a span and a timestamptz as a double.
Definition: span_ops_meos.c:1350
int distance_intspanset_intspan(const SpanSet *ss, const Span *s)
Return the distance between an integer span set and a span.
Definition: spanset_ops_meos.c:1362
int distance_spanset_date(const SpanSet *ss, DateADT d)
Return the distance in seconds between a span set and a date as a double.
Definition: spanset_ops_meos.c:1328
double distance_spanset_float(const SpanSet *ss, double d)
Return the distance between a span set and a float.
Definition: spanset_ops_meos.c:1311
int64 distance_bigintset_bigintset(const Set *s1, const Set *s2)
Return the distance between two big integer sets.
Definition: set_ops_meos.c:1634
double distance_span_float(const Span *s, double d)
Return the distance between a span and a float.
Definition: span_ops_meos.c:1317
int64 distance_spanset_bigint(const SpanSet *ss, int64 i)
Return the distance between a span set and a big integer.
Definition: spanset_ops_meos.c:1295
int64 distance_bigintspanset_bigintspan(const SpanSet *ss, const Span *s)
Return the distance between a big integer span set and a span.
Definition: spanset_ops_meos.c:1378
int distance_datespanset_datespanset(const SpanSet *ss1, const SpanSet *ss2)
Return the distance in days between two date span sets.
Definition: spanset_ops_meos.c:1489
double distance_set_timestamptz(const Set *s, TimestampTz t)
Return the distance in seconds between a set and a timestamptz as a double.
Definition: set_ops_meos.c:1601
double distance_floatspan_floatspan(const Span *s1, const Span *s2)
Return the distance between two float spans.
Definition: span_ops_meos.c:1397
int distance_intspan_intspan(const Span *s1, const Span *s2)
Return the distance between two integer spans.
Definition: span_ops_meos.c:1367
int64 distance_bigintspanset_bigintspanset(const SpanSet *ss1, const SpanSet *ss2)
Return the distance between two big integer span sets.
Definition: spanset_ops_meos.c:1459
int distance_datespan_datespan(const Span *s1, const Span *s2)
Return the distance between two date spans.
Definition: span_ops_meos.c:1412
double distance_tstzspan_tstzspan(const Span *s1, const Span *s2)
Return the distance in seconds between two timestamptz spans.
Definition: span_ops_meos.c:1427
int distance_intspanset_intspanset(const SpanSet *ss1, const SpanSet *ss2)
Return the distance between two integer span sets.
Definition: spanset_ops_meos.c:1444
double distance_tstzspanset_tstzspanset(const SpanSet *ss1, const SpanSet *ss2)
Return the distance in seconds between two timestamptz span sets.
Definition: spanset_ops_meos.c:1504
int distance_spanset_int(const SpanSet *ss, int i)
Return the distance between a span set and an integer.
Definition: spanset_ops_meos.c:1279
double distance_floatspanset_floatspan(const SpanSet *ss, const Span *s)
Return the distance between a float span set and a span.
Definition: spanset_ops_meos.c:1394
double distance_tstzset_tstzset(const Set *s1, const Set *s2)
Return the distance in seconds between two timestamptz sets.
Definition: set_ops_meos.c:1682
double distance_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return the distance in seconds between a span set and a timestamptz.
Definition: spanset_ops_meos.c:1344
int distance_dateset_dateset(const Set *s1, const Set *s2)
Return the distance in days between two date sets.
Definition: set_ops_meos.c:1666
int64 distance_set_bigint(const Set *s, int64 i)
Return the distance between a set and a big integer.
Definition: set_ops_meos.c:1552
Set * set_from_wkb(const uint8_t *wkb, size_t size)
Return a set from its Well-Known Binary (WKB) representation.
Definition: type_in.c:2179
SpanSet * datespanset_in(const char *str)
Return a date set from its Well-Known Text (WKT) representation.
Definition: spanset_meos.c:111
Set * floatset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:93
Set * tstzset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:135
Span * span_from_wkb(const uint8_t *wkb, size_t size)
Return a span from its Well-Known Binary (WKB) representation.
Definition: type_in.c:2212
SpanSet * spanset_from_wkb(const uint8_t *wkb, size_t size)
Return a span set from its Well-Known Binary (WKB) representation.
Definition: type_in.c:2245
SpanSet * bigintspanset_in(const char *str)
Return a big integer span from its Well-Known Text (WKT) representation.
Definition: spanset_meos.c:83
char * floatspanset_out(const SpanSet *ss, int maxdd)
Return the Well-Known Text (WKT) representation of a float span set.
Definition: spanset_meos.c:171
char * tstzset_out(const Set *set)
Return the string representation of a timestamptz set.
Definition: set_meos.c:222
Span * intspan_in(const char *str)
Return an integer span from its Well-Known Text (WKT) representation.
Definition: span_meos.c:67
SpanSet * floatspanset_in(const char *str)
Return a float span from its Well-Known Text (WKT) representation.
Definition: spanset_meos.c:97
uint8_t * spanset_as_wkb(const SpanSet *ss, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a span set.
Definition: type_out.c:2423
char * datespanset_out(const SpanSet *ss)
Return the Well-Known Text (WKT) representation of a date span set.
Definition: spanset_meos.c:185
char * textset_out(const Set *set)
Return the string representation of a text set.
Definition: set_meos.c:194
Set * intset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:65
Set * bigintset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:79
SpanSet * spanset_from_hexwkb(const char *hexwkb)
Return a span set from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: type_in.c:2260
char * dateset_out(const Set *s)
Return the string representation of a date set.
Definition: set_meos.c:208
char * floatset_out(const Set *set, int maxdd)
Return the string representation of a float set.
Definition: set_meos.c:180
char * floatspan_out(const Span *s, int maxdd)
Return the Well-Known Text (WKT) representation of a float span.
Definition: span_meos.c:176
Span * datespan_in(const char *str)
Return a date span from its Well-Known Text (WKT) representation.
Definition: span_meos.c:112
uint8_t * set_as_wkb(const Set *s, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a set.
Definition: type_out.c:2347
Set * textset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:107
Span * floatspan_in(const char *str)
Return a float span from its Well-Known Text (WKT) representation.
Definition: span_meos.c:97
Span * tstzspan_in(const char *str)
Return a timestamptz span from its Well-Known Text (WKT) representation.
Definition: span_meos.c:128
Span * bigintspan_in(const char *str)
Return an integer span from its Well-Known Text (WKT) representation.
Definition: span_meos.c:82
char * set_as_hexwkb(const Set *s, uint8_t variant, size_t *size_out)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a set.
Definition: type_out.c:2365
char * tstzspan_out(const Span *s)
Return the Well-Known Text (WKT) representation of a timestamtz span.
Definition: span_meos.c:206
Set * dateset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: set_meos.c:121
char * intspanset_out(const SpanSet *ss)
Return the Well-Known Text (WKT) representation of an integer span set.
Definition: spanset_meos.c:142
Span * span_from_hexwkb(const char *hexwkb)
Return a span from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: type_in.c:2228
SpanSet * intspanset_in(const char *str)
Return an integer span from its Well-Known Text (WKT) representation.
Definition: spanset_meos.c:68
char * datespan_out(const Span *s)
Return the Well-Known Text (WKT) representation of a date span.
Definition: span_meos.c:191
char * span_as_hexwkb(const Span *s, uint8_t variant, size_t *size_out)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a span.
Definition: type_out.c:2403
SpanSet * tstzspanset_in(const char *str)
Return a timestamptz set from its Well-Known Text (WKT) representation.
Definition: spanset_meos.c:126
char * bigintspanset_out(const SpanSet *ss)
Return the Well-Known Text (WKT) representation of a big integer span set.
Definition: spanset_meos.c:156
char * spanset_as_hexwkb(const SpanSet *ss, uint8_t variant, size_t *size_out)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a span set.
Definition: type_out.c:2441
char * tstzspanset_out(const SpanSet *ss)
Return the Well-Known Text (WKT) representation of a timpespantz span set.
Definition: spanset_meos.c:199
uint8_t * span_as_wkb(const Span *s, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a span.
Definition: type_out.c:2385
char * intspan_out(const Span *s)
Return the Well-Known Text (WKT) representation of an integer span.
Definition: span_meos.c:145
char * bigintspan_out(const Span *s)
Return the Well-Known Text (WKT) representation of a big integer span.
Definition: span_meos.c:160
Set * set_from_hexwkb(const char *hexwkb)
Return a set from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: type_in.c:2195
char * bigintset_out(const Set *set)
Return the string representation of a big integer set.
Definition: set_meos.c:165
char * intset_out(const Set *set)
Return the string representation of an integer set.
Definition: set_meos.c:151
bool overleft_span_int(const Span *s, int i)
Return true if a span does not extend to the right of an integer.
Definition: span_ops_meos.c:672
bool overbefore_set_date(const Set *s, DateADT d)
Return true if a set is not after a date.
Definition: set_ops_meos.c:776
bool after_date_spanset(DateADT d, const SpanSet *ss)
Return true if a date is after a span set.
Definition: spanset_ops_meos.c:477
bool overbefore_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span is not after a timestamptz.
Definition: span_ops_meos.c:732
bool overleft_span_float(const Span *s, double d)
Return true if a span does not extend to the right of a float.
Definition: span_ops_meos.c:702
bool left_bigint_set(int64 i, const Set *s)
Return true if a big integer is to the left of a set.
Definition: set_ops_meos.c:263
bool left_int_span(int i, const Span *s)
Return true if an integer is to the left of a span.
Definition: span_ops_meos.c:284
bool left_spanset_int(const SpanSet *ss, int i)
Return true if a span set is to the left of an integer.
Definition: spanset_ops_meos.c:359
bool right_float_set(double d, const Set *s)
Return true if a float is to the right of a set.
Definition: set_ops_meos.c:466
bool right_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span is to the right of a span set.
Definition: spanset_ops.c:538
bool overbefore_date_set(DateADT d, const Set *s)
Return true if a date is not after a set.
Definition: set_ops_meos.c:683
bool left_int_spanset(int i, const SpanSet *ss)
Return true if an integer is to the left of a span set.
Definition: spanset_ops_meos.c:282
bool before_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span is before a timestamptz.
Definition: span_ops_meos.c:420
bool overright_spanset_float(const SpanSet *ss, double d)
Return true if a span set does not extend to the left of a float.
Definition: spanset_ops_meos.c:839
bool before_set_timestamptz(const Set *s, TimestampTz t)
Return true if a set is before a timestamptz.
Definition: set_ops_meos.c:416
bool overleft_bigint_spanset(int64 i, const SpanSet *ss)
Return true if a big integer does not extend to the right of a span set.
Definition: spanset_ops_meos.c:668
bool right_text_set(const text *txt, const Set *s)
Return true if a text is to the right of a set.
Definition: set_ops_meos.c:481
bool left_set_float(const Set *s, double d)
Return true if a set is to the left of a float.
Definition: set_ops_meos.c:371
bool right_float_span(double d, const Span *s)
Return true if a float is to the right of a span.
Definition: span_ops_meos.c:469
bool left_bigint_spanset(int64 i, const SpanSet *ss)
Return true if a big integer is to the left of a span set.
Definition: spanset_ops_meos.c:297
bool left_float_spanset(double d, const SpanSet *ss)
Return true if a float is to the left of a span set.
Definition: spanset_ops_meos.c:312
bool overleft_text_set(const text *txt, const Set *s)
Return true if a text does not extend to the right of a set.
Definition: set_ops_meos.c:668
bool right_spanset_int(const SpanSet *ss, int i)
Return true if a span set is to the right of an integer.
Definition: spanset_ops_meos.c:505
bool right_int_spanset(int i, const SpanSet *ss)
Return true if an integer is to the right of a span set.
Definition: spanset_ops_meos.c:438
bool overbefore_span_date(const Span *s, DateADT d)
Return true if a span is not after a date.
Definition: span_ops_meos.c:717
bool before_date_set(DateADT d, const Set *s)
Return true if a date is before a set.
Definition: set_ops_meos.c:308
bool overright_set_float(const Set *s, double d)
Return true if a set does not extend to the left of a float.
Definition: set_ops_meos.c:934
bool before_timestamptz_span(TimestampTz t, const Span *s)
Return true if a timestamptz is before a span.
Definition: span_ops_meos.c:344
bool overright_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set does not extend to the left of the second one.
Definition: spanset_ops.c:729
bool overright_span_float(const Span *s, double d)
Return true if a span does not extend to the left of a float.
Definition: span_ops_meos.c:858
bool overleft_float_span(double d, const Span *s)
Return true if a float does not extend to the right of a span.
Definition: span_ops_meos.c:625
bool overright_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set does not extend to the left of a span.
Definition: spanset_ops.c:713
bool overright_spanset_int(const SpanSet *ss, int i)
Return true if a span set does not extend to the left of an integer.
Definition: spanset_ops_meos.c:809
bool right_span_float(const Span *s, double d)
Return true if a span is to the right of a float.
Definition: span_ops_meos.c:546
bool overafter_span_date(const Span *s, DateADT d)
Return true if a span is not before a date.
Definition: span_ops_meos.c:873
bool right_set_bigint(const Set *s, int64 i)
Return true if a set is to the right of a big integer.
Definition: set_ops_meos.c:543
bool overright_float_set(double d, const Set *s)
Return true if a float does not extend to the left of a set.
Definition: set_ops_meos.c:841
bool overright_float_span(double d, const Span *s)
Return true if a float does not extend to the left of a span.
Definition: span_ops_meos.c:781
bool overleft_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set does not extend to the right of the second one.
Definition: spanset_ops.c:650
bool overright_int_set(int i, const Set *s)
Return true if an integer does not extend to the the left of a set.
Definition: set_ops_meos.c:811
bool overafter_set_timestamptz(const Set *s, TimestampTz t)
Return true if a set is not before a timestamptz.
Definition: set_ops_meos.c:979
bool before_span_date(const Span *s, DateADT d)
Return true if a span is before a date.
Definition: span_ops_meos.c:406
bool overleft_bigint_set(int64 i, const Set *s)
Return true if a big integer does not extend to the right of a set.
Definition: set_ops_meos.c:638
bool right_set_set(const Set *s1, const Set *s2)
Return true if the first set is to the right of the second one.
Definition: set_ops.c:374
bool overleft_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set does not extend to the right of a span.
Definition: spanset_ops.c:634
bool after_span_date(const Span *s, DateADT d)
Return true if a span is after a date.
Definition: span_ops_meos.c:561
bool left_spanset_float(const SpanSet *ss, double d)
Return true if a span set is to the left of a float.
Definition: spanset_ops_meos.c:389
bool after_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return true if a timestamptz is after a span set.
Definition: spanset_ops_meos.c:490
bool right_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set is to the right of a big integer.
Definition: spanset_ops_meos.c:518
bool after_timestamptz_span(TimestampTz t, const Span *s)
Return true if a timestamptz is after a span.
Definition: span_ops_meos.c:499
bool right_spanset_float(const SpanSet *ss, double d)
Return true if a span set is to the right of a float.
Definition: spanset_ops_meos.c:531
bool overright_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span does not extend to the left of a span set.
Definition: spanset_ops.c:684
bool left_int_set(int i, const Set *s)
Return true if an integer is to the left of a set.
Definition: set_ops_meos.c:248
bool overleft_set_text(const Set *s, text *txt)
Return true if a set does not extend to the right of a text.
Definition: set_ops_meos.c:761
bool overleft_float_set(double d, const Set *s)
Return true if a float does not extend to the right of a set.
Definition: set_ops_meos.c:653
bool overbefore_timestamptz_span(TimestampTz t, const Span *s)
Return true if a timestamptz is not after a span.
Definition: span_ops_meos.c:655
bool overright_bigint_set(int64 i, const Set *s)
Return true if a big integer does not extend to the the left of a set.
Definition: set_ops_meos.c:826
bool right_bigint_span(int64 i, const Span *s)
Return true if a big integer is to the right of a span.
Definition: span_ops_meos.c:454
bool overbefore_date_spanset(DateADT d, const SpanSet *ss)
Return true if a date is not after a span set.
Definition: spanset_ops_meos.c:698
bool overleft_spanset_int(const SpanSet *ss, int i)
Return true if a span set does not extend to the right of an integer.
Definition: spanset_ops_meos.c:574
bool right_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set is to the right of a span.
Definition: spanset_ops.c:563
bool right_set_text(const Set *s, text *txt)
Return true if a set is to the right of a text.
Definition: set_ops_meos.c:573
bool overright_float_spanset(double d, const SpanSet *ss)
Return true if a float does not extend to the left of a span set.
Definition: spanset_ops_meos.c:762
bool before_timestamptz_set(TimestampTz t, const Set *s)
Return true if a timestamptz is before a set.
Definition: set_ops_meos.c:323
bool after_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set is after a timestamptz.
Definition: spanset_ops_meos.c:557
bool overbefore_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set is not after a date.
Definition: spanset_ops_meos.c:620
bool right_int_set(int i, const Set *s)
Return true if an integer is to the right of a set.
Definition: set_ops_meos.c:436
bool overafter_date_spanset(DateADT d, const SpanSet *ss)
Return true if a date is not before a span set.
Definition: spanset_ops_meos.c:777
bool right_set_int(const Set *s, int i)
Return true if a set is to the right of an integer.
Definition: set_ops_meos.c:528
bool left_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set is to the left of a big integer.
Definition: spanset_ops_meos.c:374
bool after_timestamptz_set(TimestampTz t, const Set *s)
Return true if a timestamptz is after a set.
Definition: set_ops_meos.c:510
bool overright_set_bigint(const Set *s, int64 i)
Return true if a set does not extend to the left of a big integer.
Definition: set_ops_meos.c:919
bool right_int_span(int i, const Span *s)
Return true if an integer is to the right of a span.
Definition: span_ops_meos.c:439
bool after_set_timestamptz(const Set *s, TimestampTz t)
Return true if a set is after a timestamptz.
Definition: set_ops_meos.c:603
bool overleft_spanset_float(const SpanSet *ss, double d)
Return true if a span set does not extend to the right of a float.
Definition: spanset_ops_meos.c:605
bool left_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is to the left of the second one.
Definition: spanset_ops.c:505
bool overleft_span_bigint(const Span *s, int64 i)
Return true if a span does not extend to the right of a big integer.
Definition: span_ops_meos.c:687
bool right_bigint_spanset(int64 i, const SpanSet *ss)
Return true if a big integer is to the right of a span set.
Definition: spanset_ops_meos.c:451
bool after_date_set(DateADT d, const Set *s)
Return true if a date is after a set.
Definition: set_ops_meos.c:496
bool overafter_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return true if a timestamptz is not before a span set.
Definition: spanset_ops_meos.c:792
bool overright_set_text(const Set *s, text *txt)
Return true if a set does not extend to the left of a text.
Definition: set_ops_meos.c:949
bool overafter_date_span(DateADT d, const Span *s)
Return true if a date is not before a span.
Definition: span_ops_meos.c:796
bool left_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set is to the left a span.
Definition: spanset_ops.c:490
bool overright_set_set(const Set *s1, const Set *s2)
Return true if the first set does not extend to the left of the second one.
Definition: set_ops.c:464
bool right_bigint_set(int64 i, const Set *s)
Return true if a big integer is to the right of a set.
Definition: set_ops_meos.c:451
bool right_float_spanset(double d, const SpanSet *ss)
Return true if a float is to the right of a span set.
Definition: spanset_ops_meos.c:464
bool right_span_span(const Span *s1, const Span *s2)
Return true if the first span is to right the of the second one.
Definition: span_ops.c:386
bool overafter_timestamptz_set(TimestampTz t, const Set *s)
Return true if a timestamptz is not before a set.
Definition: set_ops_meos.c:886
bool right_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is to the right of the second one.
Definition: spanset_ops.c:575
bool overleft_int_set(int i, const Set *s)
Return true if an integer does not extend to the right of a set.
Definition: set_ops_meos.c:623
bool right_span_int(const Span *s, int i)
Return true if a span is to the right of an integer.
Definition: span_ops_meos.c:516
bool overleft_bigint_span(int64 i, const Span *s)
Return true if a big integer does not extend to the right of a span.
Definition: span_ops_meos.c:610
bool overleft_int_span(int i, const Span *s)
Return true if an integer does not extend to the right of a span.
Definition: span_ops_meos.c:595
bool before_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set is before a date.
Definition: spanset_ops_meos.c:404
bool left_set_text(const Set *s, text *txt)
Return true if a set is to the left of a text.
Definition: set_ops_meos.c:386
bool overright_span_span(const Span *s1, const Span *s2)
Return true if the first span does not extend to the left of the second one.
Definition: span_ops.c:483
bool overleft_set_float(const Set *s, double d)
Return true if a set does not extend to the right of a float.
Definition: set_ops_meos.c:746
bool overleft_set_bigint(const Set *s, int64 i)
Return true if a set does not extend to the right of a big integer.
Definition: set_ops_meos.c:731
bool overleft_set_int(const Set *s, int i)
Return true if a set does not extend to the right of an integer.
Definition: set_ops_meos.c:716
bool left_span_int(const Span *s, int i)
Return true if a span is to the left of an integer.
Definition: span_ops_meos.c:361
bool before_date_spanset(DateADT d, const SpanSet *ss)
Return true if a date is before a span set.
Definition: spanset_ops_meos.c:327
bool left_set_set(const Set *s1, const Set *s2)
Return true if the first set is to the left of the second one.
Definition: set_ops.c:330
bool overright_span_int(const Span *s, int i)
Return true if a span does not extend to the left of an integer.
Definition: span_ops_meos.c:828
bool after_set_date(const Set *s, DateADT d)
Return true if a set is after a date.
Definition: set_ops_meos.c:588
bool after_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set is after a date.
Definition: spanset_ops_meos.c:544
bool overleft_set_set(const Set *s1, const Set *s2)
Return true if the first set does not extend to the right of the second one.
Definition: set_ops.c:417
bool left_span_bigint(const Span *s, int64 i)
Return true if a span is to the left of a big integer.
Definition: span_ops_meos.c:376
bool overright_int_spanset(int i, const SpanSet *ss)
Return true if an integer does not extend to the left of a span set.
Definition: spanset_ops_meos.c:732
bool before_date_span(DateADT d, const Span *s)
Return true if a date is before a span.
Definition: span_ops_meos.c:329
bool left_span_span(const Span *s1, const Span *s2)
Return true if the first span is to the left of the second one.
Definition: span_ops.c:326
bool overleft_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set does not extend to the right of a big integer.
Definition: spanset_ops_meos.c:590
bool overright_span_bigint(const Span *s, int64 i)
Return true if a span does not extend to the left of a big integer.
Definition: span_ops_meos.c:843
bool left_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span is before a span set.
Definition: spanset_ops.c:462
bool overafter_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set is before a timestamptz.
Definition: spanset_ops_meos.c:869
bool left_span_float(const Span *s, double d)
Return true if a span is to the left of a float.
Definition: span_ops_meos.c:391
bool overafter_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set is before a date.
Definition: spanset_ops_meos.c:854
bool overafter_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span is not before a timestamptz.
Definition: span_ops_meos.c:888
bool overleft_span_span(const Span *s1, const Span *s2)
Return true if the first span does not extend to the right of the second one.
Definition: span_ops.c:434
bool overright_bigint_span(int64 i, const Span *s)
Return true if a big integer does not extend to the left of a span.
Definition: span_ops_meos.c:766
bool overright_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set does not extend to the left of a big integer.
Definition: spanset_ops_meos.c:824
bool overright_int_span(int i, const Span *s)
Return true if an integer does not extend to the left of a span.
Definition: span_ops_meos.c:751
bool left_text_set(const text *txt, const Set *s)
Return true if a text is to the left of a set.
Definition: set_ops_meos.c:293
bool after_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span is after a timestamptz.
Definition: span_ops_meos.c:576
bool overafter_timestamptz_span(TimestampTz t, const Span *s)
Return true if a timestamptz is not before a span.
Definition: span_ops_meos.c:811
bool left_set_int(const Set *s, int i)
Return true if a set is to the left of an integer.
Definition: set_ops_meos.c:341
bool overright_set_int(const Set *s, int i)
Return true if a set does not extend to the left of an integer.
Definition: set_ops_meos.c:904
bool overbefore_date_span(DateADT d, const Span *s)
Return true if a date is not after a span.
Definition: span_ops_meos.c:640
bool left_bigint_span(int64 i, const Span *s)
Return true if a big integer is to the left of a span.
Definition: span_ops_meos.c:299
bool overbefore_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return true if a timestamptz is not after a span set.
Definition: spanset_ops_meos.c:713
bool left_set_bigint(const Set *s, int64 i)
Return true if a set is to the left of a big integer.
Definition: set_ops_meos.c:356
bool left_float_span(double d, const Span *s)
Return true if a float is to the left of a span.
Definition: span_ops_meos.c:314
bool overafter_date_set(DateADT d, const Set *s)
Return true if a date is not before a set.
Definition: set_ops_meos.c:871
bool before_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set is before a timestamptz.
Definition: spanset_ops_meos.c:419
bool overbefore_set_timestamptz(const Set *s, TimestampTz t)
Return true if a set is not after a timestamptz.
Definition: set_ops_meos.c:791
bool right_set_float(const Set *s, double d)
Return true if a set is to the right of a float.
Definition: set_ops_meos.c:558
bool after_date_span(DateADT d, const Span *s)
Return true if a date is after a span.
Definition: span_ops_meos.c:484
bool overbefore_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set is not after a timestamptz.
Definition: spanset_ops_meos.c:635
bool overleft_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span does not extend to the right of a span set.
Definition: spanset_ops.c:618
bool left_float_set(double d, const Set *s)
Return true if a float is to the left of a set.
Definition: set_ops_meos.c:278
bool right_span_bigint(const Span *s, int64 i)
Return true if a span is to the right of a big integer.
Definition: span_ops_meos.c:531
bool overafter_set_date(const Set *s, DateADT d)
Return true if a set is not before a date.
Definition: set_ops_meos.c:964
bool overleft_int_spanset(int i, const SpanSet *ss)
Return true if an integer does not extend to the right of a span set.
Definition: spanset_ops_meos.c:652
bool overleft_float_spanset(double d, const SpanSet *ss)
Return true if a float does not extend to the right of a span set.
Definition: spanset_ops_meos.c:683
bool overright_text_set(const text *txt, const Set *s)
Return true if a text does not extend to the left of a set.
Definition: set_ops_meos.c:856
bool overright_bigint_spanset(int64 i, const SpanSet *ss)
Return true if a big integer does not extend to the left of a span set.
Definition: spanset_ops_meos.c:747
bool overbefore_timestamptz_set(TimestampTz t, const Set *s)
Return true if a timestamptz is not after a set @csqlfn Overleft_value_set()
Definition: set_ops_meos.c:698
bool before_set_date(const Set *s, DateADT d)
Return true if a set is before a date.
Definition: set_ops_meos.c:401
bool before_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return true if a timestamptz is before a span set.
Definition: spanset_ops_meos.c:342
SpanSet * minus_timestamptz_span(TimestampTz t, const Span *s)
Return the difference of a timestamptz and a span.
Definition: span_ops_meos.c:1189
SpanSet * union_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return the union of two span sets.
Definition: spanset_ops.c:865
SpanSet * minus_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return the difference of a span set and a timestamptz.
Definition: spanset_ops_meos.c:1259
SpanSet * intersection_spanset_span(const SpanSet *ss, const Span *s)
Return the intersection of a span set and a span.
Definition: spanset_ops.c:982
SpanSet * minus_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return the difference of two span sets.
Definition: spanset_ops.c:1233
SpanSet * minus_spanset_bigint(const SpanSet *ss, int64 i)
Return the difference of a span set and a big integer.
Definition: spanset_ops_meos.c:1214
SpanSet * intersection_span_spanset(const Span *s, const SpanSet *ss)
Return the intersection of a span and a span set.
Definition: spanset_ops.c:1030
Set * union_date_set(DateADT d, const Set *s)
Return the union of a date and a set.
Definition: set_ops_meos.c:1143
Set * intersection_set_date(const Set *s, DateADT d)
Return the intersection of a set and a date.
Definition: set_ops_meos.c:1233
Set * intersection_float_set(double d, const Set *s)
Return the intersection of a float and a set.
Definition: set_ops_meos.c:1291
Set * union_set_int(const Set *s, int i)
Return the union of a set and an integer.
Definition: set_ops_meos.c:998
Set * intersection_set_int(const Set *s, int i)
Return the intersection of a set and an integer.
Definition: set_ops_meos.c:1173
SpanSet * union_spanset_int(const SpanSet *ss, int i)
Return the union of a span set and an integer.
Definition: spanset_ops_meos.c:963
SpanSet * union_span_spanset(const Span *s, const SpanSet *ss)
Return the union of a span and a span set.
Definition: spanset_ops.c:853
Set * intersection_set_bigint(const Set *s, int64 i)
Return the intersection of a set and a big integer.
Definition: set_ops_meos.c:1188
Span * intersection_span_float(const Span *s, double d)
Return the intersection of a span and a float.
Definition: span_ops_meos.c:1081
Set * minus_int_set(int i, const Set *s)
Return the difference of an integer and a set.
Definition: set_ops_meos.c:1348
Set * union_set_bigint(const Set *s, int64 i)
Return the union of a set and a big integer.
Definition: set_ops_meos.c:1013
SpanSet * union_timestamptz_spanset(TimestampTz t, SpanSet *ss)
Return the union of a span set and a timestamptz.
Definition: spanset_ops_meos.c:948
SpanSet * intersection_spanset_int(const SpanSet *ss, int i)
Return the intersection of a span set and an integer.
Definition: spanset_ops_meos.c:1042
Set * minus_timestamptz_set(TimestampTz t, const Set *s)
Return the difference of a timestamptz and a set.
Definition: set_ops_meos.c:1423
SpanSet * minus_date_spanset(DateADT d, const SpanSet *ss)
Return the difference of a date and a span set.
Definition: spanset_ops_meos.c:1167
Set * minus_date_set(DateADT d, const Set *s)
Return the difference of a date and a set.
Definition: set_ops_meos.c:1408
Set * intersection_date_set(DateADT d, const Set *s)
Return the intersection of a date and a set.
Definition: set_ops_meos.c:1317
Set * minus_set_int(const Set *s, int i)
Return the difference of a set and an integer.
Definition: set_ops_meos.c:1441
Set * union_float_set(double d, const Set *s)
Return the union of a float and a set.
Definition: set_ops_meos.c:1117
Set * intersection_bigint_set(int64 i, const Set *s)
Return the intersection of a big integer and a set.
Definition: set_ops_meos.c:1278
Set * union_set_float(const Set *s, double d)
Return the union of a set and a float.
Definition: set_ops_meos.c:1028
Set * minus_set_timestamptz(const Set *s, TimestampTz t)
Return the difference of a set and a timestamptz.
Definition: set_ops_meos.c:1516
Set * union_bigint_set(int64 i, const Set *s)
Return the union of a big integer and a set.
Definition: set_ops_meos.c:1104
Set * intersection_text_set(const text *txt, const Set *s)
Return the intersection of a text and a set.
Definition: set_ops_meos.c:1304
Set * minus_float_set(double d, const Set *s)
Return the difference of a float and a set.
Definition: set_ops_meos.c:1378
SpanSet * union_spanset_float(const SpanSet *ss, double d)
Return the union of a span set and a float.
Definition: spanset_ops_meos.c:993
SpanSet * minus_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return the difference of a timestamptz and a span set.
Definition: spanset_ops_meos.c:1182
Set * intersection_set_set(const Set *s1, const Set *s2)
Return the intersection of two sets.
Definition: set_ops.c:575
SpanSet * union_spanset_date(const SpanSet *ss, DateADT d)
Return the union of a span set and a date.
Definition: spanset_ops_meos.c:1008
SpanSet * minus_spanset_span(const SpanSet *ss, const Span *s)
Return the difference of a span set and a span.
Definition: spanset_ops.c:1201
Set * minus_set_bigint(const Set *s, int64 i)
Return the difference of a set and a big integer.
Definition: set_ops_meos.c:1456
Set * minus_text_set(const text *txt, const Set *s)
Return the difference of a text and a set.
Definition: set_ops_meos.c:1393
Set * intersection_set_text(const Set *s, const text *txt)
Return the intersection of a set and a text.
Definition: set_ops_meos.c:1218
SpanSet * minus_span_float(const Span *s, double d)
Return the difference of a span and a float.
Definition: span_ops_meos.c:1236
Set * union_timestamptz_set(TimestampTz t, const Set *s)
Return the union of a timestamptz and a set.
Definition: set_ops_meos.c:1156
Span * intersection_span_bigint(const Span *s, int64 i)
Return the intersection of a span and a big integer.
Definition: span_ops_meos.c:1066
Span * intersection_span_timestamptz(const Span *s, TimestampTz t)
Return the intersection of a span and a timestamptz.
Definition: span_ops_meos.c:1110
SpanSet * intersection_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return the intersection of two span sets.
Definition: spanset_ops.c:1042
SpanSet * minus_float_spanset(double d, const SpanSet *ss)
Return the difference of a float and a span set.
Definition: spanset_ops_meos.c:1152
Set * intersection_set_float(const Set *s, double d)
Return the intersection of a set and a float.
Definition: set_ops_meos.c:1203
SpanSet * intersection_spanset_date(const SpanSet *ss, DateADT d)
Return the intersection of a span set and a date.
Definition: spanset_ops_meos.c:1087
Set * union_set_date(const Set *s, DateADT d)
Return the union of a set and a date.
Definition: set_ops_meos.c:1058
SpanSet * union_span_timestamptz(const Span *s, TimestampTz t)
Return the union of a span and a timestamptz.
Definition: span_ops_meos.c:1019
SpanSet * minus_span_int(const Span *s, int i)
Return the difference of a span and an integer.
Definition: span_ops_meos.c:1206
SpanSet * minus_span_date(const Span *s, DateADT d)
Return the difference of a span and a date.
Definition: span_ops_meos.c:1251
SpanSet * minus_bigint_spanset(int64 i, const SpanSet *ss)
Return the difference of a big integer and a span set.
Definition: spanset_ops_meos.c:1137
Set * minus_set_text(const Set *s, const text *txt)
Return the difference of a set and a text.
Definition: set_ops_meos.c:1486
Set * minus_set_float(const Set *s, double d)
Return the difference of a set and a float.
Definition: set_ops_meos.c:1471
Set * union_int_set(int i, const Set *s)
Return the union of an integer and a set.
Definition: set_ops_meos.c:1091
SpanSet * intersection_spanset_bigint(const SpanSet *ss, int64 i)
Return the intersection of a span set and a big integer.
Definition: spanset_ops_meos.c:1057
Set * union_set_set(const Set *s1, const Set *s2)
Return the union of two sets.
Definition: set_ops.c:529
SpanSet * minus_date_span(DateADT d, const Span *s)
Return the difference of a date and a span.
Definition: span_ops_meos.c:1174
SpanSet * union_spanset_bigint(const SpanSet *ss, int64 i)
Return the union of a span set and a big integer.
Definition: spanset_ops_meos.c:978
SpanSet * minus_span_span(const Span *s1, const Span *s2)
Return the difference of two spans.
Definition: span_ops.c:832
SpanSet * minus_float_span(double d, const Span *s)
Return the difference of a float and a span.
Definition: span_ops_meos.c:1159
Set * intersection_int_set(int i, const Set *s)
Return the intersection of an integer and a set.
Definition: set_ops_meos.c:1265
SpanSet * union_span_bigint(const Span *s, int64 i)
Return the union of a span and a big integer.
Definition: span_ops_meos.c:935
SpanSet * union_span_span(const Span *s1, const Span *s2)
Return the union of two spans.
Definition: span_ops.c:567
SpanSet * union_span_int(const Span *s, int i)
Return the union of a span and an integer.
Definition: span_ops_meos.c:907
SpanSet * union_spanset_span(const SpanSet *ss, const Span *s)
Return the union of a span set and a span.
Definition: spanset_ops.c:776
SpanSet * union_int_span(int i, const Span *s)
Return the union of an integer and a span.
Definition: span_ops_meos.c:922
SpanSet * union_span_date(const Span *s, DateADT d)
Return the union of a span and a date.
Definition: span_ops_meos.c:991
SpanSet * minus_int_spanset(int i, const SpanSet *ss)
Return the difference of an integer and a span set.
Definition: spanset_ops_meos.c:1122
SpanSet * minus_span_timestamptz(const Span *s, TimestampTz t)
Return the difference of a span and a timestamptz.
Definition: span_ops_meos.c:1265
Set * union_set_text(const Set *s, const text *txt)
Return the union of a set and a text.
Definition: set_ops_meos.c:1043
SpanSet * union_bigint_spanset(int64 i, SpanSet *ss)
Return the union of a span set and a big integer.
Definition: spanset_ops_meos.c:903
Set * union_set_timestamptz(const Set *s, TimestampTz t)
Return the union of a set and a timestamptz.
Definition: set_ops_meos.c:1073
Set * minus_set_set(const Set *s1, const Set *s2)
Return the difference of two sets.
Definition: set_ops.c:635
SpanSet * union_float_spanset(double d, SpanSet *ss)
Return the union of a span set and a float.
Definition: spanset_ops_meos.c:918
Set * minus_set_date(const Set *s, DateADT d)
Return the difference of a set and a date.
Definition: set_ops_meos.c:1501
SpanSet * minus_span_spanset(const Span *s, const SpanSet *ss)
Return the difference of a span and a span set.
Definition: spanset_ops.c:1153
SpanSet * union_span_float(const Span *s, double d)
Return the union of a span and a float.
Definition: span_ops_meos.c:963
SpanSet * union_timestamptz_span(TimestampTz t, const Span *s)
Return the union of a timestamptz and a span.
Definition: span_ops_meos.c:1034
SpanSet * minus_spanset_int(const SpanSet *ss, int i)
Return the difference of a span set and an integer.
Definition: spanset_ops_meos.c:1199
Span * intersection_span_span(const Span *s1, const Span *s2)
Return the intersection of two spans.
Definition: span_ops.c:662
Span * intersection_span_int(const Span *s, int i)
Return the intersection of a span and an integer.
Definition: span_ops_meos.c:1051
SpanSet * union_date_spanset(DateADT d, SpanSet *ss)
Return the union of a span set and a date.
Definition: spanset_ops_meos.c:933
SpanSet * union_date_span(const Span *s, DateADT d)
Return the union of a date and a span.
Definition: span_ops_meos.c:1006
SpanSet * intersection_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return the intersection of a span set and a timestamptz.
Definition: spanset_ops_meos.c:1102
SpanSet * union_bigint_span(const Span *s, int64 i)
Return the union of a big integer and a span.
Definition: span_ops_meos.c:950
SpanSet * intersection_spanset_float(const SpanSet *ss, double d)
Return the intersection of a span set and a float.
Definition: spanset_ops_meos.c:1072
Set * intersection_timestamptz_set(TimestampTz t, const Set *s)
Return the intersection of a timestamptz and a set.
Definition: set_ops_meos.c:1330
SpanSet * minus_spanset_date(const SpanSet *ss, DateADT d)
Return the difference of a span set and a date.
Definition: spanset_ops_meos.c:1244
SpanSet * minus_span_bigint(const Span *s, int64 i)
Return the difference of a span and a big integer.
Definition: span_ops_meos.c:1221
SpanSet * union_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return the union of a span set and a timestamptz.
Definition: spanset_ops_meos.c:1023
Set * union_text_set(const text *txt, const Set *s)
Return the union of a text and a set.
Definition: set_ops_meos.c:1130
SpanSet * minus_int_span(int i, const Span *s)
Return the difference of an integer and a span.
Definition: span_ops_meos.c:1129
SpanSet * union_float_span(const Span *s, double d)
Return the union of a float and a span.
Definition: span_ops_meos.c:978
Set * minus_bigint_set(int64 i, const Set *s)
Return the difference of a big integer and a set.
Definition: set_ops_meos.c:1363
Set * intersection_set_timestamptz(const Set *s, TimestampTz t)
Return the intersection of a set and a timestamptz.
Definition: set_ops_meos.c:1247
SpanSet * minus_bigint_span(int64 i, const Span *s)
Return the difference of a big integer and a span.
Definition: span_ops_meos.c:1144
SpanSet * minus_spanset_float(const SpanSet *ss, double d)
Return the difference of a span set and a float.
Definition: spanset_ops_meos.c:1229
Span * intersection_span_date(const Span *s, DateADT d)
Return the intersection of a span and a date.
Definition: span_ops_meos.c:1096
SpanSet * union_int_spanset(int i, SpanSet *ss)
Return the union of a span set and an integer.
Definition: spanset_ops_meos.c:888
bool overlaps_set_set(const Set *s1, const Set *s2)
Return true if two sets overlap.
Definition: set_ops.c:269
bool contains_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set contains a date.
Definition: spanset_ops_meos.c:105
bool contained_timestamptz_spanset(TimestampTz t, const SpanSet *ss)
Return true if a timestamptz is contained in a span set.
Definition: spanset_ops_meos.c:184
bool contains_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set contains a big integer.
Definition: spanset_ops_meos.c:75
bool contained_text_set(const text *txt, const Set *s)
Return true if a text is contained in a set.
Definition: set_ops_meos.c:198
bool adjacent_span_span(const Span *s1, const Span *s2)
Return true if two spans are adjacent.
Definition: span_ops.c:270
bool contained_date_set(DateADT d, const Set *s)
Return true if a date is contained in a set.
Definition: set_ops_meos.c:213
bool overlaps_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set and a span overlap.
Definition: spanset_ops.c:249
bool contained_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set is contained in the second one.
Definition: spanset_ops.c:232
bool contained_int_set(int i, const Set *s)
Return true if an integer is contained in a set.
Definition: set_ops_meos.c:153
bool contained_int_spanset(int i, const SpanSet *ss)
Return true if an integer is contained in a span set.
Definition: spanset_ops_meos.c:124
bool contained_int_span(int i, const Span *s)
Return true if an integer is contained in a span.
Definition: span_ops_meos.c:126
bool contained_bigint_spanset(int64 i, const SpanSet *ss)
Return true if a big integer is contained in a span set.
Definition: spanset_ops_meos.c:139
bool contains_span_int(const Span *s, int i)
Return true if a span contains an integer.
Definition: span_ops_meos.c:62
bool contained_float_span(double d, const Span *s)
Return true if a float is contained in a span.
Definition: span_ops_meos.c:156
bool adjacent_spanset_bigint(const SpanSet *ss, int64 i)
Return true if a span set and a big integer are adjacent.
Definition: spanset_ops_meos.c:218
bool contains_set_set(const Set *s1, const Set *s2)
Return true if the first set contains the second one.
Definition: set_ops.c:204
bool contained_float_spanset(double d, const SpanSet *ss)
Return true if a float is contained in a span set.
Definition: spanset_ops_meos.c:154
bool contained_bigint_set(int64 i, const Set *s)
Return true if a big integer is contained in a set.
Definition: set_ops_meos.c:168
bool contained_timestamptz_span(TimestampTz t, const Span *s)
Return true if a timestamp is contained in a span.
Definition: span_ops_meos.c:186
bool adjacent_span_float(const Span *s, double d)
Return true if a span and a float are adjacent.
Definition: span_ops_meos.c:235
bool contains_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if the first span set contains the second one.
Definition: spanset_ops.c:137
bool contains_span_float(const Span *s, double d)
Return true if a span contains a float.
Definition: span_ops_meos.c:92
bool adjacent_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span and a span set are adjacent.
Definition: spanset_ops.c:402
bool overlaps_span_span(const Span *s1, const Span *s2)
Return true if two spans overlap.
Definition: span_ops.c:209
bool contains_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span contains a timestamptz.
Definition: span_ops.c:142
bool contains_set_timestamptz(const Set *s, TimestampTz t)
Return true if a set contains a timestamptz.
Definition: set_ops_meos.c:133
bool overlaps_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span and a span set overlap.
Definition: spanset_ops.c:285
bool contained_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span is contained in a span set.
Definition: spanset_ops.c:207
bool contained_span_span(const Span *s1, const Span *s2)
Return true if the first span is contained in the second one.
Definition: span_ops.c:193
bool overlaps_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if two span sets overlap.
Definition: spanset_ops.c:297
bool contains_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set contains a timestamptz.
Definition: spanset_ops.c:80
bool adjacent_spanset_float(const SpanSet *ss, double d)
Return true if a span set and a float are adjacent.
Definition: spanset_ops_meos.c:233
bool contains_span_spanset(const Span *s, const SpanSet *ss)
Return true if a span contains a span set.
Definition: spanset_ops.c:122
bool adjacent_span_timestamptz(const Span *s, TimestampTz t)
Return true if a span and a timestamptz are adjacent.
Definition: span_ops_meos.c:265
bool contains_set_int(const Set *s, int i)
Return true if a set contains an integer.
Definition: set_ops_meos.c:58
bool adjacent_span_bigint(const Span *s, int64 i)
Return true if a span and a big integer are adjacent.
Definition: span_ops_meos.c:220
bool contained_bigint_span(int64 i, const Span *s)
Return true if a big integer is contained in a span.
Definition: span_ops_meos.c:141
bool adjacent_span_int(const Span *s, int i)
Return true if a span and an integer are adjacent.
Definition: span_ops_meos.c:205
bool adjacent_spanset_timestamptz(const SpanSet *ss, TimestampTz t)
Return true if a span set and a timestamptz are adjacent.
Definition: spanset_ops_meos.c:263
bool adjacent_spanset_date(const SpanSet *ss, DateADT d)
Return true if a span set and a date are adjacent.
Definition: spanset_ops_meos.c:248
bool contained_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set is contained in a span set.
Definition: spanset_ops.c:220
bool contained_date_spanset(DateADT d, const SpanSet *ss)
Return true if a date is contained in a span set.
Definition: spanset_ops_meos.c:169
bool contains_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set contains a span.
Definition: spanset_ops.c:95
bool contains_set_bigint(const Set *s, int64 i)
Return true if a set contains a big integer.
Definition: set_ops_meos.c:73
bool contained_timestamptz_set(TimestampTz t, const Set *s)
Return true if a timestamptz is contained in a set.
Definition: set_ops_meos.c:228
bool contains_spanset_float(const SpanSet *ss, double d)
Return true if a span set contains a float.
Definition: spanset_ops_meos.c:90
bool adjacent_span_date(const Span *s, DateADT d)
Return true if a span and a date are adjacent.
Definition: span_ops_meos.c:250
bool adjacent_spanset_int(const SpanSet *ss, int i)
Return true if a span set and an integer are adjacent.
Definition: spanset_ops_meos.c:203
bool contains_set_date(const Set *s, DateADT d)
Return true if a set contains a date.
Definition: set_ops_meos.c:118
bool contains_set_text(const Set *s, text *t)
Return true if a set contains a text.
Definition: set_ops_meos.c:103
bool contains_spanset_int(const SpanSet *ss, int i)
Return true if a span set contains an integer.
Definition: spanset_ops_meos.c:60
bool contains_span_bigint(const Span *s, int64 i)
Return true if a span contains a big integer.
Definition: span_ops_meos.c:77
bool contained_float_set(double d, const Set *s)
Return true if a float is contained in a set.
Definition: set_ops_meos.c:183
bool adjacent_spanset_span(const SpanSet *ss, const Span *s)
Return true if a span set and a span are adjacent.
Definition: spanset_ops.c:374
bool adjacent_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2)
Return true if two span sets are adjacent.
Definition: spanset_ops.c:414
bool contains_set_float(const Set *s, double d)
Return true if a set contains a float.
Definition: set_ops_meos.c:88
bool contains_span_span(const Span *s1, const Span *s2)
Return true if the first span contains the second one.
Definition: span_ops.c:156
bool contained_date_span(DateADT d, const Span *s)
Return true if a date is contained in a span.
Definition: span_ops_meos.c:171
bool contains_span_date(const Span *s, DateADT d)
Return true if a span contains a date.
Definition: span_ops_meos.c:107
bool contained_set_set(const Set *s1, const Set *s2)
Return true if the first set is contained in the second one.
Definition: set_ops.c:253
SpanSet * floatspanset_radians(const SpanSet *ss)
Return a float span set with the values converted to radians.
Definition: spanset.c:1162
SpanSet * floatspanset_shift_scale(const SpanSet *ss, double shift, double width, bool hasshift, bool haswidth)
Return a float span shifted and/or scaled by two values.
Definition: spanset_meos.c:329
SpanSet * floatspanset_ceil(const SpanSet *ss)
Return a float span set rounded up to the nearest integer.
Definition: spanset.c:1120
Span * tstzspan_expand(const Span *s, const Interval *interv)
Return a timestamptz span with its bounds expanded/decreased by an interval.
Definition: span.c:1042
Set * dateset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth)
Return a date set shifted and/or scaled by two values.
Definition: set_meos.c:968
Set * tstzset_tprecision(const Set *s, const Interval *duration, TimestampTz torigin)
Return a timestamptz set with the precision set to a time bin.
Definition: temporal_analytics.c:90
Span * floatspan_round(const Span *s, int maxdd)
Return a float span with the precision of the bounds set to a number of decimal places.
Definition: span.c:834
Span * tstzspan_shift_scale(const Span *s, const Interval *shift, const Interval *duration)
Return a timestamptz span shifted and/or scaled by two intervals.
Definition: span.c:1344
Span * datespan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth)
Return a date span shifted and/or scaled by the values.
Definition: span_meos.c:690
SpanSet * floatspanset_degrees(const SpanSet *ss, bool normalize)
Return a float span set with the values converted to degrees.
Definition: spanset.c:1140
Span * floatspan_shift_scale(const Span *s, double shift, double width, bool hasshift, bool haswidth)
Return a float span shifted and/or scaled by the values.
Definition: span_meos.c:670
SpanSet * bigintspanset_shift_scale(const SpanSet *ss, int64 shift, int64 width, bool hasshift, bool haswidth)
Return a big integer span shifted and/or scaled by two values.
Definition: spanset_meos.c:309
Span * intspan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth)
Return an integer span shifted and/or scaled by the values.
Definition: span_meos.c:630
Set * floatset_shift_scale(const Set *s, double shift, double width, bool hasshift, bool haswidth)
Return a float set shifted and/or scaled by two values.
Definition: set_meos.c:949
Span * floatspan_radians(const Span *s)
Return a float span with the values converted to radians.
Definition: span.c:922
Set * textset_upper(const Set *s)
Return a text set transformed to uppercase.
Definition: set.c:875
Set * bigintset_shift_scale(const Set *s, int64 shift, int64 width, bool hasshift, bool haswidth)
Return a big integer set shifted and/or scaled by two values.
Definition: set_meos.c:929
Span * floatspan_floor(const Span *s)
Return a float span rounded down to the nearest integer @csqlfn Floatspan_floor()
Definition: span.c:873
Set * floatset_radians(const Set *s)
Convert a float set with the values into radians.
Definition: set.c:835
Set * textcat_textset_text(const Set *s, const text *txt)
Return the concatenation of a text set and a text.
Definition: set_meos.c:889
SpanSet * tstzspanset_shift_scale(const SpanSet *ss, const Interval *shift, const Interval *duration)
Return a timestamptz span set shifted and/or scaled by two intervals.
Definition: spanset.c:1232
Set * set_round(const Set *s, int maxdd)
Return a set with the precision of the values set to a number of decimal places.
Definition: set.c:734
TimestampTz timestamptz_tprecision(TimestampTz t, const Interval *duration, TimestampTz torigin)
Return a timestamptz with the precision set to a time bin.
Definition: temporal_analytics.c:72
Span * bigintspan_shift_scale(const Span *s, int64 shift, int64 width, bool hasshift, bool haswidth)
Return a big integer span shifted and/or scaled by the values.
Definition: span_meos.c:650
Span * floatspan_degrees(const Span *s, bool normalize)
Return a float span with the values converted to degrees.
Definition: span.c:905
Set * floatset_degrees(const Set *s, bool normalize)
Convert a float set with the values into degrees.
Definition: set.c:818
Set * textset_initcap(const Set *s)
Return a text set transformed to initcap.
Definition: set.c:887
Span * floatspan_ceil(const Span *s)
Return a float span rounded up to the nearest integer @csqlfn Floatspan_ceil()
Definition: span.c:888
SpanSet * datespanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth)
Return a date span shifted and/or scaled by two values.
Definition: spanset_meos.c:349
Set * floatset_ceil(const Set *s)
Return a float set rounded up to the nearest integer @csqlfn Floatset_ceil()
Definition: set.c:805
SpanSet * intspanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth)
Return an integer span shifted and/or scaled by two values.
Definition: spanset_meos.c:289
Set * tstzset_shift_scale(const Set *s, const Interval *shift, const Interval *duration)
Return a timestamptz set shifted and/or scaled by two intervals.
Definition: set.c:976
Set * textset_lower(const Set *s)
Return a text set transformed to lowercase.
Definition: set.c:863
Set * textcat_text_textset(const text *txt, const Set *s)
Return the concatenation of a text and a text set.
Definition: set_meos.c:874
Set * intset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth)
Return an integer set shifted and/or scaled by two values.
Definition: set_meos.c:909
Span * tstzspan_tprecision(const Span *s, const Interval *duration, TimestampTz torigin)
Return a timestamptz span with the precision set to a time bin.
Definition: temporal_analytics.c:112
SpanSet * floatspanset_round(const SpanSet *ss, int maxdd)
Return a float span set with the precision of the spans set to a number of decimal places.
Definition: spanset.c:1061
SpanSet * tstzspanset_tprecision(const SpanSet *ss, const Interval *duration, TimestampTz torigin)
Return a timestamptz span set with the precision set to a time bin.
Definition: temporal_analytics.c:139
Set * floatset_floor(const Set *s)
Return a float set rounded down to the nearest integer @csqlfn Floatset_floor()
Definition: set.c:794
SpanSet * floatspanset_floor(const SpanSet *ss)
Return a float span set rounded down to the nearest integer.
Definition: spanset.c:1101
TInstant ** temporal_instants(const Temporal *temp, int *count)
Return a copy of the distinct instants of a temporal value.
Definition: temporal.c:2615
double tfloat_min_value(const Temporal *temp)
Return the minimum value of a temporal float.
Definition: temporal_meos.c:568
bool * tbool_values(const Temporal *temp, int *count)
Return the array of base values of a temporal boolean.
Definition: temporal_meos.c:349
bool tbool_end_value(const Temporal *temp)
Return the end value of a temporal boolean.
Definition: temporal_meos.c:491
text * ttext_start_value(const Temporal *temp)
Return a copy of the start value of a temporal text.
Definition: temporal_meos.c:475
TSequence * temporal_sequence_n(const Temporal *temp, int i)
Return a copy of the n-th sequence of a temporal sequence (set)
Definition: temporal.c:2267
uint32 temporal_hash(const Temporal *temp)
Return the 32-bit hash value of a temporal value.
Definition: temporal.c:3258
TSequence ** temporal_segments(const Temporal *temp, int *count)
Return the array of segments of a temporal value.
Definition: temporal.c:2349
TSequence * temporal_end_sequence(const Temporal *temp)
Return a copy of the end sequence of a temporal sequence (set)
Definition: temporal.c:2242
text ** ttext_values(const Temporal *temp, int *count)
Return the array of copies of base values of a temporal text.
Definition: temporal_meos.c:409
TSequence * temporal_start_sequence(const Temporal *temp)
Return a copy of the start sequence of a temporal sequence (set)
Definition: temporal.c:2217
int temporal_num_sequences(const Temporal *temp)
Return the number of sequences of a temporal sequence (set)
Definition: temporal.c:2200
double tfloat_end_value(const Temporal *temp)
Return the end value of a temporal float.
Definition: temporal_meos.c:521
double tnumber_integral(const Temporal *temp)
Return the integral (area under the curve) of a temporal number.
Definition: temporal.c:2962
int tint_min_value(const Temporal *temp)
Return the minimum value of a temporal integer.
Definition: temporal_meos.c:553
bool tint_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, int *value)
Return the value of a temporal integer at a timestamptz.
Definition: temporal_restrict_meos.c:241
int * tint_values(const Temporal *temp, int *count)
Return the array of base values of a temporal integer.
Definition: temporal_meos.c:369
int tint_end_value(const Temporal *temp)
Return the end value of a temporal integer.
Definition: temporal_meos.c:506
bool tbool_value_n(const Temporal *temp, int n, bool *result)
Return the n-th value of a temporal boolean.
Definition: temporal_meos.c:648
TimestampTz temporal_start_timestamptz(const Temporal *temp)
Return the start timestamptz of a temporal value.
Definition: temporal.c:2659
const char * temporal_subtype(const Temporal *temp)
Return the string representation of the subtype of a temporal value.
Definition: temporal.c:1794
SpanSet * temporal_time(const Temporal *temp)
Return the time frame of a temporal value as a span set.
Definition: temporal.c:1927
TInstant * temporal_end_instant(const Temporal *temp)
Return a copy of the end instant of a temporal value.
Definition: temporal.c:2517
TSequence ** temporal_sequences(const Temporal *temp, int *count)
Return an array of copies of the sequences of a temporal sequence (set)
Definition: temporal.c:2328
TSequenceSet * temporal_stops(const Temporal *temp, double maxdist, const Interval *minduration)
Return the subsequences where a temporal value stays within a given distance for at least a given dur...
Definition: temporal.c:2918
TimestampTz temporal_end_timestamptz(const Temporal *temp)
Return the end timestamptz of a temporal value.
Definition: temporal.c:2684
bool tint_value_n(const Temporal *temp, int n, int *result)
Return the n-th value of a temporal integer.
Definition: temporal_meos.c:668
TInstant * temporal_max_instant(const Temporal *temp)
Return a copy of the instant with maximum base value of a temporal value.
Definition: temporal.c:2144
TInstant * temporal_min_instant(const Temporal *temp)
Return a copy of the instant with minimum base value of a temporal value.
Definition: temporal.c:2130
int tint_start_value(const Temporal *temp)
Return the start value of a temporal integer.
Definition: temporal_meos.c:445
double * tfloat_values(const Temporal *temp, int *count)
Return the array of base values of a temporal float.
Definition: temporal_meos.c:389
TInstant * temporal_start_instant(const Temporal *temp)
Return a copy of the start instant of a temporal value.
Definition: temporal.c:2471
bool temporal_lower_inc(const Temporal *temp)
Return true if the start instant of a temporal value is inclusive.
Definition: temporal.c:2375
TInstant * temporal_instant_n(const Temporal *temp, int n)
Return a copy of the n-th instant of a temporal value.
Definition: temporal.c:2563
bool ttext_value_n(const Temporal *temp, int n, text **result)
Return a copy of the n-th value of a temporal text.
Definition: temporal_meos.c:708
bool tbool_start_value(const Temporal *temp)
Return the start value of a temporal boolean.
Definition: temporal_meos.c:430
bool temporal_upper_inc(const Temporal *temp)
Return true if the end instant of a temporal value is inclusive.
Definition: temporal.c:2399
bool tfloat_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, double *value)
Return the value of a temporal integer at a timestamptz.
Definition: temporal_restrict_meos.c:263
text * ttext_min_value(const Temporal *temp)
Return a copy of the minimum value of a temporal text.
Definition: temporal_meos.c:583
Interval * temporal_duration(const Temporal *temp, bool boundspan)
Return the duration of a temporal value.
Definition: temporal.c:2170
const char * temporal_interp(const Temporal *temp)
Return the string representation of the interpolation of a temporal value.
Definition: temporal.c:1810
bool tfloat_value_n(const Temporal *temp, int n, double *result)
Return the n-th value of a temporal float.
Definition: temporal_meos.c:688
int temporal_num_timestamps(const Temporal *temp)
Return the number of distinct timestamps of a temporal value.
Definition: temporal.c:2634
int temporal_num_instants(const Temporal *temp)
Return the number of distinct instants of a temporal value.
Definition: temporal.c:2424
int tint_max_value(const Temporal *temp)
Return the maximum value of a temporal integer.
Definition: temporal_meos.c:600
bool ttext_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, text **value)
Return the value of a temporal integer at a timestamptz.
Definition: temporal_restrict_meos.c:285
double tnumber_twavg(const Temporal *temp)
Return the time-weighted average of a temporal number.
Definition: temporal.c:2988
double tfloat_max_value(const Temporal *temp)
Return the maximum value of a temporal float.
Definition: temporal_meos.c:615
bool temporal_timestamptz_n(const Temporal *temp, int n, TimestampTz *result)
Return in last argument the n-th distinct timestamptz of a temporal value.
Definition: temporal.c:2712
text * ttext_max_value(const Temporal *temp)
Return a copy of the maximum value of a temporal text.
Definition: temporal_meos.c:630
double tfloat_start_value(const Temporal *temp)
Return the start value of a temporal float.
Definition: temporal_meos.c:460
bool tbool_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, bool *value)
Return the value of a temporal boolean at a timestamptz.
Definition: temporal_restrict_meos.c:219
text * ttext_end_value(const Temporal *temp)
Return a copy of the end value of a temporal text.
Definition: temporal_meos.c:536
TimestampTz * temporal_timestamps(const Temporal *temp, int *count)
Return the array of distinct timestamps of a temporal value.
Definition: temporal.c:2752
SpanSet * tnumber_valuespans(const Temporal *temp)
Return the base values of a temporal number as a span set.
Definition: temporal.c:1901
Temporal * temporal_tagg_finalfn(SkipList *state)
Generic final function for aggregating temporal values.
Definition: temporal_aggfuncs.c:661
SkipList * tstzset_tcount_transfn(SkipList *state, const Set *s)
Transition function for temporal count aggregate of timestamp sets.
Definition: temporal_aggfuncs.c:1015
SkipList * tint_tmin_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal minimum of temporal values.
Definition: temporal_aggfuncs_meos.c:117
SkipList * temporal_tcount_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal count aggregation.
Definition: temporal_aggfuncs.c:1120
SkipList * tstzspanset_tcount_transfn(SkipList *state, const SpanSet *ss)
Transition function for temporal count aggregate of timestamptz span sets.
Definition: temporal_aggfuncs.c:1079
SkipList * tbool_tor_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal or of temporal booleans.
Definition: temporal_aggfuncs_meos.c:98
SkipList * tint_tsum_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal sum of temporal values.
Definition: temporal_aggfuncs_meos.c:193
SkipList * tint_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal sum of temporal values.
Definition: temporal_aggfuncs_meos.c:385
SkipList * tfloat_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal maximum of temporal values.
Definition: temporal_aggfuncs_meos.c:363
SkipList * tnumber_wavg_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal average of temporal numbers.
Definition: temporal_aggfuncs_meos.c:429
SkipList * tint_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal maximum of temporal values.
Definition: temporal_aggfuncs_meos.c:341
Span * temporal_extent_transfn(Span *s, const Temporal *temp)
Transition function for temporal extent aggregate of temporal values.
Definition: temporal_aggfuncs.c:1234
SkipList * tfloat_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal minimum of temporal values.
Definition: temporal_aggfuncs_meos.c:319
SkipList * tbool_tand_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal and of temporal booleans.
Definition: temporal_aggfuncs_meos.c:79
Temporal * tnumber_tavg_finalfn(SkipList *state)
Final function for temporal average aggregation.
Definition: temporal_aggfuncs.c:1205
SkipList * ttext_tmax_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal maximum of temporal text values.
Definition: temporal_aggfuncs_meos.c:270
SkipList * tstzspan_tcount_transfn(SkipList *state, const Span *s)
Transition function for temporal count aggregate of timestamptz spans.
Definition: temporal_aggfuncs.c:1047
SkipList * tfloat_tmin_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal minimum of temporal values.
Definition: temporal_aggfuncs_meos.c:136
TBox * tnumber_extent_transfn(TBox *box, const Temporal *temp)
Transition function for temporal extent aggregate of temporal numbers.
Definition: temporal_aggfuncs.c:1264
SkipList * tint_tmax_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal maximum of temporal values.
Definition: temporal_aggfuncs_meos.c:155
SkipList * tfloat_tsum_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal sum of temporal values.
Definition: temporal_aggfuncs_meos.c:212
SkipList * tnumber_tavg_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal average of temporal numbers.
Definition: temporal_aggfuncs_meos.c:231
SkipList * tint_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal minimum of temporal values.
Definition: temporal_aggfuncs_meos.c:297
SkipList * tfloat_tmax_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal maximum of temporal values.
Definition: temporal_aggfuncs_meos.c:174
SkipList * timestamptz_tcount_transfn(SkipList *state, TimestampTz t)
Transition function for temporal count aggregate of timestamps.
Definition: temporal_aggfuncs.c:990
SkipList * tfloat_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv)
Transition function for temporal sum of temporal values.
Definition: temporal_aggfuncs_meos.c:407
SkipList * ttext_tmin_transfn(SkipList *state, const Temporal *temp)
Transition function for temporal minimum of temporal text values.
Definition: temporal_aggfuncs_meos.c:251
Temporal * temporal_tsample(const Temporal *temp, const Interval *duration, TimestampTz origin, interpType interp)
Return a temporal value sampled according to time bins.
Definition: temporal_analytics.c:680
Temporal * temporal_tprecision(const Temporal *temp, const Interval *duration, TimestampTz origin)
Return a temporal value with the precision set to time bins.
Definition: temporal_analytics.c:432
double temporal_dyntimewarp_distance(const Temporal *temp1, const Temporal *temp2)
Return the Dynamic Time Warp distance between two temporal values.
Definition: temporal_analytics.c:871
double temporal_frechet_distance(const Temporal *temp1, const Temporal *temp2)
Return the Frechet distance between two temporal values.
Definition: temporal_analytics.c:855
double temporal_hausdorff_distance(const Temporal *temp1, const Temporal *temp2)
Return the Hausdorf distance between two temporal values.
Definition: temporal_analytics.c:1199
Match * temporal_frechet_path(const Temporal *temp1, const Temporal *temp2, int *count)
Return the Frechet distance between two temporal values.
Definition: temporal_analytics.c:1113
Match * temporal_dyntimewarp_path(const Temporal *temp1, const Temporal *temp2, int *count)
Return the Dynamic Time Warp distance between two temporal values.
Definition: temporal_analytics.c:1129
Temporal * temporal_simplify_max_dist(const Temporal *temp, double eps_dist, bool synchronized)
Return a temporal float/point simplified using a single-pass Douglas-Peucker line simplification algo...
Definition: temporal_analytics.c:1728
Temporal * temporal_simplify_dp(const Temporal *temp, double eps_dist, bool synchronized)
Return a temporal float/point simplified using the Douglas-Peucker line simplification algorithm.
Definition: temporal_analytics.c:1880
Temporal * temporal_simplify_min_tdelta(const Temporal *temp, const Interval *mint)
Return a temporal float/point sequence simplified ensuring that consecutive values are at least a cer...
Definition: temporal_analytics.c:1387
Temporal * temporal_simplify_min_dist(const Temporal *temp, double dist)
Return a temporal float/point sequence simplified ensuring that consecutive values are at least a giv...
Definition: temporal_analytics.c:1291
TBox * tfloatbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count)
Return the time tiles of a temporal float box.
Definition: temporal_tile_meos.c:210
TBox * tint_value_time_boxes(const Temporal *temp, int vsize, const Interval *duration, int vorigin, TimestampTz torigin, int *count)
Return the temporal boxes of a temporal number split with respect to a value and possibly a time grid...
Definition: temporal_tile_meos.c:252
Span * tint_value_bins(const Temporal *temp, int vsize, int vorigin, int *count)
Return the bins of an integer span.
Definition: span_tile_meos.c:256
TBox * tint_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count)
Return the temporal boxes of a temporal number split with respect to a time grid.
Definition: temporal_tile_meos.c:239
TBox * tfloatbox_value_time_tiles(const TBox *box, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count)
Return the tiles of a temporal float box.
Definition: temporal_tile_meos.c:141
Span * tfloat_value_bins(const Temporal *temp, double vsize, double vorigin, int *count)
Return the bins of a float span.
Definition: span_tile_meos.c:273
Temporal ** tint_value_time_split(const Temporal *temp, int size, const Interval *duration, int vorigin, TimestampTz torigin, int **value_bins, TimestampTz **time_bins, int *count)
Return the fragments of a temporal integer split according to value and time bins.
Definition: temporal_tile_meos.c:1383
TBox * tint_value_boxes(const Temporal *temp, int vsize, int vorigin, int *count)
Return the temporal boxes of a temporal number split with respect to a value grid.
Definition: temporal_tile_meos.c:227
Span * temporal_time_bins(const Temporal *temp, const Interval *duration, TimestampTz origin, int *count)
Return the time bins of a temporal value.
Definition: temporal_tile.c:540
TBox * tfloat_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count)
Return the temporal boxes of a temporal number split with respect to a value and possibly a time grid...
Definition: temporal_tile_meos.c:280
Temporal ** tfloat_value_time_split(const Temporal *temp, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, double **value_bins, TimestampTz **time_bins, int *count)
Return the fragments of a temporal integer split according to value and time bins.
Definition: temporal_tile_meos.c:1425
TBox * tfloat_value_boxes(const Temporal *temp, double vsize, double vorigin, int *count)
Return the temporal boxes of a temporal number split with respect to a value grid.
Definition: temporal_tile_meos.c:267
TBox * tfloatbox_value_tiles(const TBox *box, double vsize, double vorigin, int *count)
Return the value tiles of a temporal float box.
Definition: temporal_tile_meos.c:176
Temporal ** tint_value_split(const Temporal *temp, int vsize, int vorigin, int **value_bins, int *count)
Return the fragments of a temporal integer split according to value bins.
Definition: temporal_tile_meos.c:1313
TBox * tfloat_value_time_boxes(const Temporal *temp, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count)
Return the temporal boxes of a temporal number split with respect to a value and possibly a time grid...
Definition: temporal_tile_meos.c:293
TBox * tintbox_value_tiles(const TBox *box, int xsize, int xorigin, int *count)
Return the value tiles of a temporal integer box.
Definition: temporal_tile_meos.c:160
Temporal ** temporal_time_split(const Temporal *temp, const Interval *duration, TimestampTz torigin, TimestampTz **time_bins, int *count)
Return the fragments of a temporal value split according to time bins.
Definition: temporal_tile_meos.c:666
TBox * tintbox_value_time_tiles(const TBox *box, int xsize, const Interval *duration, int xorigin, TimestampTz torigin, int *count)
Return the tiles of a temporal integer box.
Definition: temporal_tile_meos.c:120
Temporal ** tfloat_value_split(const Temporal *temp, double size, double origin, double **bins, int *count)
Return the fragments of a temporal float split according to value bins.
Definition: temporal_tile_meos.c:1346
TBox * tintbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count)
Return the time tiles of a temporal float box.
Definition: temporal_tile_meos.c:193
bool overleft_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number does not extend to the right of the second one.
Definition: temporal_posops_meos.c:673
bool overafter_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is not before the second one.
Definition: temporal_posops_meos.c:765
bool overafter_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span is not before a temporal value.
Definition: temporal_posops_meos.c:105
bool overright_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span does not extend to the left of a temporal number.
Definition: temporal_posops_meos.c:295
bool after_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is after a temporal box.
Definition: temporal_posops_meos.c:620
bool overbefore_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span is not after a temporal value.
Definition: temporal_posops_meos.c:75
bool before_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if a temporal value is before a timestamptz span.
Definition: temporal_posops_meos.c:123
bool before_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is before the second one.
Definition: temporal_posops_meos.c:720
bool left_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is to the left of the second one.
Definition: temporal_posops_meos.c:657
bool overleft_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if a temporal number does not extend to the right of a number span.
Definition: temporal_posops_meos.c:331
bool after_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is after the second one.
Definition: temporal_posops_meos.c:213
bool right_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is to the right of a temporal box.
Definition: temporal_posops_meos.c:553
bool right_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is to the right of a temporal number.
Definition: temporal_posops_meos.c:416
bool overafter_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if a temporal value is not before a timestamptz span.
Definition: temporal_posops_meos.c:168
bool overafter_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is not before the second one.
Definition: temporal_posops_meos.c:227
bool before_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is before a temporal box.
Definition: temporal_posops_meos.c:586
bool before_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span is before a temporal value.
Definition: temporal_posops_meos.c:60
bool left_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is to the left of a temporal box.
Definition: temporal_posops_meos.c:520
bool overbefore_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if a temporal value is not after a timestamptz span.
Definition: temporal_posops_meos.c:138
bool overbefore_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is not after the second one.
Definition: temporal_posops_meos.c:735
bool left_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is to the left of a temporal number.
Definition: temporal_posops_meos.c:383
bool left_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if a temporal number is to the left of a number span.
Definition: temporal_posops_meos.c:314
bool right_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is to the right of the second one.
Definition: temporal_posops_meos.c:689
bool before_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is before a temporal number.
Definition: temporal_posops_meos.c:449
bool overleft_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box does not extend to the right of a temporal number.
Definition: temporal_posops_meos.c:400
bool overright_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if a temporal number does not extend to the left of a number span.
Definition: temporal_posops_meos.c:364
bool overafter_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is not before a temporal number.
Definition: temporal_posops_meos.c:500
bool overbefore_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is not after the second one.
Definition: temporal_posops_meos.c:199
bool overright_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number does not extend to the left of a temporal box.
Definition: temporal_posops_meos.c:570
bool overright_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box does not extend to the left of a temporal number.
Definition: temporal_posops_meos.c:433
bool right_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span is to the right of a temporal number.
Definition: temporal_posops_meos.c:278
bool left_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span is to the left of a temporal number.
Definition: temporal_posops_meos.c:245
bool after_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if a temporal value is after a timestamptz span.
Definition: temporal_posops_meos.c:153
bool after_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span is after a temporal value.
Definition: temporal_posops_meos.c:90
bool overbefore_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is not after a temporal box.
Definition: temporal_posops_meos.c:603
bool before_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is before the second one.
Definition: temporal_posops_meos.c:185
bool after_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number is after the second one.
Definition: temporal_posops_meos.c:750
bool overleft_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number does not extend to the right of a temporal box.
Definition: temporal_posops_meos.c:537
bool overleft_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span does not extend to the right of a temporal number.
Definition: temporal_posops_meos.c:262
bool overafter_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if a temporal number is not before a temporal box.
Definition: temporal_posops_meos.c:637
bool overright_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal number does not extend to the left of the second one.
Definition: temporal_posops_meos.c:705
bool after_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is after a temporal number.
Definition: temporal_posops_meos.c:483
bool overbefore_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is not after a temporal number.
Definition: temporal_posops_meos.c:466
bool right_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if a temporal number is to the right of a number span.
Definition: temporal_posops_meos.c:347
TBox * tnumber_split_n_tboxes(const Temporal *temp, int box_count, int *count)
Return an array of N temporal boxes obtained from the instants or segments of a temporal number,...
Definition: temporal_boxops.c:1525
Span * temporal_spans(const Temporal *temp, int *count)
Return an array of spans obtained from the instants or segments of a temporal value,...
Definition: temporal_boxops.c:725
Span * temporal_split_n_spans(const Temporal *temp, int span_count, int *count)
Return an array of N spans obtained from the instants or segments of a temporal value,...
Definition: temporal_boxops.c:956
TBox * tnumber_tboxes(const Temporal *temp, int *count)
Return an array of temporal boxes obtained from the instants or segments of a temporal number,...
Definition: temporal_boxops.c:1282
TBox * tnumber_split_each_n_tboxes(const Temporal *temp, int elem_count, int *count)
Return an array of temporal boxes obtained from the instants or segments of a temporal number,...
Definition: temporal_boxops.c:1695
Span * temporal_split_each_n_spans(const Temporal *temp, int elem_count, int *count)
Return an array of spans obtained from the instants or segments of a temporal value,...
Definition: temporal_boxops.c:1125
bool contained_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if the value span of a temporal number is contained in a number span.
Definition: temporal_boxops_meos.c:417
bool adjacent_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if the bounding box of a temporal number and a temporal box are adjacent.
Definition: temporal_boxops_meos.c:707
bool same_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if the bounding box of a temporal number and a temporal box are equal in the common dimen...
Definition: temporal_boxops_meos.c:622
bool same_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the bounding boxes of two temporal numbers are equal.
Definition: temporal_boxops_meos.c:637
bool contained_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box is contained in the bounding box of a temporal number.
Definition: temporal_boxops_meos.c:434
bool contained_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if the bounding box of a temporal number is contained in a temporal box.
Definition: temporal_boxops_meos.c:451
bool overlaps_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if the value span of a temporal number and the number span overlap.
Definition: temporal_boxops_meos.c:503
bool contains_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the time span of the first temporal value contains the one of the second one.
Definition: temporal_boxops_meos.c:101
bool contained_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span is contained the time span of a temporal value.
Definition: temporal_boxops_meos.c:119
bool contained_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span is contained in the value span of a temporal number.
Definition: temporal_boxops_meos.c:400
bool same_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box and the bounding box of a temporal number are equal in the common dimen...
Definition: temporal_boxops_meos.c:605
bool contains_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if the bounding box of a temporal number contains a temporal box.
Definition: temporal_boxops_meos.c:365
bool contains_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span contains the time span of a temporal value.
Definition: temporal_boxops_meos.c:70
bool adjacent_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if the time span of a temporal value and a timestamptz span are adjacent.
Definition: temporal_boxops_meos.c:280
bool overlaps_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span and the value span of a temporal number overlap.
Definition: temporal_boxops_meos.c:486
bool overlaps_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span and the time span of a temporal value overlap.
Definition: temporal_boxops_meos.c:168
bool adjacent_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if the value span of a temporal number and a number span are adjacent.
Definition: temporal_boxops_meos.c:673
bool overlaps_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the bounding boxes of two temporal numbers overlap.
Definition: temporal_boxops_meos.c:552
bool same_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span and the value span of a temporal number are equal.
Definition: temporal_boxops_meos.c:571
bool contains_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box contains the bounding box of a temporal number.
Definition: temporal_boxops_meos.c:348
bool adjacent_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span and the value span of a temporal number are adjacent.
Definition: temporal_boxops_meos.c:656
bool contains_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if the time span of a temporal value contains a timestamptz span.
Definition: temporal_boxops_meos.c:86
bool contained_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the bounding box of the first temporal number is contained in the one of the second te...
Definition: temporal_boxops_meos.c:467
bool same_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if the value span of a temporal number and a number span are equal.
Definition: temporal_boxops_meos.c:588
bool overlaps_tnumber_tbox(const Temporal *temp, const TBox *box)
Return true if the bounding box of a temporal number and a temporal box overlap.
Definition: temporal_boxops_meos.c:537
bool same_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span and the time span of a temporal value are equal.
Definition: temporal_boxops_meos.c:216
bool adjacent_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box and the bounding box of a temporal number are adjacent.
Definition: temporal_boxops_meos.c:690
bool same_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the time spans of two temporal values are equal.
Definition: temporal_boxops_meos.c:246
bool contains_tnumber_numspan(const Temporal *temp, const Span *s)
Return true if the value span of a temporal number contains a number span.
Definition: temporal_boxops_meos.c:331
bool contained_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the time span of the first temporal value is contained in the one of the second tempor...
Definition: temporal_boxops_meos.c:150
bool contained_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if the time span of a temporal value is contained in a timestamptz span.
Definition: temporal_boxops_meos.c:135
bool contains_numspan_tnumber(const Span *s, const Temporal *temp)
Return true if a number span contains the value span of a temporal number.
Definition: temporal_boxops_meos.c:314
bool overlaps_tbox_tnumber(const TBox *box, const Temporal *temp)
Return true if a temporal box and the bounding box of a temporal number overlap.
Definition: temporal_boxops_meos.c:520
bool overlaps_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the time spans of two temporal values overlap.
Definition: temporal_boxops_meos.c:198
bool same_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if the time span of a temporal value and a timestamptz span are equal.
Definition: temporal_boxops_meos.c:232
bool adjacent_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the bounding boxes of two temporal numbers are adjacent.
Definition: temporal_boxops_meos.c:723
bool adjacent_tstzspan_temporal(const Span *s, const Temporal *temp)
Return true if a timestamptz span and the time span of a temporal value are adjacent.
Definition: temporal_boxops_meos.c:264
bool adjacent_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the time spans of two temporal values are adjacent.
Definition: temporal_boxops_meos.c:294
bool overlaps_temporal_tstzspan(const Temporal *temp, const Span *s)
Return true if the time span of a temporal value and a timestamptz span overlap.
Definition: temporal_boxops_meos.c:184
bool contains_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return true if the bounding box of the first temporal number contains the one of the second temporal ...
Definition: temporal_boxops_meos.c:381
Temporal * tor_bool_tbool(bool b, const Temporal *temp)
Return the boolean or of a boolean and a temporal boolean.
Definition: tbool_ops_meos.c:101
Temporal * tor_tbool_tbool(const Temporal *temp1, const Temporal *temp2)
Return the boolean or of the temporal booleans.
Definition: tbool_ops_meos.c:130
Temporal * tand_tbool_tbool(const Temporal *temp1, const Temporal *temp2)
Return the boolean and of the temporal booleans.
Definition: tbool_ops_meos.c:82
Temporal * tand_tbool_bool(const Temporal *temp, bool b)
Return the boolean and of a temporal boolean and a boolean.
Definition: tbool_ops_meos.c:68
Temporal * tor_tbool_bool(const Temporal *temp, bool b)
Return the boolean or of a temporal boolean and a boolean.
Definition: tbool_ops_meos.c:116
Temporal * tand_bool_tbool(bool b, const Temporal *temp)
Return the boolean and of a boolean and a temporal boolean.
Definition: tbool_ops_meos.c:53
SpanSet * tbool_when_true(const Temporal *temp)
Return the time when the temporal boolean has value true.
Definition: tbool_ops.c:153
Temporal * tnot_tbool(const Temporal *temp)
Return the boolean not of a temporal boolean.
Definition: tbool_ops.c:86
int always_gt_int_tint(int i, const Temporal *temp)
Return true if an integer is always less than a temporal integer.
Definition: temporal_compops_meos.c:1027
int always_eq_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always equal to an integer.
Definition: temporal_compops_meos.c:256
int always_le_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always less than or equal to an integer.
Definition: temporal_compops_meos.c:885
int ever_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are ever different.
Definition: temporal_compops.c:497
int ever_eq_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever equal to a text.
Definition: temporal_compops_meos.c:162
int ever_eq_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever equal to a temporal float.
Definition: temporal_compops_meos.c:85
int always_eq_tbool_bool(const Temporal *temp, bool b)
Return true if a temporal boolean is always equal to a boolean.
Definition: temporal_compops_meos.c:241
int ever_ne_bool_tbool(bool b, const Temporal *temp)
Return true if a boolean is ever different from a temporal boolean.
Definition: temporal_compops_meos.c:303
int ever_ge_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever less than or equal to a text.
Definition: temporal_compops_meos.c:1152
int ever_ne_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever different from a temporal text.
Definition: temporal_compops_meos.c:348
int always_ne_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always different from a temporal text.
Definition: temporal_compops_meos.c:472
int ever_ne_tbool_bool(const Temporal *temp, bool b)
Return true if a temporal boolean is ever different from a boolean.
Definition: temporal_compops_meos.c:365
int always_le_float_tfloat(double d, const Temporal *temp)
Return true if a float is always less than or equal to a float.
Definition: temporal_compops_meos.c:852
int ever_ge_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever less than or equal to an integer.
Definition: temporal_compops_meos.c:1170
int always_eq_int_tint(int i, const Temporal *temp)
Return true if an integer is always equal to a temporal integer.
Definition: temporal_compops_meos.c:194
int ever_ge_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever less than or equal to a float.
Definition: temporal_compops_meos.c:1185
int ever_le_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever less than or equal to a float.
Definition: temporal_compops_meos.c:755
int always_le_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always less than or equal to a text.
Definition: temporal_compops_meos.c:916
int ever_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is ever greater than or equal to the second one.
Definition: temporal_compops.c:561
int always_eq_float_tfloat(double d, const Temporal *temp)
Return true if a float is always equal to a temporal float.
Definition: temporal_compops_meos.c:209
int always_ge_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always less than or equal to an integer.
Definition: temporal_compops_meos.c:1267
int always_ne_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always different from a text.
Definition: temporal_compops_meos.c:534
int always_lt_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always less than a temporal text.
Definition: temporal_compops_meos.c:675
int always_eq_bool_tbool(bool b, const Temporal *temp)
Return true if a boolean is always equal to a temporal boolean.
Definition: temporal_compops_meos.c:179
int ever_eq_bool_tbool(bool b, const Temporal *temp)
Return true if a boolean is ever equal to a temporal boolean.
Definition: temporal_compops_meos.c:55
int ever_gt_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever less than a float.
Definition: temporal_compops_meos.c:995
int always_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are always equal.
Definition: temporal_compops.c:578
int always_ne_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always different from a float.
Definition: temporal_compops_meos.c:519
int ever_gt_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever less than a temporal float.
Definition: temporal_compops_meos.c:948
int ever_le_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever less than or equal to a text.
Definition: temporal_compops_meos.c:770
int always_lt_int_tint(int i, const Temporal *temp)
Return true if an integer is always less than a temporal integer.
Definition: temporal_compops_meos.c:645
int ever_gt_int_tint(int i, const Temporal *temp)
Return true if an integer is ever less than a temporal integer.
Definition: temporal_compops_meos.c:933
int always_ne_bool_tbool(bool b, const Temporal *temp)
Return true if a boolean is always different from a temporal boolean.
Definition: temporal_compops_meos.c:427
int always_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is always greater than the second one.
Definition: temporal_compops.c:641
int ever_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal boolean is ever less than or equal to the second one.
Definition: temporal_compops.c:529
int ever_ne_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever different from a temporal float.
Definition: temporal_compops_meos.c:333
int always_ge_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always less than or equal to a text.
Definition: temporal_compops_meos.c:1298
int ever_lt_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever less than a text.
Definition: temporal_compops_meos.c:628
int always_le_int_tint(int i, const Temporal *temp)
Return true if an integer is always less than or equal to an integer.
Definition: temporal_compops_meos.c:836
int always_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is always greater than or equal to the second one.
Definition: temporal_compops.c:657
int ever_gt_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever less than a text.
Definition: temporal_compops_meos.c:1010
int ever_ne_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever different from a float.
Definition: temporal_compops_meos.c:395
int ever_le_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever less than or equal to an integer.
Definition: temporal_compops_meos.c:788
int always_le_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always less than or equal to a float.
Definition: temporal_compops_meos.c:901
int ever_ge_int_tint(int i, const Temporal *temp)
Return true if an integer is ever less than or equal to an integer.
Definition: temporal_compops_meos.c:1122
int ever_le_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever less than or equal to a text.
Definition: temporal_compops_meos.c:818
int ever_eq_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever equal to an integer.
Definition: temporal_compops_meos.c:132
int always_ge_int_tint(int i, const Temporal *temp)
Return true if an integer is always less than or equal to an integer.
Definition: temporal_compops_meos.c:1218
int always_ge_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always less than or equal to a text.
Definition: temporal_compops_meos.c:1249
int always_ne_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always different from an integer.
Definition: temporal_compops_meos.c:504
int always_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is always less than or equal to the second one.
Definition: temporal_compops.c:625
int always_eq_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always equal to a float.
Definition: temporal_compops_meos.c:271
int ever_ne_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever different from an integer.
Definition: temporal_compops_meos.c:380
int ever_eq_int_tint(int i, const Temporal *temp)
Return true if an integer is ever equal to a temporal integer.
Definition: temporal_compops_meos.c:70
int always_gt_float_tfloat(double d, const Temporal *temp)
Return true if a float is always less than a temporal float.
Definition: temporal_compops_meos.c:1042
int always_lt_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always less than a float.
Definition: temporal_compops_meos.c:707
int always_lt_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always less than a text.
Definition: temporal_compops_meos.c:722
int always_ne_int_tint(int i, const Temporal *temp)
Return true if an integer is always different from a temporal integer.
Definition: temporal_compops_meos.c:442
int ever_lt_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever less than a temporal text.
Definition: temporal_compops_meos.c:581
int ever_lt_int_tint(int i, const Temporal *temp)
Return true if an integer is ever less than a temporal integer.
Definition: temporal_compops_meos.c:551
int always_ge_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always less than or equal to a float.
Definition: temporal_compops_meos.c:1283
int ever_lt_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever less than an integer.
Definition: temporal_compops_meos.c:598
int always_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are always different.
Definition: temporal_compops.c:593
int ever_ge_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever less than or equal to a text.
Definition: temporal_compops_meos.c:1200
int ever_le_int_tint(int i, const Temporal *temp)
Return true if an integer is ever less than or equal to an integer.
Definition: temporal_compops_meos.c:740
int ever_gt_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever less than a temporal text.
Definition: temporal_compops_meos.c:963
int ever_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal boolean is ever greater than the second one.
Definition: temporal_compops.c:545
int always_ne_float_tfloat(double d, const Temporal *temp)
Return true if a float is always different from a temporal float.
Definition: temporal_compops_meos.c:457
int always_gt_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is always less than a float.
Definition: temporal_compops_meos.c:1089
int always_lt_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always less than an integer.
Definition: temporal_compops_meos.c:692
int always_ne_tbool_bool(const Temporal *temp, bool b)
Return true if a temporal boolean is always different from a boolean.
Definition: temporal_compops_meos.c:489
int always_le_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always less than or equal to a text.
Definition: temporal_compops_meos.c:867
int ever_eq_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever equal to a float.
Definition: temporal_compops_meos.c:147
int always_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is always less than the second one.
Definition: temporal_compops.c:609
int ever_ge_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever less than or equal to a float.
Definition: temporal_compops_meos.c:1137
int ever_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal boolean is ever less than the second one.
Definition: temporal_compops.c:513
int always_eq_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always equal to a temporal text.
Definition: temporal_compops_meos.c:224
int always_ge_float_tfloat(double d, const Temporal *temp)
Return true if a float is always less than or equal to a float.
Definition: temporal_compops_meos.c:1234
int always_eq_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always equal to a text.
Definition: temporal_compops_meos.c:286
int ever_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are ever equal.
Definition: temporal_compops.c:482
int always_gt_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is always less than a text.
Definition: temporal_compops_meos.c:1104
int always_lt_float_tfloat(double d, const Temporal *temp)
Return true if a float is always less than a temporal float.
Definition: temporal_compops_meos.c:660
int ever_le_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever less than or equal to a float.
Definition: temporal_compops_meos.c:803
int ever_lt_float_tfloat(double d, const Temporal *temp)
Return true if a float is ever less than a temporal float.
Definition: temporal_compops_meos.c:566
int ever_lt_tfloat_float(const Temporal *temp, double d)
Return true if a temporal float is ever less than a float.
Definition: temporal_compops_meos.c:613
int ever_eq_tbool_bool(const Temporal *temp, bool b)
Return true if a temporal boolean is ever equal to a boolean.
Definition: temporal_compops_meos.c:117
int always_gt_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is always less than a temporal text.
Definition: temporal_compops_meos.c:1057
int ever_ne_int_tint(int i, const Temporal *temp)
Return true if an integer is ever different from a temporal integer.
Definition: temporal_compops_meos.c:318
int ever_ne_ttext_text(const Temporal *temp, const text *txt)
Return true if a temporal text is ever different from a text.
Definition: temporal_compops_meos.c:410
int ever_eq_text_ttext(const text *txt, const Temporal *temp)
Return true if a text is ever equal to a temporal text.
Definition: temporal_compops_meos.c:100
int always_gt_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is always less than an integer.
Definition: temporal_compops_meos.c:1074
int ever_gt_tint_int(const Temporal *temp, int i)
Return true if a temporal integer is ever less than an integer.
Definition: temporal_compops_meos.c:980
Temporal * teq_tbool_bool(const Temporal *temp, bool b)
Return the temporal equality of a temporal boolean and a boolean.
Definition: temporal_compops_meos.c:1379
Temporal * tgt_float_tfloat(double d, const Temporal *temp)
Return the temporal greater than of a float and a temporal float.
Definition: temporal_compops_meos.c:1816
Temporal * tne_ttext_text(const Temporal *temp, const text *txt)
Return the temporal inequality of a temporal text and a text.
Definition: temporal_compops_meos.c:1550
Temporal * tge_text_ttext(const text *txt, const Temporal *temp)
Return the temporal greater than or equal to of a text and a temporal text.
Definition: temporal_compops_meos.c:1947
Temporal * tle_text_ttext(const text *txt, const Temporal *temp)
Return the temporal less or equal to than of a text and a temporal text.
Definition: temporal_compops_meos.c:1715
Temporal * tge_float_tfloat(double d, const Temporal *temp)
Return the temporal greater than or equal to of a float and a temporal float.
Definition: temporal_compops_meos.c:1931
Temporal * teq_bool_tbool(bool b, const Temporal *temp)
Return the temporal equality of a boolean and a temporal boolean.
Definition: temporal_compops_meos.c:1317
Temporal * tgt_tfloat_float(const Temporal *temp, double d)
Return the temporal greater than of a temporal float and a float.
Definition: temporal_compops_meos.c:1863
Temporal * tge_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal greater than or equal to of two temporal values.
Definition: temporal_compops_meos.c:2013
Temporal * teq_tint_int(const Temporal *temp, int i)
Return the temporal equality of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1394
Temporal * tge_ttext_text(const Temporal *temp, const text *txt)
Return the temporal greater than or equal to of a temporal text and a text.
Definition: temporal_compops_meos.c:1997
Temporal * teq_ttext_text(const Temporal *temp, const text *txt)
Return the temporal equality of a temporal text and a text.
Definition: temporal_compops_meos.c:1424
Temporal * tgt_ttext_text(const Temporal *temp, const text *txt)
Return the temporal greater than of a temporal text and a text.
Definition: temporal_compops_meos.c:1878
Temporal * tgt_text_ttext(const text *txt, const Temporal *temp)
Return the temporal greater than of a text and a temporal text.
Definition: temporal_compops_meos.c:1831
Temporal * teq_int_tint(int i, const Temporal *temp)
Return the temporal equality of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1332
Temporal * tne_text_ttext(const text *txt, const Temporal *temp)
Return the temporal inequality of a text and a temporal text.
Definition: temporal_compops_meos.c:1488
Temporal * tlt_float_tfloat(double d, const Temporal *temp)
Return the temporal less than of a float and a temporal float.
Definition: temporal_compops_meos.c:1584
Temporal * teq_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal equality of two temporal values.
Definition: temporal_compops.c:765
Temporal * teq_float_tfloat(double d, const Temporal *temp)
Return the temporal equality of a float and a temporal float.
Definition: temporal_compops_meos.c:1347
Temporal * tle_tint_int(const Temporal *temp, int i)
Return the temporal less than or equal to of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1733
Temporal * teq_text_ttext(const text *txt, const Temporal *temp)
Return the temporal equality of a text and a temporal text.
Definition: temporal_compops_meos.c:1362
Temporal * tle_float_tfloat(double d, const Temporal *temp)
Return the temporal less than or equal to of a float and a temporal float.
Definition: temporal_compops_meos.c:1699
Temporal * tlt_int_tint(int i, const Temporal *temp)
Return the temporal less than of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1569
Temporal * tgt_int_tint(int i, const Temporal *temp)
Return the temporal greater than of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1801
Temporal * tlt_tint_int(const Temporal *temp, int i)
Return the temporal less than of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1616
Temporal * tlt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal less than of two temporal values.
Definition: temporal_compops_meos.c:1662
Temporal * tne_tfloat_float(const Temporal *temp, double d)
Return the temporal inequality of a temporal float and a float.
Definition: temporal_compops_meos.c:1535
Temporal * tgt_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal greater than of two temporal values.
Definition: temporal_compops_meos.c:1894
Temporal * tle_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal less than or equal to of two temporal values.
Definition: temporal_compops_meos.c:1781
Temporal * tne_tbool_bool(const Temporal *temp, bool b)
Return the temporal inequality of a temporal boolean and a boolean.
Definition: temporal_compops_meos.c:1505
Temporal * tne_int_tint(int i, const Temporal *temp)
Return the temporal inequality of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1458
Temporal * tle_ttext_text(const Temporal *temp, const text *txt)
Return the temporal less than or equal to of a temporal text and a text.
Definition: temporal_compops_meos.c:1765
Temporal * tgt_tint_int(const Temporal *temp, int i)
Return the temporal greater than of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1848
Temporal * tne_temporal_temporal(const Temporal *temp1, const Temporal *temp2)
Return the temporal inequality of two temporal values.
Definition: temporal_compops.c:784
Temporal * teq_tfloat_float(const Temporal *temp, double d)
Return the temporal equality of a temporal float and a float.
Definition: temporal_compops_meos.c:1409
Temporal * tne_tint_int(const Temporal *temp, int i)
Return the temporal inequality of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1520
Temporal * tlt_tfloat_float(const Temporal *temp, double d)
Return the temporal less than of a temporal float and a float.
Definition: temporal_compops_meos.c:1631
Temporal * tge_int_tint(int i, const Temporal *temp)
Return the temporal greater than or equal to of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1915
Temporal * tle_tfloat_float(const Temporal *temp, double d)
Return the temporal less than or equal to of a temporal float and a float.
Definition: temporal_compops_meos.c:1749
Temporal * tlt_text_ttext(const text *txt, const Temporal *temp)
Return the temporal less than of a text and a temporal text.
Definition: temporal_compops_meos.c:1599
Temporal * tlt_ttext_text(const Temporal *temp, const text *txt)
Return the temporal less than of a temporal text and a text.
Definition: temporal_compops_meos.c:1646
Temporal * tge_tint_int(const Temporal *temp, int i)
Return the temporal greater than or equal to of a temporal integer and an integer.
Definition: temporal_compops_meos.c:1965
Temporal * tne_float_tfloat(double d, const Temporal *temp)
Return the temporal inequality of a float and a temporal float.
Definition: temporal_compops_meos.c:1473
Temporal * tle_int_tint(int i, const Temporal *temp)
Return the temporal less than or equal to of an integer and a temporal integer.
Definition: temporal_compops_meos.c:1683
Temporal * tne_bool_tbool(bool b, const Temporal *temp)
Return the temporal inequality of a boolean and a temporal boolean.
Definition: temporal_compops_meos.c:1443
Temporal * tge_tfloat_float(const Temporal *temp, double d)
Return the temporal greater than or equal to of a temporal float and a float.
Definition: temporal_compops_meos.c:1981
bool temporal_lt(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is less than the second one.
Definition: temporal.c:3203
bool temporal_ne(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are different.
Definition: temporal.c:3113
bool temporal_le(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is less than or equal to the second one.
Definition: temporal.c:3216
int temporal_cmp(const Temporal *temp1, const Temporal *temp2)
Return -1, 0, or 1 depending on whether the first temporal value is less than, equal,...
Definition: temporal.c:3129
bool temporal_gt(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is greater than the second one.
Definition: temporal.c:3241
bool temporal_ge(const Temporal *temp1, const Temporal *temp2)
Return true if the first temporal value is greater than or equal to the second one.
Definition: temporal.c:3229
bool temporal_eq(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are equal.
Definition: temporal.c:3017
TSequenceSet * tintseqset_from_base_tstzspanset(int i, const SpanSet *ss)
Return a temporal integer sequence set from an integer and a timestamptz span set.
Definition: tsequenceset_meos.c:84
TSequence * tintseq_from_base_tstzset(int i, const Set *s)
Return a temporal integer discrete sequence from an integer and a timestamptz set.
Definition: tsequence_meos.c:142
TInstant * tboolinst_make(bool b, TimestampTz t)
Return a temporal boolean instant from a boolean and a timestamptz.
Definition: tinstant_meos.c:119
TInstant * tfloatinst_make(double d, TimestampTz t)
Return a temporal float instant from a float and a timestamptz.
Definition: tinstant_meos.c:145
TSequenceSet * tsequenceset_make(const TSequence **sequences, int count, bool normalize)
Return a temporal sequence set from an array of temporal sequences.
Definition: tsequenceset.c:405
Temporal * tfloat_from_base_temp(double d, const Temporal *temp)
Return a temporal float from a float and the time frame of another temporal value.
Definition: temporal_meos.c:215
TSequence * tintseq_from_base_tstzspan(int i, const Span *s)
Return a temporal integer sequence from an integer and a timestamptz span.
Definition: tsequence_meos.c:204
TSequence * tsequence_make(const TInstant **instants, int count, bool lower_inc, bool upper_inc, interpType interp, bool normalize)
Return a temporal sequence from an array of temporal instants.
Definition: tsequence.c:1168
TSequence * tboolseq_from_base_tstzspan(bool b, const Span *s)
Return a temporal boolean sequence from a boolean and a timestamptz span.
Definition: tsequence_meos.c:189
TSequenceSet * tfloatseqset_from_base_tstzspanset(double d, const SpanSet *ss, interpType interp)
Return a temporal float sequence set from a float and a timestamptz span set.
Definition: tsequenceset_meos.c:101
TSequence * ttextseq_from_base_tstzset(const text *txt, const Set *s)
Return a temporal text discrete sequence from a text and a timestamptz set.
Definition: tsequence_meos.c:172
Temporal * tint_from_base_temp(int i, const Temporal *temp)
Return a temporal integer from an integer and the time frame of another temporal value.
Definition: temporal_meos.c:200
Temporal * tbool_from_base_temp(bool b, const Temporal *temp)
Return a temporal boolean from a boolean and the time frame of another temporal value.
Definition: temporal_meos.c:185
TSequence * tboolseq_from_base_tstzset(bool b, const Set *s)
Return a temporal boolean discrete sequence from a boolean and a timestamptz set.
Definition: tsequence_meos.c:127
TSequence * tfloatseq_from_base_tstzset(double d, const Set *s)
Return a temporal float discrete sequence from a float and a timestamptz set.
Definition: tsequence_meos.c:157
TSequenceSet * tsequenceset_make_gaps(const TInstant **instants, int count, interpType interp, const Interval *maxt, double maxdist)
Return a temporal sequence set from an array of temporal instants introducing a gap when two consecut...
Definition: tsequenceset.c:532
TSequence * tfloatseq_from_base_tstzspan(double d, const Span *s, interpType interp)
Return a temporal float sequence from a float and a timestamptz span.
Definition: tsequence_meos.c:220
Temporal * ttext_from_base_temp(const text *txt, const Temporal *temp)
Return a temporal text from a text and the time frame of another temporal value.
Definition: temporal_meos.c:230
TSequence * ttextseq_from_base_tstzspan(const text *txt, const Span *s)
Return a temporal text sequence from a text and a timestamptz span.
Definition: tsequence_meos.c:234
Temporal * temporal_copy(const Temporal *temp)
Return a copy of a temporal value.
Definition: temporal.c:868
TSequenceSet * tboolseqset_from_base_tstzspanset(bool b, const SpanSet *ss)
Return a temporal boolean sequence set from a boolean and a timestamptz span set.
Definition: tsequenceset_meos.c:68
TSequenceSet * ttextseqset_from_base_tstzspanset(const text *txt, const SpanSet *ss)
Return a temporal text sequence set from a text and a timestamptz span set.
Definition: tsequenceset_meos.c:118
TInstant * tintinst_make(int i, TimestampTz t)
Return a temporal integer instant from an integer and a timestamptz.
Definition: tinstant_meos.c:132
TInstant * ttextinst_make(const text *txt, TimestampTz t)
Return a temporal text instant from a text and a timestamptz.
Definition: tinstant_meos.c:158
Temporal * tfloat_to_tint(const Temporal *temp)
Convert a temporal float into a temporal integer.
Definition: temporal.c:1047
TBox * tnumber_to_tbox(const Temporal *temp)
Convert a temporal number into a temporal box.
Definition: temporal.c:1161
Temporal * tint_to_tfloat(const Temporal *temp)
Convert a temporal integer into a temporal float.
Definition: temporal.c:1026
Span * temporal_to_tstzspan(const Temporal *temp)
Return the bounding period of a temporal value.
Definition: temporal.c:1100
Temporal * tbool_to_tint(const Temporal *temp)
Convert a temporal Boolean into a temporal integer.
Definition: temporal.c:1005
Span * tnumber_to_span(const Temporal *temp)
Return the value span of a temporal number.
Definition: temporal.c:1144
int nad_tboxint_tboxint(const TBox *box1, const TBox *box2)
Return the nearest approach distance between the int temporal boxes.
Definition: tnumber_distance_meos.c:169
double nad_tfloat_float(const Temporal *temp, double d)
Return the nearest approach distance between a temporal number and a number.
Definition: tnumber_distance_meos.c:118
int nad_tint_tbox(const Temporal *temp, const TBox *box)
Return the nearest approach distance between a temporal integer and a temporal box.
Definition: tnumber_distance_meos.c:135
double nad_tfloat_tfloat(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach distance between two temporal floats.
Definition: tnumber_distance_meos.c:219
double nad_tfloat_tbox(const Temporal *temp, const TBox *box)
Return the nearest approach distance between a temporal float and a temporal box.
Definition: tnumber_distance_meos.c:153
Temporal * distance_tint_int(const Temporal *temp, int i)
Return the temporal distance between a temporal integer and an integer.
Definition: tnumber_distance_meos.c:64
int nad_tint_int(const Temporal *temp, int i)
Return the nearest approach distance between a temporal number and a number.
Definition: tnumber_distance_meos.c:101
double nad_tboxfloat_tboxfloat(const TBox *box1, const TBox *box2)
Return the nearest approach distance between the float temporal boxes.
Definition: tnumber_distance_meos.c:186
Temporal * distance_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return the temporal distance between two temporal numbers.
Definition: tnumber_distance.c:208
int nad_tint_tint(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach distance between two temporal integers.
Definition: tnumber_distance_meos.c:203
Temporal * distance_tfloat_float(const Temporal *temp, double d)
Return the temporal distance between a temporal float and a float.
Definition: tnumber_distance_meos.c:80
Temporal * tfloat_from_mfjson(const char *str)
Return a temporal float from its MF-JSON representation.
Definition: type_in_meos.c:242
Temporal * temporal_from_hexwkb(const char *hexwkb)
Return a temporal value from its ASCII hex-encoded Extended Well-Known Binary (EWKB) representation.
Definition: type_in.c:2335
Temporal * ttext_from_mfjson(const char *str)
Return a temporal text from its MF-JSON representation.
Definition: type_in_meos.c:255
char * tbool_out(const Temporal *temp)
Return the Well-Known Text (WKT) representation of a temporal boolean.
Definition: temporal_meos.c:126
Temporal * ttext_in(const char *str)
Return a temporal text from its Well-Known Text (WKT) representation.
Definition: temporal_meos.c:111
Temporal * tint_from_mfjson(const char *str)
Return a temporal integer from its MF-JSON representation.
Definition: type_in_meos.c:229
Temporal * tbool_in(const char *str)
Return a temporal boolean from its Well-Known Text (WKT) representation.
Definition: temporal_meos.c:71
char * tint_out(const Temporal *temp)
Return the Well-Known Text (WKT) representation of a temporal integer.
Definition: temporal_meos.c:139
uint8_t * temporal_as_wkb(const Temporal *temp, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a temporal value.
Definition: type_out.c:2504
Temporal * temporal_from_wkb(const uint8_t *wkb, size_t size)
Return a temporal value from its Well-Known Binary (WKB) representation.
Definition: type_in.c:2318
char * temporal_as_hexwkb(const Temporal *temp, uint8_t variant, size_t *size_out)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a temporal value.
Definition: type_out.c:2523
char * ttext_out(const Temporal *temp)
Return the Well-Known Text (WKT) representation of a temporal text.
Definition: temporal_meos.c:166
char * temporal_as_mfjson(const Temporal *temp, bool with_bbox, int flags, int precision, const char *srs)
Return the MF-JSON representation of a temporal value.
Definition: type_out.c:776
Temporal * tfloat_in(const char *str)
Return a temporal float from its Well-Known Text (WKT) representation.
Definition: temporal_meos.c:98
Temporal * tint_in(const char *str)
Return a temporal integer from its Well-Known Text (WKT) representation.
Definition: temporal_meos.c:85
char * tfloat_out(const Temporal *temp, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal float.
Definition: temporal_meos.c:153
Temporal * tbool_from_mfjson(const char *str)
Return a temporal boolean from its MF-JSON representation.
Definition: type_in_meos.c:216
Temporal * add_int_tint(int i, const Temporal *tnumber)
Return the temporal addition of an integer and a temporal integer.
Definition: tnumber_mathfuncs_meos.c:56
Temporal * sub_int_tint(int i, const Temporal *tnumber)
Return the temporal subtraction of an integer and a temporal integer.
Definition: tnumber_mathfuncs_meos.c:139
Temporal * div_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2)
Return the temporal division of the temporal numbers.
Definition: tnumber_mathfuncs_meos.c:372
Temporal * mult_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2)
Return the temporal multiplication of the temporal numbers.
Definition: tnumber_mathfuncs_meos.c:287
Temporal * mult_int_tint(int i, const Temporal *tnumber)
Return the temporal multiplication of an integer and a temporal integer.
Definition: tnumber_mathfuncs_meos.c:223
Temporal * sub_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2)
Return the temporal subtraction of the temporal numbers.
Definition: tnumber_mathfuncs_meos.c:202
Temporal * sub_tfloat_float(const Temporal *tnumber, double d)
Return the temporal subtraction of a temporal float and a float.
Definition: tnumber_mathfuncs_meos.c:187
Temporal * tfloat_ln(const Temporal *temp)
Return the natural logarithm of a double.
Definition: tnumber_mathfuncs.c:815
Temporal * div_tfloat_float(const Temporal *tnumber, double d)
Return the temporal division of a temporal float and a float.
Definition: tnumber_mathfuncs_meos.c:357
Temporal * div_int_tint(int i, const Temporal *tnumber)
Return the temporal division of an integer and a temporal integer.
Definition: tnumber_mathfuncs_meos.c:310
Temporal * tfloat_exp(const Temporal *temp)
Return the exponential of a double.
Definition: tnumber_mathfuncs.c:748
Temporal * tnumber_abs(const Temporal *temp)
Return the absolute value of a temporal number.
Definition: tnumber_mathfuncs.c:343
Temporal * add_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2)
Return the temporal addition of the temporal numbers.
Definition: tnumber_mathfuncs_meos.c:119
Temporal * mult_tint_int(const Temporal *tnumber, int i)
Return the temporal multiplication of a temporal integer and an integer.
Definition: tnumber_mathfuncs_meos.c:256
Temporal * add_float_tfloat(double d, const Temporal *tnumber)
Return the temporal addition of a float and a temporal float.
Definition: tnumber_mathfuncs_meos.c:72
Temporal * tnumber_angular_difference(const Temporal *temp)
Return the angular difference of a temporal number.
Definition: tnumber_mathfuncs.c:565
Temporal * tfloat_log10(const Temporal *temp)
Return the natural logarithm of a double.
Definition: tnumber_mathfuncs.c:888
Temporal * mult_float_tfloat(double d, const Temporal *tnumber)
Return the temporal multiplication of a float and a temporal float.
Definition: tnumber_mathfuncs_meos.c:239
Temporal * tfloat_derivative(const Temporal *temp)
Return the derivative of a temporal number.
Definition: tnumber_mathfuncs.c:660
Temporal * div_float_tfloat(double d, const Temporal *tnumber)
Return the temporal division of a float and a temporal float.
Definition: tnumber_mathfuncs_meos.c:326
Temporal * add_tint_int(const Temporal *tnumber, int i)
Return the temporal addition of a temporal integer and an integer.
Definition: tnumber_mathfuncs_meos.c:88
Temporal * tnumber_delta_value(const Temporal *temp)
Return the delta value of a temporal number.
Definition: tnumber_mathfuncs.c:449
Temporal * mult_tfloat_float(const Temporal *tnumber, double d)
Return the temporal multiplication of a temporal float and a float.
Definition: tnumber_mathfuncs_meos.c:272
Temporal * sub_tint_int(const Temporal *tnumber, int i)
Return the temporal subtraction of a temporal integer and an integer.
Definition: tnumber_mathfuncs_meos.c:171
Temporal * div_tint_int(const Temporal *tnumber, int i)
Return the temporal division of a temporal integer and an integer.
Definition: tnumber_mathfuncs_meos.c:341
Temporal * add_tfloat_float(const Temporal *tnumber, double d)
Return the temporal addition of a temporal float and a float.
Definition: tnumber_mathfuncs_meos.c:104
Temporal * sub_float_tfloat(double d, const Temporal *tnumber)
Return the temporal subtraction of a float and a temporal float.
Definition: tnumber_mathfuncs_meos.c:155
Temporal * temporal_delete_timestamptz(const Temporal *temp, TimestampTz t, bool connect)
Delete a timestamp from a temporal value.
Definition: temporal_modif.c:1585
Temporal * temporal_merge_array(const Temporal **temparr, int count)
Merge an array of temporal values.
Definition: temporal_modif.c:666
Temporal * temporal_append_tsequence(Temporal *temp, const TSequence *seq, bool expand)
Append a sequence to a temporal value.
Definition: temporal_modif.c:2286
Temporal * temporal_insert(const Temporal *temp1, const Temporal *temp2, bool connect)
Insert the second temporal value into the first one.
Definition: temporal_modif.c:1512
Temporal * temporal_merge(const Temporal *temp1, const Temporal *temp2)
Merge two temporal values.
Definition: temporal_modif.c:579
Temporal * temporal_update(const Temporal *temp1, const Temporal *temp2, bool connect)
Update the first temporal value with the second one.
Definition: temporal_modif.c:1558
Temporal * temporal_delete_tstzspan(const Temporal *temp, const Span *s, bool connect)
Delete a timestamptz span from a temporal value.
Definition: temporal_modif.c:1650
Temporal * temporal_append_tinstant(Temporal *temp, const TInstant *inst, interpType interp, double maxdist, const Interval *maxt, bool expand)
Append an instant to a temporal value.
Definition: temporal_modif.c:2244
Temporal * temporal_delete_tstzset(const Temporal *temp, const Set *s, bool connect)
Delete a timestamp set from a temporal value connecting the instants before and after the given times...
Definition: temporal_modif.c:1618
Temporal * temporal_delete_tstzspanset(const Temporal *temp, const SpanSet *ss, bool connect)
Delete a timestamptz span set from a temporal value.
Definition: temporal_modif.c:1682
Temporal * tint_at_value(const Temporal *temp, int i)
Return a temporal integer restricted to an integer.
Definition: temporal_restrict_meos.c:72
Temporal * tnumber_minus_span(const Temporal *temp, const Span *span)
Return a temporal value restricted to the complement of a span of base values.
Definition: temporal_restrict_meos.c:383
Temporal * temporal_minus_tstzspan(const Temporal *temp, const Span *s)
Return a temporal value restricted to the complement of a timestamptz span.
Definition: temporal_restrict_meos.c:511
Temporal * temporal_minus_values(const Temporal *temp, const Set *set)
Return a temporal value restricted to the complement of a set of values.
Definition: temporal_restrict_meos.c:198
Temporal * tfloat_at_value(const Temporal *temp, double d)
Return a temporal float restricted to a float.
Definition: temporal_restrict_meos.c:87
Temporal * temporal_at_tstzspan(const Temporal *temp, const Span *s)
Return a temporal value restricted to a timestamptz span.
Definition: temporal_restrict_meos.c:495
Temporal * temporal_minus_tstzset(const Temporal *temp, const Set *s)
Return a temporal value restricted to the complement of a timestamptz set.
Definition: temporal_restrict_meos.c:481
Temporal * tint_minus_value(const Temporal *temp, int i)
Return a temporal integer restricted to the complement of an integer.
Definition: temporal_restrict_meos.c:134
Temporal * tbool_minus_value(const Temporal *temp, bool b)
Return a temporal boolean restricted to the complement of a boolean.
Definition: temporal_restrict_meos.c:119
Temporal * tnumber_minus_spanset(const Temporal *temp, const SpanSet *ss)
Return a temporal value restricted to the complement of an array of spans of base values.
Definition: temporal_restrict_meos.c:418
Temporal * temporal_minus_tstzspanset(const Temporal *temp, const SpanSet *ss)
Return a temporal value restricted to the complement of a timestamptz span set.
Definition: temporal_restrict_meos.c:542
Temporal * temporal_at_max(const Temporal *temp)
Return a temporal value restricted to its maximum base value.
Definition: temporal_restrict_meos.c:334
Temporal * tbool_at_value(const Temporal *temp, bool b)
Return a temporal boolean restricted to a boolean.
Definition: temporal_restrict_meos.c:57
Temporal * ttext_minus_value(const Temporal *temp, text *txt)
Return a temporal text restricted to the complement of a text.
Definition: temporal_restrict_meos.c:164
Temporal * temporal_at_values(const Temporal *temp, const Set *set)
Return a temporal value restricted to a set of values.
Definition: temporal_restrict_meos.c:181
Temporal * temporal_minus_min(const Temporal *temp)
Return a temporal value restricted to the complement of its minimum base value.
Definition: temporal_restrict_meos.c:320
Temporal * temporal_at_timestamptz(const Temporal *temp, TimestampTz t)
Return a temporal value restricted to a timestamptz.
Definition: temporal_restrict_meos.c:436
Temporal * tnumber_at_tbox(const Temporal *temp, const TBox *box)
Return a temporal number restricted to a temporal box.
Definition: temporal_restrict.c:580
Temporal * temporal_minus_timestamptz(const Temporal *temp, TimestampTz t)
Return a temporal value restricted to the complement of a timestamptz.
Definition: temporal_restrict_meos.c:451
Temporal * tfloat_minus_value(const Temporal *temp, double d)
Return a temporal float restricted to the complement of a float.
Definition: temporal_restrict_meos.c:149
Temporal * temporal_minus_max(const Temporal *temp)
Return a temporal value restricted to the complement of its maximum base value.
Definition: temporal_restrict_meos.c:349
Temporal * temporal_at_tstzspanset(const Temporal *temp, const SpanSet *ss)
Return a temporal value restricted to a timestamptz span set.
Definition: temporal_restrict_meos.c:526
Temporal * tnumber_at_spanset(const Temporal *temp, const SpanSet *ss)
Return a temporal value restricted to an array of spans of base values.
Definition: temporal_restrict_meos.c:400
Temporal * tnumber_at_span(const Temporal *temp, const Span *span)
Return a temporal value restricted to a span of base values.
Definition: temporal_restrict_meos.c:366
Temporal * ttext_at_value(const Temporal *temp, text *txt)
Return a temporal text restricted to a text.
Definition: temporal_restrict_meos.c:102
Temporal * temporal_at_tstzset(const Temporal *temp, const Set *s)
Return a temporal value restricted to a timestamptz set.
Definition: temporal_restrict_meos.c:466
Temporal * tnumber_minus_tbox(const Temporal *temp, const TBox *box)
Return a temporal number restricted to the complement of a temporal box.
Definition: temporal_restrict.c:628
Temporal * temporal_at_min(const Temporal *temp)
Return a temporal value restricted to its minimum base value.
Definition: temporal_restrict_meos.c:305
Temporal * ttext_lower(const Temporal *temp)
Return a temporal text transformed to lowercase.
Definition: ttext_funcs_meos.c:100
Temporal * textcat_text_ttext(const text *txt, const Temporal *temp)
Return the concatenation of a text and a temporal text.
Definition: ttext_funcs_meos.c:53
Temporal * ttext_upper(const Temporal *temp)
Return a temporal text transformed to uppercase.
Definition: ttext_funcs_meos.c:114
Temporal * textcat_ttext_ttext(const Temporal *temp1, const Temporal *temp2)
Return the concatenation of two temporal text values.
Definition: ttext_funcs_meos.c:84
Temporal * ttext_initcap(const Temporal *temp)
Return a temporal text transformed to initcap.
Definition: ttext_funcs_meos.c:128
Temporal * textcat_ttext_text(const Temporal *temp, const text *txt)
Return the concatenation of a temporal text and a text.
Definition: ttext_funcs_meos.c:69
Temporal * temporal_shift_time(const Temporal *temp, const Interval *shift)
Return a temporal value shifted by an interval.
Definition: temporal.c:1747
Temporal * tfloat_floor(const Temporal *temp)
Return a temporal float rounded down to the nearest temporal integer.
Definition: temporal.c:1314
Temporal * tint_shift_scale_value(const Temporal *temp, int shift, int width)
Return a temporal integer whose value dimension is shifted and scaled by two values.
Definition: temporal_meos.c:311
Temporal * tint_scale_value(const Temporal *temp, int width)
Return a temporal integer whose value dimension is scaled by a value.
Definition: temporal_meos.c:279
Temporal * temporal_shift_scale_time(const Temporal *temp, const Interval *shift, const Interval *duration)
Return a temporal value shifted and/or scaled by two intervals.
Definition: temporal.c:1713
TSequence * temporal_to_tsequence(const Temporal *temp, interpType interp)
Return a temporal value transformed to a temporal sequence.
Definition: temporal.c:1555
TSequenceSet * temporal_to_tsequenceset(const Temporal *temp, interpType interp)
Return a temporal value transformed to a temporal sequence set.
Definition: temporal.c:1615
double float_degrees(double value, bool normalize)
Return a float converted from radians to degrees.
Definition: temporal.c:1359
Temporal * tfloat_shift_scale_value(const Temporal *temp, double shift, double width)
Return a temporal number whose value dimension is shifted and scaled by two values.
Definition: temporal_meos.c:329
Temporal * temporal_set_interp(const Temporal *temp, interpType interp)
Return a temporal value transformed to an interpolation.
Definition: temporal.c:1639
Temporal ** temparr_round(const Temporal **temp, int count, int maxdd)
Return an array of temporal floats with the precision of the coordinates set to a number of decimal p...
Definition: temporal.c:1239
Temporal * tint_shift_value(const Temporal *temp, int shift)
Return a temporal integer whose value dimension is shifted by a value @csqlfn Tnumber_shift_value()
Definition: temporal_meos.c:249
Temporal * tfloat_radians(const Temporal *temp)
Return a temporal float transformed from degrees to radians.
Definition: temporal.c:1421
Temporal * temporal_scale_time(const Temporal *temp, const Interval *duration)
Return a temporal value scaled by an interval.
Definition: temporal.c:1760
Temporal * temporal_round(const Temporal *temp, int maxdd)
Return a temporal value rounded to a given number of decimal places.
Definition: temporal.c:1215
Temporal * tfloat_degrees(const Temporal *temp, bool normalize)
Return a temporal float transformed from radians to degrees.
Definition: temporal.c:1399
Temporal * tfloat_shift_value(const Temporal *temp, double shift)
Return a temporal integer whose value dimension is shifted by a value @csqlfn Tnumber_shift_value()
Definition: temporal_meos.c:264
Temporal * tfloat_ceil(const Temporal *temp)
Return a temporal float rounded up to the nearest temporal integer.
Definition: temporal.c:1335
TInstant * temporal_to_tinstant(const Temporal *temp)
Return a temporal value transformed to a temporal instant.
Definition: temporal.c:1488
Temporal * tfloat_scale_value(const Temporal *temp, double width)
Return a temporal float whose value dimension is scaled by a value.
Definition: temporal_meos.c:294
set(CBUFFER_SRCS cbuffer.c tcbuffer.c tcbuffer_boxops.c tcbuffer_compops.c tcbuffer_distance.c tcbuffer_spatialfuncs.c tcbuffer_spatialrels.c tcbuffer_tempspatialrels.c) if(1) list(APPEND CBUFFER_SRCS cbufferset_meos.c) endif() add_library(cbuffer OBJECT $
Definition: CMakeLists.txt:1
void meos_finalize_projsrs(void)
Destroy all the malloc'ed PROJ objects stored in the PROJSRSCache.
Definition: tspatial_transform_meos.c:162
int meos_errno_restore(int err)
Set an error number.
Definition: error.c:86
bool meos_set_datestyle(const char *newval, void *extra)
Set the DateStyle.
Definition: meos.c:474
bool meos_set_intervalstyle(const char *newval, int extra)
Set the IntervalStyle.
Definition: meos.c:533
char * meos_get_datestyle(void)
Get the DateStyle.
Definition: meos.c:489
void meos_finalize_timezone(void)
Definition: pgtz.c:470
bool tbox_xmax(const TBox *box, double *result)
Return in the last argument the maximum X value of a temporal box as a double.
Definition: tbox.c:884
bool tbox_xmin(const TBox *box, double *result)
Return in the last argument the minimum X value of a temporal box as a double.
Definition: tbox.c:802
void meos_initialize_error_handler(error_handler_fn err_handler)
Definition: error.c:170
TimestampTz sub_timestamptz_interval(TimestampTz t, const Interval *interv)
void meos_initialize_timezone(const char *name)
Definition: pgtz.c:447
#define SKIPLIST_MAXLEVEL
Structure to represent skiplist elements.
Definition: meos.h:259
tempSubtype
Enumeration that defines the temporal subtypes used in MEOS.
Definition: meos.h:150
@ ANYTEMPSUBTYPE
Any temporal subtype.
Definition: meos.h:151
@ TSEQUENCE
Temporal sequence subtype.
Definition: meos.h:153
@ TSEQUENCESET
Temporal sequence set subtype.
Definition: meos.h:154
@ TINSTANT
Temporal instant subtype.
Definition: meos.h:152
char * meos_get_intervalstyle(void)
Get the IntervalStyle.
Definition: meos.c:546
int meos_errno_set(int err)
Set an error number.
Definition: error.c:68
errorCode
Definition: meos.h:297
@ MEOS_ERR_FILE_ERROR
Definition: meos.h:307
@ MEOS_ERR_WKB_OUTPUT
Definition: meos.h:319
@ MEOS_ERR_INVALID_ARG_VALUE
Definition: meos.h:311
@ MEOS_SUCCESS
Definition: meos.h:298
@ MEOS_ERR_GEOJSON_OUTPUT
Definition: meos.h:321
@ MEOS_ERR_MFJSON_OUTPUT
Definition: meos.h:315
@ MEOS_ERR_DIRECTORY_ERROR
Definition: meos.h:306
@ MEOS_ERR_TEXT_INPUT
Definition: meos.h:316
@ MEOS_ERR_AGGREGATION_ERROR
Definition: meos.h:305
@ MEOS_ERR_WKB_INPUT
Definition: meos.h:318
@ MEOS_ERR_INVALID_ARG_TYPE
Definition: meos.h:310
@ MEOS_ERR_DIVISION_BY_ZERO
Definition: meos.h:303
@ MEOS_ERR_TEXT_OUTPUT
Definition: meos.h:317
@ MEOS_ERR_INTERNAL_ERROR
Definition: meos.h:300
@ MEOS_ERR_FEATURE_NOT_SUPPORTED
Definition: meos.h:312
@ MEOS_ERR_VALUE_OUT_OF_RANGE
Definition: meos.h:302
@ MEOS_ERR_MEMORY_ALLOC_ERROR
Definition: meos.h:304
@ MEOS_ERR_INTERNAL_TYPE_ERROR
Definition: meos.h:301
@ MEOS_ERR_MFJSON_INPUT
Definition: meos.h:314
@ MEOS_ERR_GEOJSON_INPUT
Definition: meos.h:320
@ MEOS_ERR_INVALID_ARG
Definition: meos.h:309
void meos_finalize(void)
Definition: meos.c:577
void(* error_handler_fn)(int, int, const char *)
Definition: meos.h:339
interpType
Enumeration that defines the interpolation types used in MEOS.
Definition: meos.h:161
@ DISCRETE
Definition: meos.h:163
@ INTERP_NONE
Definition: meos.h:162
@ STEP
Definition: meos.h:164
@ LINEAR
Definition: meos.h:165
int meos_errno(void)
Read an error number.
Definition: error.c:58
int meos_errno_reset(void)
Clears an error number.
Definition: error.c:123
void meos_error(int errlevel, int errcode, const char *format,...)
Function handling error messages.
Definition: error.c:186
void meos_initialize(void)
Definition: meos.c:562
int64 Timestamp
Definition: postgres_ext_defs.in.h:21
int64 TimestampTz
Definition: postgres_ext_defs.in.h:22
unsigned int uint32
Definition: postgres_ext_defs.in.h:16
signed short int16
Definition: postgres_ext_defs.in.h:10
uintptr_t Datum
Definition: postgres_ext_defs.in.h:7
signed int int32
Definition: postgres_ext_defs.in.h:11
int32 DateADT
Definition: postgres_ext_defs.in.h:19
unsigned char uint8
Definition: postgres_ext_defs.in.h:14
unsigned long int uint64
Definition: postgres_ext_defs.in.h:17
long int int64
Definition: postgres_ext_defs.in.h:12
Definition: postgres_ext_defs.in.h:27
int i
Definition: meos.h:249
int j
Definition: meos.h:250
Struct for storing a similarity match.
Definition: meos.h:248
STBox box
Definition: tspatial_rtree.h:85
Rtree in memory index basic structure.
Definition: tspatial_rtree.h:81
double xmin
minimum x value
Definition: meos.h:136
double zmin
minimum z value
Definition: meos.h:138
double ymin
minimum y value
Definition: meos.h:137
int32_t srid
SRID.
Definition: meos.h:142
Span period
time span
Definition: meos.h:135
double xmax
maximum x value
Definition: meos.h:139
double zmax
maximum z value
Definition: meos.h:141
int16 flags
flags
Definition: meos.h:143
double ymax
maximum y value
Definition: meos.h:140
Structure to represent spatiotemporal boxes.
Definition: meos.h:134
int16 flags
Flags.
Definition: meos.h:84
uint8 basetype
Span basetype.
Definition: meos.h:83
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:81
int32 maxcount
Maximum number of elements.
Definition: meos.h:86
uint8 settype
Set type.
Definition: meos.h:82
int32 count
Number of elements.
Definition: meos.h:85
int16 bboxsize
Size of the bouding box.
Definition: meos.h:87
Structure to represent sets of values.
Definition: meos.h:80
int height
Definition: meos.h:264
void * value
Definition: meos.h:263
Definition: meos.h:262
SkipListElem * elems
Definition: meos.h:282
void * extra
Definition: meos.h:280
int capacity
Definition: meos.h:273
int freecount
Definition: meos.h:277
size_t extrasize
Definition: meos.h:281
int length
Definition: meos.h:275
int freecap
Definition: meos.h:278
int * freed
Definition: meos.h:276
int tail
Definition: meos.h:279
int next
Definition: meos.h:274
Structure to represent skiplists that keep the current state of an aggregation.
Definition: meos.h:272
int32 maxcount
Maximum number of elements.
Definition: meos.h:115
Span span
Bounding span.
Definition: meos.h:116
char padding
Not used.
Definition: meos.h:113
uint8 spansettype
Span set type.
Definition: meos.h:110
int32 count
Number of elements.
Definition: meos.h:114
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:109
uint8 spantype
Span type.
Definition: meos.h:111
uint8 basetype
Span basetype.
Definition: meos.h:112
Structure to represent span sets.
Definition: meos.h:108
uint8 spantype
span type
Definition: meos.h:95
uint8 basetype
span basetype
Definition: meos.h:96
Datum lower
lower bound value
Definition: meos.h:100
bool lower_inc
lower bound is inclusive (vs exclusive)
Definition: meos.h:97
Datum upper
upper bound value
Definition: meos.h:101
bool upper_inc
upper bound is inclusive (vs exclusive)
Definition: meos.h:98
Structure to represent spans (a.k.a.
Definition: meos.h:94
int16 flags
flags
Definition: meos.h:127
Span period
time span
Definition: meos.h:125
Span span
value span
Definition: meos.h:126
Structure to represent temporal boxes.
Definition: meos.h:124
int16 flags
Flags.
Definition: meos.h:189
TimestampTz t
Timestamp (8 bytes)
Definition: meos.h:190
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:186
uint8 subtype
Temporal subtype.
Definition: meos.h:188
uint8 temptype
Temporal type.
Definition: meos.h:187
Datum value
Base value for types passed by value, first 8 bytes of the base value for values passed by reference.
Definition: meos.h:191
Structure to represent temporal values of instant subtype.
Definition: meos.h:185
uint8 subtype
Temporal subtype.
Definition: meos.h:227
int16 flags
Flags.
Definition: meos.h:228
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:225
uint8 temptype
Temporal type.
Definition: meos.h:226
int32 totalcount
Total number of TInstant elements in all composing TSequence elements.
Definition: meos.h:230
Span period
Time span (24 bytes).
Definition: meos.h:235
int32 maxcount
Maximum number of TSequence elements.
Definition: meos.h:232
int16 bboxsize
Size of the bounding box.
Definition: meos.h:233
int32 count
Number of TSequence elements.
Definition: meos.h:229
int16 padding
Not used.
Definition: meos.h:234
Structure to represent temporal values of sequence set subtype.
Definition: meos.h:224
uint8 subtype
Temporal subtype.
Definition: meos.h:205
uint8 temptype
Temporal type.
Definition: meos.h:204
Span period
Time span (24 bytes).
Definition: meos.h:211
int32 count
Number of TInstant elements.
Definition: meos.h:207
int16 flags
Flags.
Definition: meos.h:206
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:203
int32 maxcount
Maximum number of TInstant elements.
Definition: meos.h:208
int16 bboxsize
Size of the bounding box.
Definition: meos.h:209
Structure to represent temporal values of sequence subtype.
Definition: meos.h:202
uint8 temptype
Temporal type.
Definition: meos.h:175
uint8 subtype
Temporal subtype.
Definition: meos.h:176
int32 vl_len_
Varlena header (do not touch directly!)
Definition: meos.h:174
int16 flags
Flags.
Definition: meos.h:177
Structure to represent the common structure of temporal values of any temporal subtype.
Definition: meos.h:173
Definition: pgtz.h:42
Definition: postgres_ext_defs.in.h:34
#define connect(s, name, namelen)
Definition: win32_port.h:463