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);
345extern void meos_finalize_ways(void);
346
347extern bool meos_set_datestyle(const char *newval, void *extra);
348extern bool meos_set_intervalstyle(const char *newval, int extra);
349extern char *meos_get_datestyle(void);
350extern char *meos_get_intervalstyle(void);
351
352extern void meos_initialize(void);
353extern void meos_finalize(void);
354
355/******************************************************************************
356 * Functions for base and time types
357 ******************************************************************************/
358
360extern Interval *add_interval_interval(const Interval *interv1, const Interval *interv2);
363extern bool bool_in(const char *str);
364extern char *bool_out(bool b);
365extern text *cstring2text(const char *str);
366extern Timestamp date_to_timestamp(DateADT dateVal);
368extern double float_exp(double d);
369extern double float_ln(double d);
370extern double float_log10(double d);
371extern double float_round(double d, int maxdd);
372extern Interval *interval_make(int32 years, int32 months, int32 weeks, int32 days, int32 hours, int32 mins, double secs);
377extern Interval *mul_interval_double(const Interval *interv, double factor);
378extern DateADT pg_date_in(const char *str);
379extern char *pg_date_out(DateADT d);
380extern int pg_interval_cmp(const Interval *interv1, const Interval *interv2);
381extern Interval *pg_interval_in(const char *str, int32 typmod);
382extern char *pg_interval_out(const Interval *interv);
383extern TimeADT pg_time_in(const char *str, int32 typmod);
384extern char *pg_time_out(TimeADT t);
385extern Timestamp pg_timestamp_in(const char *str, int32 typmod);
386extern char *pg_timestamp_out(Timestamp t);
387extern TimestampTz pg_timestamptz_in(const char *str, int32 typmod);
388extern char *pg_timestamptz_out(TimestampTz t);
389extern char *text2cstring(const text *txt);
390extern int text_cmp(const text *txt1, const text *txt2);
391extern text *text_copy(const text *txt);
392extern text *text_initcap(const text *txt);
393extern text *text_lower(const text *txt);
394extern char *text_out(const text *txt);
395extern text *text_upper(const text *txt);
396extern text *textcat_text_text(const text *txt1, const text *txt2);
397extern TimestampTz timestamptz_shift(TimestampTz t, const Interval *interv);
400
401/*============================================================================
402 * Functions for set and span types
403 ===========================================================================*/
404
405/*****************************************************************************
406 * Input/output functions for set and span types
407 *****************************************************************************/
408
409extern Set *bigintset_in(const char *str);
410extern char *bigintset_out(const Set *set);
411extern Span *bigintspan_in(const char *str);
412extern char *bigintspan_out(const Span *s);
413extern SpanSet *bigintspanset_in(const char *str);
414extern char *bigintspanset_out(const SpanSet *ss);
415extern Set *dateset_in(const char *str);
416extern char *dateset_out(const Set *s);
417extern Span *datespan_in(const char *str);
418extern char *datespan_out(const Span *s);
419extern SpanSet *datespanset_in(const char *str);
420extern char *datespanset_out(const SpanSet *ss);
421extern Set *floatset_in(const char *str);
422extern char *floatset_out(const Set *set, int maxdd);
423extern Span *floatspan_in(const char *str);
424extern char *floatspan_out(const Span *s, int maxdd);
425extern SpanSet *floatspanset_in(const char *str);
426extern char *floatspanset_out(const SpanSet *ss, int maxdd);
427extern Set *intset_in(const char *str);
428extern char *intset_out(const Set *set);
429extern Span *intspan_in(const char *str);
430extern char *intspan_out(const Span *s);
431extern SpanSet *intspanset_in(const char *str);
432extern char *intspanset_out(const SpanSet *ss);
433extern char *set_as_hexwkb(const Set *s, uint8_t variant, size_t *size_out);
434extern uint8_t *set_as_wkb(const Set *s, uint8_t variant, size_t *size_out);
435extern Set *set_from_hexwkb(const char *hexwkb);
436extern Set *set_from_wkb(const uint8_t *wkb, size_t size);
437extern char *span_as_hexwkb(const Span *s, uint8_t variant, size_t *size_out);
438extern uint8_t *span_as_wkb(const Span *s, uint8_t variant, size_t *size_out);
439extern Span *span_from_hexwkb(const char *hexwkb);
440extern Span *span_from_wkb(const uint8_t *wkb, size_t size);
441extern char *spanset_as_hexwkb(const SpanSet *ss, uint8_t variant, size_t *size_out);
442extern uint8_t *spanset_as_wkb(const SpanSet *ss, uint8_t variant, size_t *size_out);
443extern SpanSet *spanset_from_hexwkb(const char *hexwkb);
444extern SpanSet *spanset_from_wkb(const uint8_t *wkb, size_t size);
445extern Set *textset_in(const char *str);
446extern char *textset_out(const Set *set);
447extern Set *tstzset_in(const char *str);
448extern char *tstzset_out(const Set *set);
449extern Span *tstzspan_in(const char *str);
450extern char *tstzspan_out(const Span *s);
451extern SpanSet *tstzspanset_in(const char *str);
452extern char *tstzspanset_out(const SpanSet *ss);
453
454/*****************************************************************************
455 * Constructor functions for set and span types
456 *****************************************************************************/
457
458extern Set *bigintset_make(const int64 *values, int count);
459extern Span *bigintspan_make(int64 lower, int64 upper, bool lower_inc, bool upper_inc);
460extern Set *dateset_make(const DateADT *values, int count);
461extern Span *datespan_make(DateADT lower, DateADT upper, bool lower_inc, bool upper_inc);
462extern Set *floatset_make(const double *values, int count);
463extern Span *floatspan_make(double lower, double upper, bool lower_inc, bool upper_inc);
464extern Set *intset_make(const int *values, int count);
465extern Span *intspan_make(int lower, int upper, bool lower_inc, bool upper_inc);
466extern Set *set_copy(const Set *s);
467extern Span *span_copy(const Span *s);
468extern SpanSet *spanset_copy(const SpanSet *ss);
469extern SpanSet *spanset_make(Span *spans, int count);
470extern Set *textset_make(const text **values, int count);
471extern Set *tstzset_make(const TimestampTz *values, int count);
472extern Span *tstzspan_make(TimestampTz lower, TimestampTz upper, bool lower_inc, bool upper_inc);
473
474/*****************************************************************************
475 * Conversion functions for set and span types
476 *****************************************************************************/
477
478extern Set *bigint_to_set(int64 i);
479extern Span *bigint_to_span(int i);
480extern SpanSet *bigint_to_spanset(int i);
481extern Set *date_to_set(DateADT d);
482extern Span *date_to_span(DateADT d);
484extern Set *dateset_to_tstzset(const Set *s);
485extern Span *datespan_to_tstzspan(const Span *s);
487extern Set *float_to_set(double d);
488extern Span *float_to_span(double d);
489extern SpanSet *float_to_spanset(double d);
490extern Set *floatset_to_intset(const Set *s);
491extern Span *floatspan_to_intspan(const Span *s);
493extern Set *int_to_set(int i);
494extern Span *int_to_span(int i);
495extern SpanSet *int_to_spanset(int i);
496extern Set *intset_to_floatset(const Set *s);
497extern Span *intspan_to_floatspan(const Span *s);
499extern Span *set_to_span(const Set *s);
500extern SpanSet *set_to_spanset(const Set *s);
501extern SpanSet *span_to_spanset(const Span *s);
502extern Set *text_to_set(const text *txt);
506extern Set *tstzset_to_dateset(const Set *s);
507extern Span *tstzspan_to_datespan(const Span *s);
509
510/*****************************************************************************
511 * Accessor functions for set and span types
512 *****************************************************************************/
513
514extern int64 bigintset_end_value(const Set *s);
515extern int64 bigintset_start_value(const Set *s);
516extern bool bigintset_value_n(const Set *s, int n, int64 *result);
517extern int64 *bigintset_values(const Set *s);
518extern int64 bigintspan_lower(const Span *s);
519extern int64 bigintspan_upper(const Span *s);
520extern int64 bigintspan_width(const Span *s);
521extern int64 bigintspanset_lower(const SpanSet *ss);
522extern int64 bigintspanset_upper(const SpanSet *ss);
523extern int64 bigintspanset_width(const SpanSet *ss, bool boundspan);
524extern DateADT dateset_end_value(const Set *s);
525extern DateADT dateset_start_value(const Set *s);
526extern bool dateset_value_n(const Set *s, int n, DateADT *result);
527extern DateADT *dateset_values(const Set *s);
528extern Interval *datespan_duration(const Span *s);
529extern DateADT datespan_lower(const Span *s);
530extern DateADT datespan_upper(const Span *s);
531extern bool datespanset_date_n(const SpanSet *ss, int n, DateADT *result);
532extern Set *datespanset_dates(const SpanSet *ss);
533extern Interval *datespanset_duration(const SpanSet *ss, bool boundspan);
534extern DateADT datespanset_end_date(const SpanSet *ss);
535extern int datespanset_num_dates(const SpanSet *ss);
536extern DateADT datespanset_start_date(const SpanSet *ss);
537extern double floatset_end_value(const Set *s);
538extern double floatset_start_value(const Set *s);
539extern bool floatset_value_n(const Set *s, int n, double *result);
540extern double *floatset_values(const Set *s);
541extern double floatspan_lower(const Span *s);
542extern double floatspan_upper(const Span *s);
543extern double floatspan_width(const Span *s);
544extern double floatspanset_lower(const SpanSet *ss);
545extern double floatspanset_upper(const SpanSet *ss);
546extern double floatspanset_width(const SpanSet *ss, bool boundspan);
547extern int intset_end_value(const Set *s);
548extern int intset_start_value(const Set *s);
549extern bool intset_value_n(const Set *s, int n, int *result);
550extern int *intset_values(const Set *s);
551extern int intspan_lower(const Span *s);
552extern int intspan_upper(const Span *s);
553extern int intspan_width(const Span *s);
554extern int intspanset_lower(const SpanSet *ss);
555extern int intspanset_upper(const SpanSet *ss);
556extern int intspanset_width(const SpanSet *ss, bool boundspan);
557extern uint32 set_hash(const Set *s);
558extern uint64 set_hash_extended(const Set *s, uint64 seed);
559extern int set_num_values(const Set *s);
560extern uint32 span_hash(const Span *s);
561extern uint64 span_hash_extended(const Span *s, uint64 seed);
562extern bool span_lower_inc(const Span *s);
563extern bool span_upper_inc(const Span *s);
564extern Span *spanset_end_span(const SpanSet *ss);
565extern uint32 spanset_hash(const SpanSet *ss);
566extern uint64 spanset_hash_extended(const SpanSet *ss, uint64 seed);
567extern bool spanset_lower_inc(const SpanSet *ss);
568extern int spanset_num_spans(const SpanSet *ss);
569extern Span *spanset_span(const SpanSet *ss);
570extern Span *spanset_span_n(const SpanSet *ss, int i);
571extern Span **spanset_spanarr(const SpanSet *ss);
572extern Span *spanset_start_span(const SpanSet *ss);
573extern bool spanset_upper_inc(const SpanSet *ss);
574extern text *textset_end_value(const Set *s);
575extern text *textset_start_value(const Set *s);
576extern bool textset_value_n(const Set *s, int n, text **result);
577extern text **textset_values(const Set *s);
578extern TimestampTz tstzset_end_value(const Set *s);
579extern TimestampTz tstzset_start_value(const Set *s);
580extern bool tstzset_value_n(const Set *s, int n, TimestampTz *result);
581extern TimestampTz *tstzset_values(const Set *s);
582extern Interval *tstzspan_duration(const Span *s);
583extern TimestampTz tstzspan_lower(const Span *s);
584extern TimestampTz tstzspan_upper(const Span *s);
585extern Interval *tstzspanset_duration(const SpanSet *ss, bool boundspan);
587extern TimestampTz tstzspanset_lower(const SpanSet *ss);
588extern int tstzspanset_num_timestamps(const SpanSet *ss);
590extern Set *tstzspanset_timestamps(const SpanSet *ss);
591extern bool tstzspanset_timestamptz_n(const SpanSet *ss, int n, TimestampTz *result);
592extern TimestampTz tstzspanset_upper(const SpanSet *ss);
593
594/*****************************************************************************
595 * Transformation functions for set and span types
596 *****************************************************************************/
597
598extern Set *bigintset_shift_scale(const Set *s, int64 shift, int64 width, bool hasshift, bool haswidth);
599extern Span *bigintspan_shift_scale(const Span *s, int64 shift, int64 width, bool hasshift, bool haswidth);
600extern SpanSet *bigintspanset_shift_scale(const SpanSet *ss, int64 shift, int64 width, bool hasshift, bool haswidth);
601extern Set *dateset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth);
602extern Span *datespan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth);
603extern SpanSet *datespanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth);
604extern Set *floatset_ceil(const Set *s);
605extern Set *floatset_degrees(const Set *s, bool normalize);
606extern Set *floatset_floor(const Set *s);
607extern Set *floatset_radians(const Set *s);
608extern Set *floatset_shift_scale(const Set *s, double shift, double width, bool hasshift, bool haswidth);
609extern Span *floatspan_ceil(const Span *s);
610extern Span *floatspan_degrees(const Span *s, bool normalize);
611extern Span *floatspan_floor(const Span *s);
612extern Span *floatspan_radians(const Span *s);
613extern Span *floatspan_round(const Span *s, int maxdd);
614extern Span *floatspan_shift_scale(const Span *s, double shift, double width, bool hasshift, bool haswidth);
615extern SpanSet *floatspanset_ceil(const SpanSet *ss);
616extern SpanSet *floatspanset_floor(const SpanSet *ss);
617extern SpanSet *floatspanset_degrees(const SpanSet *ss, bool normalize);
618extern SpanSet *floatspanset_radians(const SpanSet *ss);
619extern SpanSet *floatspanset_round(const SpanSet *ss, int maxdd);
620extern SpanSet *floatspanset_shift_scale(const SpanSet *ss, double shift, double width, bool hasshift, bool haswidth);
621extern Set *intset_shift_scale(const Set *s, int shift, int width, bool hasshift, bool haswidth);
622extern Span *intspan_shift_scale(const Span *s, int shift, int width, bool hasshift, bool haswidth);
623extern SpanSet *intspanset_shift_scale(const SpanSet *ss, int shift, int width, bool hasshift, bool haswidth);
624extern Span *numspan_expand(const Span *s, Datum value);
625extern Span *tstzspan_expand(const Span *s, const Interval *interv);
626extern Set *set_round(const Set *s, int maxdd);
627extern Set *textcat_text_textset(const text *txt, const Set *s);
628extern Set *textcat_textset_text(const Set *s, const text *txt);
629extern Set *textset_initcap(const Set *s);
630extern Set *textset_lower(const Set *s);
631extern Set *textset_upper(const Set *s);
632extern TimestampTz timestamptz_tprecision(TimestampTz t, const Interval *duration, TimestampTz torigin);
633extern Set *tstzset_shift_scale(const Set *s, const Interval *shift, const Interval *duration);
634extern Set *tstzset_tprecision(const Set *s, const Interval *duration, TimestampTz torigin);
635extern Span *tstzspan_shift_scale(const Span *s, const Interval *shift, const Interval *duration);
636extern Span *tstzspan_tprecision(const Span *s, const Interval *duration, TimestampTz torigin);
637extern SpanSet *tstzspanset_shift_scale(const SpanSet *ss, const Interval *shift, const Interval *duration);
638extern SpanSet *tstzspanset_tprecision(const SpanSet *ss, const Interval *duration, TimestampTz torigin);
639
640/*****************************************************************************
641 * Comparison functions for set and span types
642 *****************************************************************************/
643
644extern int set_cmp(const Set *s1, const Set *s2);
645extern bool set_eq(const Set *s1, const Set *s2);
646extern bool set_ge(const Set *s1, const Set *s2);
647extern bool set_gt(const Set *s1, const Set *s2);
648extern bool set_le(const Set *s1, const Set *s2);
649extern bool set_lt(const Set *s1, const Set *s2);
650extern bool set_ne(const Set *s1, const Set *s2);
651extern int span_cmp(const Span *s1, const Span *s2);
652extern bool span_eq(const Span *s1, const Span *s2);
653extern bool span_ge(const Span *s1, const Span *s2);
654extern bool span_gt(const Span *s1, const Span *s2);
655extern bool span_le(const Span *s1, const Span *s2);
656extern bool span_lt(const Span *s1, const Span *s2);
657extern bool span_ne(const Span *s1, const Span *s2);
658extern int spanset_cmp(const SpanSet *ss1, const SpanSet *ss2);
659extern bool spanset_eq(const SpanSet *ss1, const SpanSet *ss2);
660extern bool spanset_ge(const SpanSet *ss1, const SpanSet *ss2);
661extern bool spanset_gt(const SpanSet *ss1, const SpanSet *ss2);
662extern bool spanset_le(const SpanSet *ss1, const SpanSet *ss2);
663extern bool spanset_lt(const SpanSet *ss1, const SpanSet *ss2);
664extern bool spanset_ne(const SpanSet *ss1, const SpanSet *ss2);
665
666/*****************************************************************************
667 * Bounding box functions for set and span types
668 *****************************************************************************/
669
670/* Split functions */
671
672extern Span *set_spans(const Set *s);
673extern Span *set_split_each_n_spans(const Set *s, int elems_per_span, int *count);
674extern Span *set_split_n_spans(const Set *s, int span_count, int *count);
675extern Span *spanset_spans(const SpanSet *ss);
676extern Span *spanset_split_each_n_spans(const SpanSet *ss, int elems_per_span, int *count);
677extern Span *spanset_split_n_spans(const SpanSet *ss, int span_count, int *count);
678
679/* Topological functions */
680
681extern bool adjacent_span_bigint(const Span *s, int64 i);
682extern bool adjacent_span_date(const Span *s, DateADT d);
683extern bool adjacent_span_float(const Span *s, double d);
684extern bool adjacent_span_int(const Span *s, int i);
685extern bool adjacent_span_span(const Span *s1, const Span *s2);
686extern bool adjacent_span_spanset(const Span *s, const SpanSet *ss);
687extern bool adjacent_span_timestamptz(const Span *s, TimestampTz t);
688extern bool adjacent_spanset_bigint(const SpanSet *ss, int64 i);
689extern bool adjacent_spanset_date(const SpanSet *ss, DateADT d);
690extern bool adjacent_spanset_float(const SpanSet *ss, double d);
691extern bool adjacent_spanset_int(const SpanSet *ss, int i);
692extern bool adjacent_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
693extern bool adjacent_spanset_span(const SpanSet *ss, const Span *s);
694extern bool adjacent_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
695extern bool contained_bigint_set(int64 i, const Set *s);
696extern bool contained_bigint_span(int64 i, const Span *s);
697extern bool contained_bigint_spanset(int64 i, const SpanSet *ss);
698extern bool contained_date_set(DateADT d, const Set *s);
699extern bool contained_date_span(DateADT d, const Span *s);
700extern bool contained_date_spanset(DateADT d, const SpanSet *ss);
701extern bool contained_float_set(double d, const Set *s);
702extern bool contained_float_span(double d, const Span *s);
703extern bool contained_float_spanset(double d, const SpanSet *ss);
704extern bool contained_int_set(int i, const Set *s);
705extern bool contained_int_span(int i, const Span *s);
706extern bool contained_int_spanset(int i, const SpanSet *ss);
707extern bool contained_set_set(const Set *s1, const Set *s2);
708extern bool contained_span_span(const Span *s1, const Span *s2);
709extern bool contained_span_spanset(const Span *s, const SpanSet *ss);
710extern bool contained_spanset_span(const SpanSet *ss, const Span *s);
711extern bool contained_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
712extern bool contained_text_set(const text *txt, const Set *s);
713extern bool contained_timestamptz_set(TimestampTz t, const Set *s);
714extern bool contained_timestamptz_span(TimestampTz t, const Span *s);
715extern bool contained_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
716extern bool contains_set_bigint(const Set *s, int64 i);
717extern bool contains_set_date(const Set *s, DateADT d);
718extern bool contains_set_float(const Set *s, double d);
719extern bool contains_set_int(const Set *s, int i);
720extern bool contains_set_set(const Set *s1, const Set *s2);
721extern bool contains_set_text(const Set *s, text *t);
722extern bool contains_set_timestamptz(const Set *s, TimestampTz t);
723extern bool contains_span_bigint(const Span *s, int64 i);
724extern bool contains_span_date(const Span *s, DateADT d);
725extern bool contains_span_float(const Span *s, double d);
726extern bool contains_span_int(const Span *s, int i);
727extern bool contains_span_span(const Span *s1, const Span *s2);
728extern bool contains_span_spanset(const Span *s, const SpanSet *ss);
729extern bool contains_span_timestamptz(const Span *s, TimestampTz t);
730extern bool contains_spanset_bigint(const SpanSet *ss, int64 i);
731extern bool contains_spanset_date(const SpanSet *ss, DateADT d);
732extern bool contains_spanset_float(const SpanSet *ss, double d);
733extern bool contains_spanset_int(const SpanSet *ss, int i);
734extern bool contains_spanset_span(const SpanSet *ss, const Span *s);
735extern bool contains_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
736extern bool contains_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
737extern bool overlaps_set_set(const Set *s1, const Set *s2);
738extern bool overlaps_span_span(const Span *s1, const Span *s2);
739extern bool overlaps_span_spanset(const Span *s, const SpanSet *ss);
740extern bool overlaps_spanset_span(const SpanSet *ss, const Span *s);
741extern bool overlaps_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
742
743/*****************************************************************************/
744
745/* Position functions for set and span types */
746
747extern bool after_date_set(DateADT d, const Set *s);
748extern bool after_date_span(DateADT d, const Span *s);
749extern bool after_date_spanset(DateADT d, const SpanSet *ss);
750extern bool after_set_date(const Set *s, DateADT d);
751extern bool after_set_timestamptz(const Set *s, TimestampTz t);
752extern bool after_span_date(const Span *s, DateADT d);
753extern bool after_span_timestamptz(const Span *s, TimestampTz t);
754extern bool after_spanset_date(const SpanSet *ss, DateADT d);
755extern bool after_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
756extern bool after_timestamptz_set(TimestampTz t, const Set *s);
757extern bool after_timestamptz_span(TimestampTz t, const Span *s);
758extern bool after_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
759extern bool before_date_set(DateADT d, const Set *s);
760extern bool before_date_span(DateADT d, const Span *s);
761extern bool before_date_spanset(DateADT d, const SpanSet *ss);
762extern bool before_set_date(const Set *s, DateADT d);
763extern bool before_set_timestamptz(const Set *s, TimestampTz t);
764extern bool before_span_date(const Span *s, DateADT d);
765extern bool before_span_timestamptz(const Span *s, TimestampTz t);
766extern bool before_spanset_date(const SpanSet *ss, DateADT d);
767extern bool before_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
768extern bool before_timestamptz_set(TimestampTz t, const Set *s);
769extern bool before_timestamptz_span(TimestampTz t, const Span *s);
770extern bool before_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
771extern bool left_bigint_set(int64 i, const Set *s);
772extern bool left_bigint_span(int64 i, const Span *s);
773extern bool left_bigint_spanset(int64 i, const SpanSet *ss);
774extern bool left_float_set(double d, const Set *s);
775extern bool left_float_span(double d, const Span *s);
776extern bool left_float_spanset(double d, const SpanSet *ss);
777extern bool left_int_set(int i, const Set *s);
778extern bool left_int_span(int i, const Span *s);
779extern bool left_int_spanset(int i, const SpanSet *ss);
780extern bool left_set_bigint(const Set *s, int64 i);
781extern bool left_set_float(const Set *s, double d);
782extern bool left_set_int(const Set *s, int i);
783extern bool left_set_set(const Set *s1, const Set *s2);
784extern bool left_set_text(const Set *s, text *txt);
785extern bool left_span_bigint(const Span *s, int64 i);
786extern bool left_span_float(const Span *s, double d);
787extern bool left_span_int(const Span *s, int i);
788extern bool left_span_span(const Span *s1, const Span *s2);
789extern bool left_span_spanset(const Span *s, const SpanSet *ss);
790extern bool left_spanset_bigint(const SpanSet *ss, int64 i);
791extern bool left_spanset_float(const SpanSet *ss, double d);
792extern bool left_spanset_int(const SpanSet *ss, int i);
793extern bool left_spanset_span(const SpanSet *ss, const Span *s);
794extern bool left_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
795extern bool left_text_set(const text *txt, const Set *s);
796extern bool overafter_date_set(DateADT d, const Set *s);
797extern bool overafter_date_span(DateADT d, const Span *s);
798extern bool overafter_date_spanset(DateADT d, const SpanSet *ss);
799extern bool overafter_set_date(const Set *s, DateADT d);
800extern bool overafter_set_timestamptz(const Set *s, TimestampTz t);
801extern bool overafter_span_date(const Span *s, DateADT d);
802extern bool overafter_span_timestamptz(const Span *s, TimestampTz t);
803extern bool overafter_spanset_date(const SpanSet *ss, DateADT d);
804extern bool overafter_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
805extern bool overafter_timestamptz_set(TimestampTz t, const Set *s);
806extern bool overafter_timestamptz_span(TimestampTz t, const Span *s);
807extern bool overafter_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
808extern bool overbefore_date_set(DateADT d, const Set *s);
809extern bool overbefore_date_span(DateADT d, const Span *s);
810extern bool overbefore_date_spanset(DateADT d, const SpanSet *ss);
811extern bool overbefore_set_date(const Set *s, DateADT d);
812extern bool overbefore_set_timestamptz(const Set *s, TimestampTz t);
813extern bool overbefore_span_date(const Span *s, DateADT d);
814extern bool overbefore_span_timestamptz(const Span *s, TimestampTz t);
815extern bool overbefore_spanset_date(const SpanSet *ss, DateADT d);
816extern bool overbefore_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
817extern bool overbefore_timestamptz_set(TimestampTz t, const Set *s);
818extern bool overbefore_timestamptz_span(TimestampTz t, const Span *s);
819extern bool overbefore_timestamptz_spanset(TimestampTz t, const SpanSet *ss);
820extern bool overleft_bigint_set(int64 i, const Set *s);
821extern bool overleft_bigint_span(int64 i, const Span *s);
822extern bool overleft_bigint_spanset(int64 i, const SpanSet *ss);
823extern bool overleft_float_set(double d, const Set *s);
824extern bool overleft_float_span(double d, const Span *s);
825extern bool overleft_float_spanset(double d, const SpanSet *ss);
826extern bool overleft_int_set(int i, const Set *s);
827extern bool overleft_int_span(int i, const Span *s);
828extern bool overleft_int_spanset(int i, const SpanSet *ss);
829extern bool overleft_set_bigint(const Set *s, int64 i);
830extern bool overleft_set_float(const Set *s, double d);
831extern bool overleft_set_int(const Set *s, int i);
832extern bool overleft_set_set(const Set *s1, const Set *s2);
833extern bool overleft_set_text(const Set *s, text *txt);
834extern bool overleft_span_bigint(const Span *s, int64 i);
835extern bool overleft_span_float(const Span *s, double d);
836extern bool overleft_span_int(const Span *s, int i);
837extern bool overleft_span_span(const Span *s1, const Span *s2);
838extern bool overleft_span_spanset(const Span *s, const SpanSet *ss);
839extern bool overleft_spanset_bigint(const SpanSet *ss, int64 i);
840extern bool overleft_spanset_float(const SpanSet *ss, double d);
841extern bool overleft_spanset_int(const SpanSet *ss, int i);
842extern bool overleft_spanset_span(const SpanSet *ss, const Span *s);
843extern bool overleft_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
844extern bool overleft_text_set(const text *txt, const Set *s);
845extern bool overright_bigint_set(int64 i, const Set *s);
846extern bool overright_bigint_span(int64 i, const Span *s);
847extern bool overright_bigint_spanset(int64 i, const SpanSet *ss);
848extern bool overright_float_set(double d, const Set *s);
849extern bool overright_float_span(double d, const Span *s);
850extern bool overright_float_spanset(double d, const SpanSet *ss);
851extern bool overright_int_set(int i, const Set *s);
852extern bool overright_int_span(int i, const Span *s);
853extern bool overright_int_spanset(int i, const SpanSet *ss);
854extern bool overright_set_bigint(const Set *s, int64 i);
855extern bool overright_set_float(const Set *s, double d);
856extern bool overright_set_int(const Set *s, int i);
857extern bool overright_set_set(const Set *s1, const Set *s2);
858extern bool overright_set_text(const Set *s, text *txt);
859extern bool overright_span_bigint(const Span *s, int64 i);
860extern bool overright_span_float(const Span *s, double d);
861extern bool overright_span_int(const Span *s, int i);
862extern bool overright_span_span(const Span *s1, const Span *s2);
863extern bool overright_span_spanset(const Span *s, const SpanSet *ss);
864extern bool overright_spanset_bigint(const SpanSet *ss, int64 i);
865extern bool overright_spanset_float(const SpanSet *ss, double d);
866extern bool overright_spanset_int(const SpanSet *ss, int i);
867extern bool overright_spanset_span(const SpanSet *ss, const Span *s);
868extern bool overright_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
869extern bool overright_text_set(const text *txt, const Set *s);
870extern bool right_bigint_set(int64 i, const Set *s);
871extern bool right_bigint_span(int64 i, const Span *s);
872extern bool right_bigint_spanset(int64 i, const SpanSet *ss);
873extern bool right_float_set(double d, const Set *s);
874extern bool right_float_span(double d, const Span *s);
875extern bool right_float_spanset(double d, const SpanSet *ss);
876extern bool right_int_set(int i, const Set *s);
877extern bool right_int_span(int i, const Span *s);
878extern bool right_int_spanset(int i, const SpanSet *ss);
879extern bool right_set_bigint(const Set *s, int64 i);
880extern bool right_set_float(const Set *s, double d);
881extern bool right_set_int(const Set *s, int i);
882extern bool right_set_set(const Set *s1, const Set *s2);
883extern bool right_set_text(const Set *s, text *txt);
884extern bool right_span_bigint(const Span *s, int64 i);
885extern bool right_span_float(const Span *s, double d);
886extern bool right_span_int(const Span *s, int i);
887extern bool right_span_span(const Span *s1, const Span *s2);
888extern bool right_span_spanset(const Span *s, const SpanSet *ss);
889extern bool right_spanset_bigint(const SpanSet *ss, int64 i);
890extern bool right_spanset_float(const SpanSet *ss, double d);
891extern bool right_spanset_int(const SpanSet *ss, int i);
892extern bool right_spanset_span(const SpanSet *ss, const Span *s);
893extern bool right_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
894extern bool right_text_set(const text *txt, const Set *s);
895
896/*****************************************************************************
897 * Set functions for set and span types
898 *****************************************************************************/
899
900extern Set *intersection_bigint_set(int64 i, const Set *s);
901extern Set *intersection_date_set(DateADT d, const Set *s);
902extern Set *intersection_float_set(double d, const Set *s);
903extern Set *intersection_int_set(int i, const Set *s);
904extern Set *intersection_set_bigint(const Set *s, int64 i);
905extern Set *intersection_set_date(const Set *s, DateADT d);
906extern Set *intersection_set_float(const Set *s, double d);
907extern Set *intersection_set_int(const Set *s, int i);
908extern Set *intersection_set_set(const Set *s1, const Set *s2);
909extern Set *intersection_set_text(const Set *s, const text *txt);
911extern Span *intersection_span_bigint(const Span *s, int64 i);
912extern Span *intersection_span_date(const Span *s, DateADT d);
913extern Span *intersection_span_float(const Span *s, double d);
914extern Span *intersection_span_int(const Span *s, int i);
915extern Span *intersection_span_span(const Span *s1, const Span *s2);
916extern SpanSet *intersection_span_spanset(const Span *s, const SpanSet *ss);
920extern SpanSet *intersection_spanset_float(const SpanSet *ss, double d);
921extern SpanSet *intersection_spanset_int(const SpanSet *ss, int i);
922extern SpanSet *intersection_spanset_span(const SpanSet *ss, const Span *s);
923extern SpanSet *intersection_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
925extern Set *intersection_text_set(const text *txt, const Set *s);
927extern Set *minus_bigint_set(int64 i, const Set *s);
928extern SpanSet *minus_bigint_span(int64 i, const Span *s);
929extern SpanSet *minus_bigint_spanset(int64 i, const SpanSet *ss);
930extern Set *minus_date_set(DateADT d, const Set *s);
931extern SpanSet *minus_date_span(DateADT d, const Span *s);
932extern SpanSet *minus_date_spanset(DateADT d, const SpanSet *ss);
933extern Set *minus_float_set(double d, const Set *s);
934extern SpanSet *minus_float_span(double d, const Span *s);
935extern SpanSet *minus_float_spanset(double d, const SpanSet *ss);
936extern Set *minus_int_set(int i, const Set *s);
937extern SpanSet *minus_int_span(int i, const Span *s);
938extern SpanSet *minus_int_spanset(int i, const SpanSet *ss);
939extern Set *minus_set_bigint(const Set *s, int64 i);
940extern Set *minus_set_date(const Set *s, DateADT d);
941extern Set *minus_set_float(const Set *s, double d);
942extern Set *minus_set_int(const Set *s, int i);
943extern Set *minus_set_set(const Set *s1, const Set *s2);
944extern Set *minus_set_text(const Set *s, const text *txt);
945extern Set *minus_set_timestamptz(const Set *s, TimestampTz t);
946extern SpanSet *minus_span_bigint(const Span *s, int64 i);
947extern SpanSet *minus_span_date(const Span *s, DateADT d);
948extern SpanSet *minus_span_float(const Span *s, double d);
949extern SpanSet *minus_span_int(const Span *s, int i);
950extern SpanSet *minus_span_span(const Span *s1, const Span *s2);
951extern SpanSet *minus_span_spanset(const Span *s, const SpanSet *ss);
953extern SpanSet *minus_spanset_bigint(const SpanSet *ss, int64 i);
954extern SpanSet *minus_spanset_date(const SpanSet *ss, DateADT d);
955extern SpanSet *minus_spanset_float(const SpanSet *ss, double d);
956extern SpanSet *minus_spanset_int(const SpanSet *ss, int i);
957extern SpanSet *minus_spanset_span(const SpanSet *ss, const Span *s);
958extern SpanSet *minus_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
960extern Set *minus_text_set(const text *txt, const Set *s);
961extern Set *minus_timestamptz_set(TimestampTz t, const Set *s);
964extern Set *union_bigint_set(int64 i, const Set *s);
965extern SpanSet *union_bigint_span(const Span *s, int64 i);
967extern Set *union_date_set(DateADT d, const Set *s);
968extern SpanSet *union_date_span(const Span *s, DateADT d);
970extern Set *union_float_set(double d, const Set *s);
971extern SpanSet *union_float_span(const Span *s, double d);
972extern SpanSet *union_float_spanset(double d, SpanSet *ss);
973extern Set *union_int_set(int i, const Set *s);
974extern SpanSet *union_int_span(int i, const Span *s);
975extern SpanSet *union_int_spanset(int i, SpanSet *ss);
976extern Set *union_set_bigint(const Set *s, int64 i);
977extern Set *union_set_date(const Set *s, DateADT d);
978extern Set *union_set_float(const Set *s, double d);
979extern Set *union_set_int(const Set *s, int i);
980extern Set *union_set_set(const Set *s1, const Set *s2);
981extern Set *union_set_text(const Set *s, const text *txt);
982extern Set *union_set_timestamptz(const Set *s, TimestampTz t);
983extern SpanSet *union_span_bigint(const Span *s, int64 i);
984extern SpanSet *union_span_date(const Span *s, DateADT d);
985extern SpanSet *union_span_float(const Span *s, double d);
986extern SpanSet *union_span_int(const Span *s, int i);
987extern SpanSet *union_span_span(const Span *s1, const Span *s2);
988extern SpanSet *union_span_spanset(const Span *s, const SpanSet *ss);
990extern SpanSet *union_spanset_bigint(const SpanSet *ss, int64 i);
991extern SpanSet *union_spanset_date(const SpanSet *ss, DateADT d);
992extern SpanSet *union_spanset_float(const SpanSet *ss, double d);
993extern SpanSet *union_spanset_int(const SpanSet *ss, int i);
994extern SpanSet *union_spanset_span(const SpanSet *ss, const Span *s);
995extern SpanSet *union_spanset_spanset(const SpanSet *ss1, const SpanSet *ss2);
997extern Set *union_text_set(const text *txt, const Set *s);
998extern Set *union_timestamptz_set(TimestampTz t, const Set *s);
1001
1002/*****************************************************************************
1003 * Distance functions for set and span types
1004 *****************************************************************************/
1005
1006extern int64 distance_bigintset_bigintset(const Set *s1, const Set *s2);
1007extern int64 distance_bigintspan_bigintspan(const Span *s1, const Span *s2);
1008extern int64 distance_bigintspanset_bigintspan(const SpanSet *ss, const Span *s);
1009extern int64 distance_bigintspanset_bigintspanset(const SpanSet *ss1, const SpanSet *ss2);
1010extern int distance_dateset_dateset(const Set *s1, const Set *s2);
1011extern int distance_datespan_datespan(const Span *s1, const Span *s2);
1012extern int distance_datespanset_datespan(const SpanSet *ss, const Span *s);
1013extern int distance_datespanset_datespanset(const SpanSet *ss1, const SpanSet *ss2);
1014extern double distance_floatset_floatset(const Set *s1, const Set *s2);
1015extern double distance_floatspan_floatspan(const Span *s1, const Span *s2);
1016extern double distance_floatspanset_floatspan(const SpanSet *ss, const Span *s);
1017extern double distance_floatspanset_floatspanset(const SpanSet *ss1, const SpanSet *ss2);
1018extern int distance_intset_intset(const Set *s1, const Set *s2);
1019extern int distance_intspan_intspan(const Span *s1, const Span *s2);
1020extern int distance_intspanset_intspan(const SpanSet *ss, const Span *s);
1021extern int distance_intspanset_intspanset(const SpanSet *ss1, const SpanSet *ss2);
1022extern int64 distance_set_bigint(const Set *s, int64 i);
1023extern int distance_set_date(const Set *s, DateADT d);
1024extern double distance_set_float(const Set *s, double d);
1025extern int distance_set_int(const Set *s, int i);
1026extern double distance_set_timestamptz(const Set *s, TimestampTz t);
1027extern int64 distance_span_bigint(const Span *s, int64 i);
1028extern int distance_span_date(const Span *s, DateADT d);
1029extern double distance_span_float(const Span *s, double d);
1030extern int distance_span_int(const Span *s, int i);
1031extern double distance_span_timestamptz(const Span *s, TimestampTz t);
1032extern int64 distance_spanset_bigint(const SpanSet *ss, int64 i);
1033extern int distance_spanset_date(const SpanSet *ss, DateADT d);
1034extern double distance_spanset_float(const SpanSet *ss, double d);
1035extern int distance_spanset_int(const SpanSet *ss, int i);
1036extern double distance_spanset_timestamptz(const SpanSet *ss, TimestampTz t);
1037extern double distance_tstzset_tstzset(const Set *s1, const Set *s2);
1038extern double distance_tstzspan_tstzspan(const Span *s1, const Span *s2);
1039extern double distance_tstzspanset_tstzspan(const SpanSet *ss, const Span *s);
1040extern double distance_tstzspanset_tstzspanset(const SpanSet *ss1, const SpanSet *ss2);
1041
1042/*****************************************************************************
1043 * Aggregate functions for set and span types
1044 *****************************************************************************/
1045
1050extern Span *float_extent_transfn(Span *state, double d);
1051extern Set *float_union_transfn(Set *state, double d);
1052extern Span *int_extent_transfn(Span *state, int i);
1053extern Set *int_union_transfn(Set *state, int32 i);
1054extern Span *set_extent_transfn(Span *state, const Set *s);
1055extern Set *set_union_finalfn(Set *state);
1056extern Set *set_union_transfn(Set *state, Set *s);
1057extern Span *span_extent_transfn(Span *state, const Span *s);
1058extern SpanSet *span_union_transfn(SpanSet *state, const Span *s);
1059extern Span *spanset_extent_transfn(Span *state, const SpanSet *ss);
1062extern Set *text_union_transfn(Set *state, const text *txt);
1065
1066/*****************************************************************************
1067 * Bin functions for span and spanset types
1068 *****************************************************************************/
1069
1070extern int64 bigint_get_bin(int64 value, int64 vsize, int64 vorigin);
1071extern Span *bigintspan_bins(const Span *s, int64 vsize, int64 vorigin, int *count);
1072extern Span *bigintspanset_bins(const SpanSet *ss, int64 vsize, int64 vorigin, int *count);
1073extern DateADT date_get_bin(DateADT d, const Interval *duration, DateADT torigin);
1074extern Span *datespan_bins(const Span *s, const Interval *duration, DateADT torigin, int *count);
1075extern Span *datespanset_bins(const SpanSet *ss, const Interval *duration, DateADT torigin, int *count);
1076extern double float_get_bin(double value, double vsize, double vorigin);
1077extern Span *floatspan_bins(const Span *s, double vsize, double vorigin, int *count);
1078extern Span *floatspanset_bins(const SpanSet *ss, double vsize, double vorigin, int *count);
1079extern int int_get_bin(int value, int vsize, int vorigin);
1080extern Span *intspan_bins(const Span *s, int vsize, int vorigin, int *count);
1081extern Span *intspanset_bins(const SpanSet *ss, int vsize, int vorigin, int *count);
1082extern TimestampTz timestamptz_get_bin(TimestampTz t, const Interval *duration, TimestampTz torigin);
1083extern Span *tstzspan_bins(const Span *s, const Interval *duration, TimestampTz origin, int *count);
1084extern Span *tstzspanset_bins(const SpanSet *ss, const Interval *duration, TimestampTz torigin, int *count);
1085
1086/*===========================================================================*
1087 * Functions for temporal boxes
1088 *===========================================================================*/
1089
1090/*****************************************************************************
1091 * Input and output functions for box types
1092 *****************************************************************************/
1093
1094extern char *tbox_as_hexwkb(const TBox *box, uint8_t variant, size_t *size);
1095extern uint8_t *tbox_as_wkb(const TBox *box, uint8_t variant, size_t *size_out);
1096extern TBox *tbox_from_hexwkb(const char *hexwkb);
1097extern TBox *tbox_from_wkb(const uint8_t *wkb, size_t size);
1098extern TBox *tbox_in(const char *str);
1099extern char *tbox_out(const TBox *box, int maxdd);
1100
1101/*****************************************************************************
1102 * Constructor functions for box types
1103 *****************************************************************************/
1104
1105extern TBox *float_timestamptz_to_tbox(double d, TimestampTz t);
1106extern TBox *float_tstzspan_to_tbox(double d, const Span *s);
1107extern TBox *int_timestamptz_to_tbox(int i, TimestampTz t);
1108extern TBox *int_tstzspan_to_tbox(int i, const Span *s);
1109extern TBox *numspan_tstzspan_to_tbox(const Span *span, const Span *s);
1110extern TBox *numspan_timestamptz_to_tbox(const Span *span, TimestampTz t);
1111extern TBox *tbox_copy(const TBox *box);
1112extern TBox *tbox_make(const Span *s, const Span *p);
1113
1114/*****************************************************************************
1115 * Conversion functions for box types
1116 *****************************************************************************/
1117
1118extern TBox *float_to_tbox(double d);
1119extern TBox *int_to_tbox(int i);
1120extern TBox *set_to_tbox(const Set *s);
1121extern TBox *span_to_tbox(const Span *s);
1122extern TBox *spanset_to_tbox(const SpanSet *ss);
1123extern Span *tbox_to_intspan(const TBox *box);
1124extern Span *tbox_to_floatspan(const TBox *box);
1125extern Span *tbox_to_tstzspan(const TBox *box);
1127
1128/*****************************************************************************
1129 * Accessor functions for box types
1130 *****************************************************************************/
1131
1132extern bool tbox_hast(const TBox *box);
1133extern bool tbox_hasx(const TBox *box);
1134extern bool tbox_tmax(const TBox *box, TimestampTz *result);
1135extern bool tbox_tmax_inc(const TBox *box, bool *result);
1136extern bool tbox_tmin(const TBox *box, TimestampTz *result);
1137extern bool tbox_tmin_inc(const TBox *box, bool *result);
1138extern bool tbox_xmax(const TBox *box, double *result);
1139extern bool tbox_xmax_inc(const TBox *box, bool *result);
1140extern bool tbox_xmin(const TBox *box, double *result);
1141extern bool tbox_xmin_inc(const TBox *box, bool *result);
1142extern bool tboxfloat_xmax(const TBox *box, double *result);
1143extern bool tboxfloat_xmin(const TBox *box, double *result);
1144extern bool tboxint_xmax(const TBox *box, int *result);
1145extern bool tboxint_xmin(const TBox *box, int *result);
1146
1147/*****************************************************************************
1148 * Transformation functions for box types
1149 *****************************************************************************/
1150
1151extern TBox *tbox_expand_float(const TBox *box, double d);
1152extern TBox *tbox_expand_int(const TBox *box, int i);
1153extern TBox *tbox_expand_time(const TBox *box, const Interval *interv);
1154extern TBox *tbox_round(const TBox *box, int maxdd);
1155extern TBox *tbox_shift_scale_float(const TBox *box, double shift, double width, bool hasshift, bool haswidth);
1156extern TBox *tbox_shift_scale_int(const TBox *box, int shift, int width, bool hasshift, bool haswidth);
1157extern TBox *tbox_shift_scale_time(const TBox *box, const Interval *shift, const Interval *duration);
1158
1159/*****************************************************************************
1160 * Set functions for box types
1161 *****************************************************************************/
1162
1163extern TBox *union_tbox_tbox(const TBox *box1, const TBox *box2, bool strict);
1164extern TBox *intersection_tbox_tbox(const TBox *box1, const TBox *box2);
1165
1166/*****************************************************************************
1167 * Bounding box functions for box types
1168 *****************************************************************************/
1169
1170/* Topological functions for box types */
1171
1172extern bool adjacent_tbox_tbox(const TBox *box1, const TBox *box2);
1173extern bool contained_tbox_tbox(const TBox *box1, const TBox *box2);
1174extern bool contains_tbox_tbox(const TBox *box1, const TBox *box2);
1175extern bool overlaps_tbox_tbox(const TBox *box1, const TBox *box2);
1176extern bool same_tbox_tbox(const TBox *box1, const TBox *box2);
1177
1178/*****************************************************************************/
1179
1180/* Position functions for box types */
1181
1182extern bool after_tbox_tbox(const TBox *box1, const TBox *box2);
1183extern bool before_tbox_tbox(const TBox *box1, const TBox *box2);
1184extern bool left_tbox_tbox(const TBox *box1, const TBox *box2);
1185extern bool overafter_tbox_tbox(const TBox *box1, const TBox *box2);
1186extern bool overbefore_tbox_tbox(const TBox *box1, const TBox *box2);
1187extern bool overleft_tbox_tbox(const TBox *box1, const TBox *box2);
1188extern bool overright_tbox_tbox(const TBox *box1, const TBox *box2);
1189extern bool right_tbox_tbox(const TBox *box1, const TBox *box2);
1190
1191/*****************************************************************************
1192 * Comparison functions for box types
1193 *****************************************************************************/
1194
1195extern int tbox_cmp(const TBox *box1, const TBox *box2);
1196extern bool tbox_eq(const TBox *box1, const TBox *box2);
1197extern bool tbox_ge(const TBox *box1, const TBox *box2);
1198extern bool tbox_gt(const TBox *box1, const TBox *box2);
1199extern bool tbox_le(const TBox *box1, const TBox *box2);
1200extern bool tbox_lt(const TBox *box1, const TBox *box2);
1201extern bool tbox_ne(const TBox *box1, const TBox *box2);
1202
1203/*===========================================================================*
1204 * Functions for temporal types
1205 *===========================================================================*/
1206
1207/*****************************************************************************
1208 * Input and output functions for temporal types
1209 *****************************************************************************/
1210
1211extern Temporal *tbool_from_mfjson(const char *str);
1212extern Temporal *tbool_in(const char *str);
1213extern char *tbool_out(const Temporal *temp);
1214extern char *temporal_as_hexwkb(const Temporal *temp, uint8_t variant, size_t *size_out);
1215extern char *temporal_as_mfjson(const Temporal *temp, bool with_bbox, int flags, int precision, const char *srs);
1216extern uint8_t *temporal_as_wkb(const Temporal *temp, uint8_t variant, size_t *size_out);
1217extern Temporal *temporal_from_hexwkb(const char *hexwkb);
1218extern Temporal *temporal_from_wkb(const uint8_t *wkb, size_t size);
1219extern Temporal *tfloat_from_mfjson(const char *str);
1220extern Temporal *tfloat_in(const char *str);
1221extern char *tfloat_out(const Temporal *temp, int maxdd);
1222extern Temporal *tint_from_mfjson(const char *str);
1223extern Temporal *tint_in(const char *str);
1224extern char *tint_out(const Temporal *temp);
1225extern Temporal *ttext_from_mfjson(const char *str);
1226extern Temporal *ttext_in(const char *str);
1227extern char *ttext_out(const Temporal *temp);
1228
1229/*****************************************************************************
1230 * Constructor functions for temporal types
1231 *****************************************************************************/
1232
1233extern Temporal *tbool_from_base_temp(bool b, const Temporal *temp);
1234extern TInstant *tboolinst_make(bool b, TimestampTz t);
1235extern TSequence *tboolseq_from_base_tstzset(bool b, const Set *s);
1236extern TSequence *tboolseq_from_base_tstzspan(bool b, const Span *s);
1237extern TSequenceSet *tboolseqset_from_base_tstzspanset(bool b, const SpanSet *ss);
1238extern Temporal *temporal_copy(const Temporal *temp);
1239extern Temporal *tfloat_from_base_temp(double d, const Temporal *temp);
1240extern TInstant *tfloatinst_make(double d, TimestampTz t);
1241extern TSequence *tfloatseq_from_base_tstzset(double d, const Set *s);
1242extern TSequence *tfloatseq_from_base_tstzspan(double d, const Span *s, interpType interp);
1243extern TSequenceSet *tfloatseqset_from_base_tstzspanset(double d, const SpanSet *ss, interpType interp);
1244extern Temporal *tint_from_base_temp(int i, const Temporal *temp);
1245extern TInstant *tintinst_make(int i, TimestampTz t);
1246extern TSequence *tintseq_from_base_tstzset(int i, const Set *s);
1247extern TSequence *tintseq_from_base_tstzspan(int i, const Span *s);
1248extern TSequenceSet *tintseqset_from_base_tstzspanset(int i, const SpanSet *ss);
1249extern TSequence *tsequence_make(const TInstant **instants, int count, bool lower_inc, bool upper_inc, interpType interp, bool normalize);
1250extern TSequenceSet *tsequenceset_make(const TSequence **sequences, int count, bool normalize);
1251extern TSequenceSet *tsequenceset_make_gaps(const TInstant **instants, int count, interpType interp, const Interval *maxt, double maxdist);
1252extern Temporal *ttext_from_base_temp(const text *txt, const Temporal *temp);
1253extern TInstant *ttextinst_make(const text *txt, TimestampTz t);
1254extern TSequence *ttextseq_from_base_tstzset(const text *txt, const Set *s);
1255extern TSequence *ttextseq_from_base_tstzspan(const text *txt, const Span *s);
1256extern TSequenceSet *ttextseqset_from_base_tstzspanset(const text *txt, const SpanSet *ss);
1257
1258/*****************************************************************************
1259 * Conversion functions for temporal types
1260 *****************************************************************************/
1261
1262extern Temporal *tbool_to_tint(const Temporal *temp);
1263extern Span *temporal_to_tstzspan(const Temporal *temp);
1264extern Temporal *tfloat_to_tint(const Temporal *temp);
1265extern Temporal *tint_to_tfloat(const Temporal *temp);
1266extern Span *tnumber_to_span(const Temporal *temp);
1267extern TBox *tnumber_to_tbox (const Temporal *temp);
1268
1269/*****************************************************************************
1270 * Accessor functions for temporal types
1271 *****************************************************************************/
1272
1273extern bool tbool_end_value(const Temporal *temp);
1274extern bool tbool_start_value(const Temporal *temp);
1275extern bool tbool_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, bool *value);
1276extern bool tbool_value_n(const Temporal *temp, int n, bool *result);
1277extern bool *tbool_values(const Temporal *temp, int *count);
1278extern Interval *temporal_duration(const Temporal *temp, bool boundspan);
1279extern TInstant *temporal_end_instant(const Temporal *temp);
1280extern TSequence *temporal_end_sequence(const Temporal *temp);
1282extern uint32 temporal_hash(const Temporal *temp);
1283extern TInstant *temporal_instant_n(const Temporal *temp, int n);
1284extern TInstant **temporal_instants(const Temporal *temp, int *count);
1285extern const char *temporal_interp(const Temporal *temp);
1286extern bool temporal_lower_inc(const Temporal *temp);
1287extern TInstant *temporal_max_instant(const Temporal *temp);
1288extern TInstant *temporal_min_instant(const Temporal *temp);
1289extern int temporal_num_instants(const Temporal *temp);
1290extern int temporal_num_sequences(const Temporal *temp);
1291extern int temporal_num_timestamps(const Temporal *temp);
1292extern TSequence **temporal_segments(const Temporal *temp, int *count);
1293extern TSequence *temporal_sequence_n(const Temporal *temp, int i);
1294extern TSequence **temporal_sequences(const Temporal *temp, int *count);
1295extern TInstant *temporal_start_instant(const Temporal *temp);
1296extern TSequence *temporal_start_sequence(const Temporal *temp);
1298extern TSequenceSet *temporal_stops(const Temporal *temp, double maxdist, const Interval *minduration);
1299extern const char *temporal_subtype(const Temporal *temp);
1300extern SpanSet *temporal_time(const Temporal *temp);
1301extern TimestampTz *temporal_timestamps(const Temporal *temp, int *count);
1302extern bool temporal_timestamptz_n(const Temporal *temp, int n, TimestampTz *result);
1303extern bool temporal_upper_inc(const Temporal *temp);
1304extern double tfloat_end_value(const Temporal *temp);
1305extern double tfloat_max_value(const Temporal *temp);
1306extern double tfloat_min_value(const Temporal *temp);
1307extern double tfloat_start_value(const Temporal *temp);
1308extern bool tfloat_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, double *value);
1309extern bool tfloat_value_n(const Temporal *temp, int n, double *result);
1310extern double *tfloat_values(const Temporal *temp, int *count);
1311extern int tint_end_value(const Temporal *temp);
1312extern int tint_max_value(const Temporal *temp);
1313extern int tint_min_value(const Temporal *temp);
1314extern int tint_start_value(const Temporal *temp);
1315extern bool tint_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, int *value);
1316extern bool tint_value_n(const Temporal *temp, int n, int *result);
1317extern int *tint_values(const Temporal *temp, int *count);
1318extern double tnumber_integral(const Temporal *temp);
1319extern double tnumber_twavg(const Temporal *temp);
1320extern SpanSet *tnumber_valuespans(const Temporal *temp);
1321extern text *ttext_end_value(const Temporal *temp);
1322extern text *ttext_max_value(const Temporal *temp);
1323extern text *ttext_min_value(const Temporal *temp);
1324extern text *ttext_start_value(const Temporal *temp);
1325extern bool ttext_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, text **value);
1326extern bool ttext_value_n(const Temporal *temp, int n, text **result);
1327extern text **ttext_values(const Temporal *temp, int *count);
1328
1329/*****************************************************************************
1330 * Transformation functions for temporal types
1331 *****************************************************************************/
1332
1333extern double float_degrees(double value, bool normalize);
1334extern Temporal **temparr_round(const Temporal **temp, int count, int maxdd);
1335extern Temporal *temporal_round(const Temporal *temp, int maxdd);
1336extern Temporal *temporal_scale_time(const Temporal *temp, const Interval *duration);
1337extern Temporal *temporal_set_interp(const Temporal *temp, interpType interp);
1338extern Temporal *temporal_shift_scale_time(const Temporal *temp, const Interval *shift, const Interval *duration);
1339extern Temporal *temporal_shift_time(const Temporal *temp, const Interval *shift);
1340extern TInstant *temporal_to_tinstant(const Temporal *temp);
1341extern TSequence *temporal_to_tsequence(const Temporal *temp, interpType interp);
1342extern TSequenceSet *temporal_to_tsequenceset(const Temporal *temp, interpType interp);
1343extern Temporal *tfloat_ceil(const Temporal *temp);
1344extern Temporal *tfloat_degrees(const Temporal *temp, bool normalize);
1345extern Temporal *tfloat_floor(const Temporal *temp);
1346extern Temporal *tfloat_radians(const Temporal *temp);
1347extern Temporal *tfloat_scale_value(const Temporal *temp, double width);
1348extern Temporal *tfloat_shift_scale_value(const Temporal *temp, double shift, double width);
1349extern Temporal *tfloat_shift_value(const Temporal *temp, double shift);
1350extern Temporal *tint_scale_value(const Temporal *temp, int width);
1351extern Temporal *tint_shift_scale_value(const Temporal *temp, int shift, int width);
1352extern Temporal *tint_shift_value(const Temporal *temp, int shift);
1353
1354/*****************************************************************************
1355 * Modification functions for temporal types
1356 *****************************************************************************/
1357
1358extern Temporal *temporal_append_tinstant(Temporal *temp, const TInstant *inst, interpType interp, double maxdist, const Interval *maxt, bool expand);
1359extern Temporal *temporal_append_tsequence(Temporal *temp, const TSequence *seq, bool expand);
1361extern Temporal *temporal_delete_tstzset(const Temporal *temp, const Set *s, bool connect);
1362extern Temporal *temporal_delete_tstzspan(const Temporal *temp, const Span *s, bool connect);
1363extern Temporal *temporal_delete_tstzspanset(const Temporal *temp, const SpanSet *ss, bool connect);
1364extern Temporal *temporal_insert(const Temporal *temp1, const Temporal *temp2, bool connect);
1365extern Temporal *temporal_merge(const Temporal *temp1, const Temporal *temp2);
1366extern Temporal *temporal_merge_array(const Temporal **temparr, int count);
1367extern Temporal *temporal_update(const Temporal *temp1, const Temporal *temp2, bool connect);
1368
1369/*****************************************************************************
1370 * Restriction functions for temporal types
1371 *****************************************************************************/
1372
1373extern Temporal *tbool_at_value(const Temporal *temp, bool b);
1374extern Temporal *tbool_minus_value(const Temporal *temp, bool b);
1375extern Temporal *temporal_at_max(const Temporal *temp);
1376extern Temporal *temporal_at_min(const Temporal *temp);
1378extern Temporal *temporal_at_tstzset(const Temporal *temp, const Set *s);
1379extern Temporal *temporal_at_tstzspan(const Temporal *temp, const Span *s);
1380extern Temporal *temporal_at_tstzspanset(const Temporal *temp, const SpanSet *ss);
1381extern Temporal *temporal_at_values(const Temporal *temp, const Set *set);
1382extern Temporal *temporal_minus_max(const Temporal *temp);
1383extern Temporal *temporal_minus_min(const Temporal *temp);
1385extern Temporal *temporal_minus_tstzset(const Temporal *temp, const Set *s);
1386extern Temporal *temporal_minus_tstzspan(const Temporal *temp, const Span *s);
1387extern Temporal *temporal_minus_tstzspanset(const Temporal *temp, const SpanSet *ss);
1388extern Temporal *temporal_minus_values(const Temporal *temp, const Set *set);
1389extern Temporal *tfloat_at_value(const Temporal *temp, double d);
1390extern Temporal *tfloat_minus_value(const Temporal *temp, double d);
1391extern Temporal *tint_at_value(const Temporal *temp, int i);
1392extern Temporal *tint_minus_value(const Temporal *temp, int i);
1393extern Temporal *tnumber_at_span(const Temporal *temp, const Span *span);
1394extern Temporal *tnumber_at_spanset(const Temporal *temp, const SpanSet *ss);
1395extern Temporal *tnumber_at_tbox(const Temporal *temp, const TBox *box);
1396extern Temporal *tnumber_minus_span(const Temporal *temp, const Span *span);
1397extern Temporal *tnumber_minus_spanset(const Temporal *temp, const SpanSet *ss);
1398extern Temporal *tnumber_minus_tbox(const Temporal *temp, const TBox *box);
1399extern Temporal *ttext_at_value(const Temporal *temp, text *txt);
1400extern Temporal *ttext_minus_value(const Temporal *temp, text *txt);
1401
1402/*****************************************************************************
1403 * Comparison functions for temporal types
1404 *****************************************************************************/
1405
1406/* Traditional comparison functions for temporal types */
1407
1408extern int temporal_cmp(const Temporal *temp1, const Temporal *temp2);
1409extern bool temporal_eq(const Temporal *temp1, const Temporal *temp2);
1410extern bool temporal_ge(const Temporal *temp1, const Temporal *temp2);
1411extern bool temporal_gt(const Temporal *temp1, const Temporal *temp2);
1412extern bool temporal_le(const Temporal *temp1, const Temporal *temp2);
1413extern bool temporal_lt(const Temporal *temp1, const Temporal *temp2);
1414extern bool temporal_ne(const Temporal *temp1, const Temporal *temp2);
1415
1416/*****************************************************************************/
1417
1418/* Ever and always comparison functions for temporal types */
1419
1420extern int always_eq_bool_tbool(bool b, const Temporal *temp);
1421extern int always_eq_float_tfloat(double d, const Temporal *temp);
1422extern int always_eq_int_tint(int i, const Temporal *temp);
1423extern int always_eq_tbool_bool(const Temporal *temp, bool b);
1424extern int always_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1425extern int always_eq_text_ttext(const text *txt, const Temporal *temp);
1426extern int always_eq_tfloat_float(const Temporal *temp, double d);
1427extern int always_eq_tint_int(const Temporal *temp, int i);
1428extern int always_eq_ttext_text(const Temporal *temp, const text *txt);
1429extern int always_ge_float_tfloat(double d, const Temporal *temp);
1430extern int always_ge_int_tint(int i, const Temporal *temp);
1431extern int always_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1432extern int always_ge_text_ttext(const text *txt, const Temporal *temp);
1433extern int always_ge_tfloat_float(const Temporal *temp, double d);
1434extern int always_ge_tint_int(const Temporal *temp, int i);
1435extern int always_ge_ttext_text(const Temporal *temp, const text *txt);
1436extern int always_gt_float_tfloat(double d, const Temporal *temp);
1437extern int always_gt_int_tint(int i, const Temporal *temp);
1438extern int always_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1439extern int always_gt_text_ttext(const text *txt, const Temporal *temp);
1440extern int always_gt_tfloat_float(const Temporal *temp, double d);
1441extern int always_gt_tint_int(const Temporal *temp, int i);
1442extern int always_gt_ttext_text(const Temporal *temp, const text *txt);
1443extern int always_le_float_tfloat(double d, const Temporal *temp);
1444extern int always_le_int_tint(int i, const Temporal *temp);
1445extern int always_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1446extern int always_le_text_ttext(const text *txt, const Temporal *temp);
1447extern int always_le_tfloat_float(const Temporal *temp, double d);
1448extern int always_le_tint_int(const Temporal *temp, int i);
1449extern int always_le_ttext_text(const Temporal *temp, const text *txt);
1450extern int always_lt_float_tfloat(double d, const Temporal *temp);
1451extern int always_lt_int_tint(int i, const Temporal *temp);
1452extern int always_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1453extern int always_lt_text_ttext(const text *txt, const Temporal *temp);
1454extern int always_lt_tfloat_float(const Temporal *temp, double d);
1455extern int always_lt_tint_int(const Temporal *temp, int i);
1456extern int always_lt_ttext_text(const Temporal *temp, const text *txt);
1457extern int always_ne_bool_tbool(bool b, const Temporal *temp);
1458extern int always_ne_float_tfloat(double d, const Temporal *temp);
1459extern int always_ne_int_tint(int i, const Temporal *temp);
1460extern int always_ne_tbool_bool(const Temporal *temp, bool b);
1461extern int always_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1462extern int always_ne_text_ttext(const text *txt, const Temporal *temp);
1463extern int always_ne_tfloat_float(const Temporal *temp, double d);
1464extern int always_ne_tint_int(const Temporal *temp, int i);
1465extern int always_ne_ttext_text(const Temporal *temp, const text *txt);
1466extern int ever_eq_bool_tbool(bool b, const Temporal *temp);
1467extern int ever_eq_float_tfloat(double d, const Temporal *temp);
1468extern int ever_eq_int_tint(int i, const Temporal *temp);
1469extern int ever_eq_tbool_bool(const Temporal *temp, bool b);
1470extern int ever_eq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1471extern int ever_eq_text_ttext(const text *txt, const Temporal *temp);
1472extern int ever_eq_tfloat_float(const Temporal *temp, double d);
1473extern int ever_eq_tint_int(const Temporal *temp, int i);
1474extern int ever_eq_ttext_text(const Temporal *temp, const text *txt);
1475extern int ever_ge_float_tfloat(double d, const Temporal *temp);
1476extern int ever_ge_int_tint(int i, const Temporal *temp);
1477extern int ever_ge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1478extern int ever_ge_text_ttext(const text *txt, const Temporal *temp);
1479extern int ever_ge_tfloat_float(const Temporal *temp, double d);
1480extern int ever_ge_tint_int(const Temporal *temp, int i);
1481extern int ever_ge_ttext_text(const Temporal *temp, const text *txt);
1482extern int ever_gt_float_tfloat(double d, const Temporal *temp);
1483extern int ever_gt_int_tint(int i, const Temporal *temp);
1484extern int ever_gt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1485extern int ever_gt_text_ttext(const text *txt, const Temporal *temp);
1486extern int ever_gt_tfloat_float(const Temporal *temp, double d);
1487extern int ever_gt_tint_int(const Temporal *temp, int i);
1488extern int ever_gt_ttext_text(const Temporal *temp, const text *txt);
1489extern int ever_le_float_tfloat(double d, const Temporal *temp);
1490extern int ever_le_int_tint(int i, const Temporal *temp);
1491extern int ever_le_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1492extern int ever_le_text_ttext(const text *txt, const Temporal *temp);
1493extern int ever_le_tfloat_float(const Temporal *temp, double d);
1494extern int ever_le_tint_int(const Temporal *temp, int i);
1495extern int ever_le_ttext_text(const Temporal *temp, const text *txt);
1496extern int ever_lt_float_tfloat(double d, const Temporal *temp);
1497extern int ever_lt_int_tint(int i, const Temporal *temp);
1498extern int ever_lt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1499extern int ever_lt_text_ttext(const text *txt, const Temporal *temp);
1500extern int ever_lt_tfloat_float(const Temporal *temp, double d);
1501extern int ever_lt_tint_int(const Temporal *temp, int i);
1502extern int ever_lt_ttext_text(const Temporal *temp, const text *txt);
1503extern int ever_ne_bool_tbool(bool b, const Temporal *temp);
1504extern int ever_ne_float_tfloat(double d, const Temporal *temp);
1505extern int ever_ne_int_tint(int i, const Temporal *temp);
1506extern int ever_ne_tbool_bool(const Temporal *temp, bool b);
1507extern int ever_ne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1508extern int ever_ne_text_ttext(const text *txt, const Temporal *temp);
1509extern int ever_ne_tfloat_float(const Temporal *temp, double d);
1510extern int ever_ne_tint_int(const Temporal *temp, int i);
1511extern int ever_ne_ttext_text(const Temporal *temp, const text *txt);
1512
1513/*****************************************************************************/
1514
1515/* Temporal comparison functions for temporal types */
1516
1517extern Temporal *teq_bool_tbool(bool b, const Temporal *temp);
1518extern Temporal *teq_float_tfloat(double d, const Temporal *temp);
1519extern Temporal *teq_int_tint(int i, const Temporal *temp);
1520extern Temporal *teq_tbool_bool(const Temporal *temp, bool b);
1521extern Temporal *teq_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1522extern Temporal *teq_text_ttext(const text *txt, const Temporal *temp);
1523extern Temporal *teq_tfloat_float(const Temporal *temp, double d);
1524extern Temporal *teq_tint_int(const Temporal *temp, int i);
1525extern Temporal *teq_ttext_text(const Temporal *temp, const text *txt);
1526extern Temporal *tge_float_tfloat(double d, const Temporal *temp);
1527extern Temporal *tge_int_tint(int i, const Temporal *temp);
1528extern Temporal *tge_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1529extern Temporal *tge_text_ttext(const text *txt, const Temporal *temp);
1530extern Temporal *tge_tfloat_float(const Temporal *temp, double d);
1531extern Temporal *tge_tint_int(const Temporal *temp, int i);
1532extern Temporal *tge_ttext_text(const Temporal *temp, const text *txt);
1533extern Temporal *tgt_float_tfloat(double d, const Temporal *temp);
1534extern Temporal *tgt_int_tint(int i, const Temporal *temp);
1535extern Temporal *tgt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1536extern Temporal *tgt_text_ttext(const text *txt, const Temporal *temp);
1537extern Temporal *tgt_tfloat_float(const Temporal *temp, double d);
1538extern Temporal *tgt_tint_int(const Temporal *temp, int i);
1539extern Temporal *tgt_ttext_text(const Temporal *temp, const text *txt);
1540extern Temporal *tle_float_tfloat(double d, const Temporal *temp);
1541extern Temporal *tle_int_tint(int i, const Temporal *temp);
1542extern Temporal *tle_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1543extern Temporal *tle_text_ttext(const text *txt, const Temporal *temp);
1544extern Temporal *tle_tfloat_float(const Temporal *temp, double d);
1545extern Temporal *tle_tint_int(const Temporal *temp, int i);
1546extern Temporal *tle_ttext_text(const Temporal *temp, const text *txt);
1547extern Temporal *tlt_float_tfloat(double d, const Temporal *temp);
1548extern Temporal *tlt_int_tint(int i, const Temporal *temp);
1549extern Temporal *tlt_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1550extern Temporal *tlt_text_ttext(const text *txt, const Temporal *temp);
1551extern Temporal *tlt_tfloat_float(const Temporal *temp, double d);
1552extern Temporal *tlt_tint_int(const Temporal *temp, int i);
1553extern Temporal *tlt_ttext_text(const Temporal *temp, const text *txt);
1554extern Temporal *tne_bool_tbool(bool b, const Temporal *temp);
1555extern Temporal *tne_float_tfloat(double d, const Temporal *temp);
1556extern Temporal *tne_int_tint(int i, const Temporal *temp);
1557extern Temporal *tne_tbool_bool(const Temporal *temp, bool b);
1558extern Temporal *tne_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1559extern Temporal *tne_text_ttext(const text *txt, const Temporal *temp);
1560extern Temporal *tne_tfloat_float(const Temporal *temp, double d);
1561extern Temporal *tne_tint_int(const Temporal *temp, int i);
1562extern Temporal *tne_ttext_text(const Temporal *temp, const text *txt);
1563
1564/*****************************************************************************
1565 * Bounding box functions for temporal types
1566 *****************************************************************************/
1567
1568/* Split functions */
1569
1570extern Span *temporal_spans(const Temporal *temp, int *count);
1571extern Span *temporal_split_each_n_spans(const Temporal *temp, int elem_count, int *count);
1572extern Span *temporal_split_n_spans(const Temporal *temp, int span_count, int *count);
1573extern TBox *tnumber_split_each_n_tboxes(const Temporal *temp, int elem_count, int *count);
1574extern TBox *tnumber_split_n_tboxes(const Temporal *temp, int box_count, int *count);
1575extern TBox *tnumber_tboxes(const Temporal *temp, int *count);
1576
1577/* Topological functions for temporal types */
1578
1579extern bool adjacent_numspan_tnumber(const Span *s, const Temporal *temp);
1580extern bool adjacent_tbox_tnumber(const TBox *box, const Temporal *temp);
1581extern bool adjacent_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1582extern bool adjacent_temporal_tstzspan(const Temporal *temp, const Span *s);
1583extern bool adjacent_tnumber_numspan(const Temporal *temp, const Span *s);
1584extern bool adjacent_tnumber_tbox(const Temporal *temp, const TBox *box);
1585extern bool adjacent_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1586extern bool adjacent_tstzspan_temporal(const Span *s, const Temporal *temp);
1587extern bool contained_numspan_tnumber(const Span *s, const Temporal *temp);
1588extern bool contained_tbox_tnumber(const TBox *box, const Temporal *temp);
1589extern bool contained_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1590extern bool contained_temporal_tstzspan(const Temporal *temp, const Span *s);
1591extern bool contained_tnumber_numspan(const Temporal *temp, const Span *s);
1592extern bool contained_tnumber_tbox(const Temporal *temp, const TBox *box);
1593extern bool contained_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1594extern bool contained_tstzspan_temporal(const Span *s, const Temporal *temp);
1595extern bool contains_numspan_tnumber(const Span *s, const Temporal *temp);
1596extern bool contains_tbox_tnumber(const TBox *box, const Temporal *temp);
1597extern bool contains_temporal_tstzspan(const Temporal *temp, const Span *s);
1598extern bool contains_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1599extern bool contains_tnumber_numspan(const Temporal *temp, const Span *s);
1600extern bool contains_tnumber_tbox(const Temporal *temp, const TBox *box);
1601extern bool contains_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1602extern bool contains_tstzspan_temporal(const Span *s, const Temporal *temp);
1603extern bool overlaps_numspan_tnumber(const Span *s, const Temporal *temp);
1604extern bool overlaps_tbox_tnumber(const TBox *box, const Temporal *temp);
1605extern bool overlaps_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1606extern bool overlaps_temporal_tstzspan(const Temporal *temp, const Span *s);
1607extern bool overlaps_tnumber_numspan(const Temporal *temp, const Span *s);
1608extern bool overlaps_tnumber_tbox(const Temporal *temp, const TBox *box);
1609extern bool overlaps_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1610extern bool overlaps_tstzspan_temporal(const Span *s, const Temporal *temp);
1611extern bool same_numspan_tnumber(const Span *s, const Temporal *temp);
1612extern bool same_tbox_tnumber(const TBox *box, const Temporal *temp);
1613extern bool same_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1614extern bool same_temporal_tstzspan(const Temporal *temp, const Span *s);
1615extern bool same_tnumber_numspan(const Temporal *temp, const Span *s);
1616extern bool same_tnumber_tbox(const Temporal *temp, const TBox *box);
1617extern bool same_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1618extern bool same_tstzspan_temporal(const Span *s, const Temporal *temp);
1619
1620/*****************************************************************************/
1621
1622/* Position functions for temporal types */
1623
1624extern bool after_tbox_tnumber(const TBox *box, const Temporal *temp);
1625extern bool after_temporal_tstzspan(const Temporal *temp, const Span *s);
1626extern bool after_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1627extern bool after_tnumber_tbox(const Temporal *temp, const TBox *box);
1628extern bool after_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1629extern bool after_tstzspan_temporal(const Span *s, const Temporal *temp);
1630extern bool before_tbox_tnumber(const TBox *box, const Temporal *temp);
1631extern bool before_temporal_tstzspan(const Temporal *temp, const Span *s);
1632extern bool before_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1633extern bool before_tnumber_tbox(const Temporal *temp, const TBox *box);
1634extern bool before_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1635extern bool before_tstzspan_temporal(const Span *s, const Temporal *temp);
1636extern bool left_tbox_tnumber(const TBox *box, const Temporal *temp);
1637extern bool left_numspan_tnumber(const Span *s, const Temporal *temp);
1638extern bool left_tnumber_numspan(const Temporal *temp, const Span *s);
1639extern bool left_tnumber_tbox(const Temporal *temp, const TBox *box);
1640extern bool left_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1641extern bool overafter_tbox_tnumber(const TBox *box, const Temporal *temp);
1642extern bool overafter_temporal_tstzspan(const Temporal *temp, const Span *s);
1643extern bool overafter_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1644extern bool overafter_tnumber_tbox(const Temporal *temp, const TBox *box);
1645extern bool overafter_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1646extern bool overafter_tstzspan_temporal(const Span *s, const Temporal *temp);
1647extern bool overbefore_tbox_tnumber(const TBox *box, const Temporal *temp);
1648extern bool overbefore_temporal_tstzspan(const Temporal *temp, const Span *s);
1649extern bool overbefore_temporal_temporal(const Temporal *temp1, const Temporal *temp2);
1650extern bool overbefore_tnumber_tbox(const Temporal *temp, const TBox *box);
1651extern bool overbefore_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1652extern bool overbefore_tstzspan_temporal(const Span *s, const Temporal *temp);
1653extern bool overleft_numspan_tnumber(const Span *s, const Temporal *temp);
1654extern bool overleft_tbox_tnumber(const TBox *box, const Temporal *temp);
1655extern bool overleft_tnumber_numspan(const Temporal *temp, const Span *s);
1656extern bool overleft_tnumber_tbox(const Temporal *temp, const TBox *box);
1657extern bool overleft_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1658extern bool overright_numspan_tnumber(const Span *s, const Temporal *temp);
1659extern bool overright_tbox_tnumber(const TBox *box, const Temporal *temp);
1660extern bool overright_tnumber_numspan(const Temporal *temp, const Span *s);
1661extern bool overright_tnumber_tbox(const Temporal *temp, const TBox *box);
1662extern bool overright_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1663extern bool right_numspan_tnumber(const Span *s, const Temporal *temp);
1664extern bool right_tbox_tnumber(const TBox *box, const Temporal *temp);
1665extern bool right_tnumber_numspan(const Temporal *temp, const Span *s);
1666extern bool right_tnumber_tbox(const Temporal *temp, const TBox *box);
1667extern bool right_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1668
1669/*****************************************************************************
1670 * Boolean functions for temporal types
1671 *****************************************************************************/
1672
1673extern Temporal *tand_bool_tbool(bool b, const Temporal *temp);
1674extern Temporal *tand_tbool_bool(const Temporal *temp, bool b);
1675extern Temporal *tand_tbool_tbool(const Temporal *temp1, const Temporal *temp2);
1676extern SpanSet *tbool_when_true(const Temporal *temp);
1677extern Temporal *tnot_tbool(const Temporal *temp);
1678extern Temporal *tor_bool_tbool(bool b, const Temporal *temp);
1679extern Temporal *tor_tbool_bool(const Temporal *temp, bool b);
1680extern Temporal *tor_tbool_tbool(const Temporal *temp1, const Temporal *temp2);
1681
1682/*****************************************************************************
1683 * Mathematical functions for temporal types
1684 *****************************************************************************/
1685
1686extern Temporal *add_float_tfloat(double d, const Temporal *tnumber);
1687extern Temporal *add_int_tint(int i, const Temporal *tnumber);
1688extern Temporal *add_tfloat_float(const Temporal *tnumber, double d);
1689extern Temporal *add_tint_int(const Temporal *tnumber, int i);
1690extern Temporal *add_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1691extern Temporal *div_float_tfloat(double d, const Temporal *tnumber);
1692extern Temporal *div_int_tint(int i, const Temporal *tnumber);
1693extern Temporal *div_tfloat_float(const Temporal *tnumber, double d);
1694extern Temporal *div_tint_int(const Temporal *tnumber, int i);
1695extern Temporal *div_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1696extern Temporal *mult_float_tfloat(double d, const Temporal *tnumber);
1697extern Temporal *mult_int_tint(int i, const Temporal *tnumber);
1698extern Temporal *mult_tfloat_float(const Temporal *tnumber, double d);
1699extern Temporal *mult_tint_int(const Temporal *tnumber, int i);
1700extern Temporal *mult_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1701extern Temporal *sub_float_tfloat(double d, const Temporal *tnumber);
1702extern Temporal *sub_int_tint(int i, const Temporal *tnumber);
1703extern Temporal *sub_tfloat_float(const Temporal *tnumber, double d);
1704extern Temporal *sub_tint_int(const Temporal *tnumber, int i);
1705extern Temporal *sub_tnumber_tnumber(const Temporal *tnumber1, const Temporal *tnumber2);
1706extern Temporal *temporal_derivative(const Temporal *temp);
1707extern Temporal *tfloat_exp(const Temporal *temp);
1708extern Temporal *tfloat_ln(const Temporal *temp);
1709extern Temporal *tfloat_log10(const Temporal *temp);
1710extern Temporal *tnumber_abs(const Temporal *temp);
1711extern double float_angular_difference(double degrees1, double degrees2);
1712extern Temporal *tnumber_angular_difference(const Temporal *temp);
1713extern Temporal *tnumber_delta_value(const Temporal *temp);
1714
1715/*****************************************************************************
1716 * Text functions for temporal types
1717 *****************************************************************************/
1718
1719extern Temporal *textcat_text_ttext(const text *txt, const Temporal *temp);
1720extern Temporal *textcat_ttext_text(const Temporal *temp, const text *txt);
1721extern Temporal *textcat_ttext_ttext(const Temporal *temp1, const Temporal *temp2);
1722extern Temporal *ttext_initcap(const Temporal *temp);
1723extern Temporal *ttext_upper(const Temporal *temp);
1724extern Temporal *ttext_lower(const Temporal *temp);
1725
1726/*****************************************************************************
1727 * Distance functions for temporal types
1728 *****************************************************************************/
1729
1730extern Temporal *tdistance_tfloat_float(const Temporal *temp, double d);
1731extern Temporal *tdistance_tint_int(const Temporal *temp, int i);
1732extern Temporal *tdistance_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2);
1733extern double nad_tboxfloat_tboxfloat(const TBox *box1, const TBox *box2);
1734extern int nad_tboxint_tboxint(const TBox *box1, const TBox *box2);
1735extern double nad_tfloat_float(const Temporal *temp, double d);
1736extern double nad_tfloat_tfloat(const Temporal *temp1, const Temporal *temp2);
1737extern double nad_tfloat_tbox(const Temporal *temp, const TBox *box);
1738extern int nad_tint_int(const Temporal *temp, int i);
1739extern int nad_tint_tbox(const Temporal *temp, const TBox *box);
1740extern int nad_tint_tint(const Temporal *temp1, const Temporal *temp2);
1741
1742/*****************************************************************************
1743 * Aggregate functions for temporal types
1744 *****************************************************************************/
1745
1746extern SkipList *tbool_tand_transfn(SkipList *state, const Temporal *temp);
1747extern SkipList *tbool_tor_transfn(SkipList *state, const Temporal *temp);
1748extern Span *temporal_extent_transfn(Span *s, const Temporal *temp);
1751extern SkipList *tfloat_tmax_transfn(SkipList *state, const Temporal *temp);
1752extern SkipList *tfloat_tmin_transfn(SkipList *state, const Temporal *temp);
1753extern SkipList *tfloat_tsum_transfn(SkipList *state, const Temporal *temp);
1754extern SkipList *tfloat_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1755extern SkipList *tfloat_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1756extern SkipList *tfloat_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1758extern SkipList *tint_tmax_transfn(SkipList *state, const Temporal *temp);
1759extern SkipList *tint_tmin_transfn(SkipList *state, const Temporal *temp);
1760extern SkipList *tint_tsum_transfn(SkipList *state, const Temporal *temp);
1761extern SkipList *tint_wmax_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1762extern SkipList *tint_wmin_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1763extern SkipList *tint_wsum_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1764extern TBox *tnumber_extent_transfn(TBox *box, const Temporal *temp);
1766extern SkipList *tnumber_tavg_transfn(SkipList *state, const Temporal *temp);
1767extern SkipList *tnumber_wavg_transfn(SkipList *state, const Temporal *temp, const Interval *interv);
1771extern SkipList *ttext_tmax_transfn(SkipList *state, const Temporal *temp);
1772extern SkipList *ttext_tmin_transfn(SkipList *state, const Temporal *temp);
1773
1774/*****************************************************************************
1775 * Analytics functions for temporal types
1776 *****************************************************************************/
1777
1778/* Simplification functions for temporal types */
1779
1780extern Temporal *temporal_simplify_dp(const Temporal *temp, double eps_dist, bool synchronized);
1781extern Temporal *temporal_simplify_max_dist(const Temporal *temp, double eps_dist, bool synchronized);
1782extern Temporal *temporal_simplify_min_dist(const Temporal *temp, double dist);
1783extern Temporal *temporal_simplify_min_tdelta(const Temporal *temp, const Interval *mint);
1784
1785/*****************************************************************************/
1786
1787/* Reduction functions for temporal types */
1788
1789extern Temporal *temporal_tprecision(const Temporal *temp, const Interval *duration, TimestampTz origin);
1790extern Temporal *temporal_tsample(const Temporal *temp, const Interval *duration, TimestampTz origin, interpType interp);
1791
1792/*****************************************************************************/
1793
1794/* Similarity functions for temporal types */
1795
1796extern double temporal_dyntimewarp_distance(const Temporal *temp1, const Temporal *temp2);
1797extern Match *temporal_dyntimewarp_path(const Temporal *temp1, const Temporal *temp2, int *count);
1798extern double temporal_frechet_distance(const Temporal *temp1, const Temporal *temp2);
1799extern Match *temporal_frechet_path(const Temporal *temp1, const Temporal *temp2, int *count);
1800extern double temporal_hausdorff_distance(const Temporal *temp1, const Temporal *temp2);
1801
1802/*****************************************************************************/
1803
1804/* Tile functions for temporal types */
1805
1806extern Span *temporal_time_bins(const Temporal *temp, const Interval *duration, TimestampTz origin, int *count);
1807extern Temporal **temporal_time_split(const Temporal *temp, const Interval *duration, TimestampTz torigin, TimestampTz **time_bins, int *count);
1808extern TBox *tfloat_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count);
1809extern Span *tfloat_value_bins(const Temporal *temp, double vsize, double vorigin, int *count);
1810extern TBox *tfloat_value_boxes(const Temporal *temp, double vsize, double vorigin, int *count);
1811extern Temporal **tfloat_value_split(const Temporal *temp, double size, double origin, double **bins, int *count);
1812extern TBox *tfloat_value_time_boxes(const Temporal *temp, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count);
1813extern 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);
1814extern TBox *tfloatbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count);
1815extern TBox *tfloatbox_value_tiles(const TBox *box, double vsize, double vorigin, int *count);
1816extern TBox *tfloatbox_value_time_tiles(const TBox *box, double vsize, const Interval *duration, double vorigin, TimestampTz torigin, int *count);
1817extern TBox *tint_time_boxes(const Temporal *temp, const Interval *duration, TimestampTz torigin, int *count);
1818extern Span *tint_value_bins(const Temporal *temp, int vsize, int vorigin, int *count);
1819extern TBox *tint_value_boxes(const Temporal *temp, int vsize, int vorigin, int *count);
1820extern Temporal **tint_value_split(const Temporal *temp, int vsize, int vorigin, int **value_bins, int *count);
1821extern TBox *tint_value_time_boxes(const Temporal *temp, int vsize, const Interval *duration, int vorigin, TimestampTz torigin, int *count);
1822extern 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);
1823extern TBox *tintbox_time_tiles(const TBox *box, const Interval *duration, TimestampTz torigin, int *count);
1824extern TBox *tintbox_value_tiles(const TBox *box, int xsize, int xorigin, int *count);
1825extern TBox *tintbox_value_time_tiles(const TBox *box, int xsize, const Interval *duration, int xorigin, TimestampTz torigin, int *count);
1826
1827/*****************************************************************************/
1828
1829#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
DateADT pg_date_in(const char *str)
Return a date from its string representation.
Definition: postgres_types.c:608
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:2408
double float_angular_difference(double degrees1, double degrees2)
Return the angular difference, i.e., the smaller angle between the two degree values.
Definition: tnumber_mathfuncs.c:489
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:1894
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:758
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:1991
char * text2cstring(const text *txt)
Convert a text into a C string.
Definition: postgres_types.c:2269
char * pg_interval_out(const Interval *interv)
Return the string representation of an interval.
Definition: postgres_types.c:1802
int text_cmp(const text *txt1, const text *txt2)
Comparison function for text values.
Definition: postgres_types.c:2306
char * pg_date_out(DateADT d)
Return the string representation of a date.
Definition: postgres_types.c:711
double float_exp(double d)
Return the exponential of a double.
Definition: tnumber_mathfuncs.c:605
text * textcat_text_text(const text *txt1, const text *txt2)
Return the concatenation of the two text values.
Definition: postgres_types.c:2339
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:1750
Interval * minus_timestamptz_timestamptz(TimestampTz t1, TimestampTz t2)
Return the subtraction of two timestamptz values.
Definition: postgres_types.c:2044
text * text_upper(const text *txt)
Return the text value transformed to uppercase.
Definition: postgres_types.c:2440
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:686
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:2125
text * text_copy(const text *txt)
Copy a text value.
Definition: postgres_types.c:2322
text * cstring2text(const char *str)
Convert a C string into a text.
Definition: postgres_types.c:2250
Interval * pg_interval_in(const char *str, int32 typmod)
Return an interval from its string representation.
Definition: postgres_types.c:1654
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:1841
text * text_initcap(const text *txt)
Convert the text value to initcap.
Definition: postgres_types.c:2472
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:1524
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:1541
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:1558
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:1575
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:1507
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:1804
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:1791
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:1778
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:1765
bool tbox_eq(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are equal.
Definition: tbox.c:1691
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:1727
bool tbox_ne(const TBox *box1, const TBox *box2)
Return true if two temporal boxes are different.
Definition: tbox.c:1713
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:1662
TBox * union_tbox_tbox(const TBox *box1, const TBox *box2, bool strict)
Return the union of two temporal boxes.
Definition: tbox.c:1597
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:776
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:548
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:875
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:1573
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:1206
bool spanset_upper_inc(const SpanSet *ss)
Return true if the upper bound of a span set is inclusive.
Definition: spanset.c:605
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:975
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:702
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:1185
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:1005
Span ** spanset_spanarr(const SpanSet *ss)
Return a C array with copies of the spans of a span set.
Definition: spanset.c:1039
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:718
int tstzspanset_num_timestamps(const SpanSet *ss)
Return the number of timestamps of a span set.
Definition: spanset.c:800
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:646
int spanset_num_spans(const SpanSet *ss)
Return the number of spans of a span set.
Definition: spanset.c:960
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:673
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:631
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:1551
Span * spanset_end_span(const SpanSet *ss)
Return a copy of the end span of a span set.
Definition: spanset.c:990
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:841
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:591
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:857
DateADT datespanset_end_date(const SpanSet *ss)
Return the end date of a span set.
Definition: spanset.c:734
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:929
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:752
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:1269
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:1332
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:1383
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:1420
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:1098
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:1167
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:1507
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:1083
bool set_eq(const Set *s1, const Set *s2)
Return true if the two sets are equal.
Definition: set.c:1060
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:1494
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:1131
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:1458
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:1532
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:1520
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:1443
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:1155
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:1143
SpanSet * spanset_copy(const SpanSet *ss)
Return a copy of a span set.
Definition: spanset.c:371
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:502
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:334
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:573
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:445
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:495
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:428
Set * tstzset_to_dateset(const Set *s)
Convert a timestamptz set into a date set.
Definition: set.c:592
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:461
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:555
SpanSet * tstzspanset_to_datespanset(const SpanSet *ss)
Convert a timestamptz span set into a date span set.
Definition: spanset.c:512
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:537
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:478
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:1164
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:1122
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:1142
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:871
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:831
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:1234
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:730
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:814
Set * textset_initcap(const Set *s)
Return a text set transformed to initcap.
Definition: set.c:883
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:801
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:972
Set * textset_lower(const Set *s)
Return a text set transformed to lowercase.
Definition: set.c:859
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:1063
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:790
SpanSet * floatspanset_floor(const SpanSet *ss)
Return a float span set rounded down to the nearest integer.
Definition: spanset.c:1103
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:3353
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:3057
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:3013
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:3083
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:1501
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:701
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:932
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:1258
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:1671
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:1101
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:3298
bool temporal_ne(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are different.
Definition: temporal.c:3208
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:3311
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:3224
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:3336
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:3324
bool temporal_eq(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal values are equal.
Definition: temporal.c:3112
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:1056
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
Temporal * tdistance_tnumber_tnumber(const Temporal *temp1, const Temporal *temp2)
Return the temporal distance between two temporal numbers.
Definition: tnumber_distance.c:145
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
Temporal * tdistance_tint_int(const Temporal *temp, int i)
Return the temporal distance between a temporal integer and an integer.
Definition: tnumber_distance_meos.c:64
Temporal * tdistance_tfloat_float(const Temporal *temp, double d)
Return the temporal distance between a temporal float and a float.
Definition: tnumber_distance_meos.c:80
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
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
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 * 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:728
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:661
Temporal * temporal_derivative(const Temporal *temp)
Return the derivative of a temporal value.
Definition: temporal.c:2845
Temporal * tnumber_abs(const Temporal *temp)
Return the absolute value of a temporal number.
Definition: tnumber_mathfuncs.c:342
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:577
Temporal * tfloat_log10(const Temporal *temp)
Return the natural logarithm of a double.
Definition: tnumber_mathfuncs.c:801
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 * 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:448
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:1599
Temporal * temporal_merge_array(const Temporal **temparr, int count)
Merge an array of temporal values.
Definition: temporal_modif.c:703
Temporal * temporal_append_tsequence(Temporal *temp, const TSequence *seq, bool expand)
Append a sequence to a temporal value.
Definition: temporal_modif.c:2243
Temporal * temporal_insert(const Temporal *temp1, const Temporal *temp2, bool connect)
Insert the second temporal value into the first one.
Definition: temporal_modif.c:1526
Temporal * temporal_merge(const Temporal *temp1, const Temporal *temp2)
Merge two temporal values.
Definition: temporal_modif.c:616
Temporal * temporal_update(const Temporal *temp1, const Temporal *temp2, bool connect)
Update the first temporal value with the second one.
Definition: temporal_modif.c:1572
Temporal * temporal_delete_tstzspan(const Temporal *temp, const Span *s, bool connect)
Delete a timestamptz span from a temporal value.
Definition: temporal_modif.c:1664
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:2201
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:1632
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:1696
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
char * pg_timestamp_out(Timestamp t)
Definition: postgres_types.c:1412
bool meos_set_datestyle(const char *newval, void *extra)
Set the DateStyle.
Definition: meos.c:474
char * pg_time_out(TimeADT t)
TimestampTz pg_timestamptz_in(const char *str, int32 typmod)
Definition: postgres_types.c:1351
void meos_finalize_ways(void)
Destroy the ways cache.
Definition: ways_meos.c:149
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
int pg_interval_cmp(const Interval *interv1, const Interval *interv2)
Definition: postgres_types.c:2204
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
Timestamp pg_timestamp_in(const char *str, int32 typmod)
Definition: postgres_types.c:1330
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
char * pg_timestamptz_out(TimestampTz t)
Definition: postgres_types.c:1429
TimeADT pg_time_in(const char *str, int32 typmod)
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
int64 TimeADT
Definition: postgres_ext_defs.in.h:20
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