/* Copyright HCL Technologies Ltd. 2017. All Rights Reserved. */ /****************************************************************************/ /* */ /* Licensed Materials - Property of IBM */ /* */ /* "Restricted Materials of IBM" */ /* */ /* IBM Informix TimeSeries DataBlade */ /* (c) Copyright IBM Corporation 1996-2014 All rights reserved. */ /* */ /****************************************************************************/ /* Title: tseries.h * * Public header for time series */ #ifndef _TSERIES_H_ #define _TSERIES_H_ #include "mi.h" #define TS_API_VERSION 1 typedef struct _ts_tscan ts_tscan; typedef mi_lvarchar ts_timeseries; typedef struct _ts_tselem MI_FAR *ts_tselem; typedef struct _ts_tsdesc ts_tsdesc; # ifndef _TS_AM_H_ typedef struct _ts_elem_desc_struc TS_ELEM_DESC; /* defines for compares */ # define TS_LT 1 # define TS_LE 2 # define TS_EQ 3 # define TS_GE 4 # define TS_GT 5 /* defines for return values */ # define TS_ERROR -1 # define TS_SUCCESS 0 # define TS_HAVE_DUP 1 /* args for writing */ # define TS_PUT_PUT 1 # define TS_PUT_INSERT 2 # define TS_PUT_UPDATE 3 # define TS_PUT_DELETE 4 # define TS_PUT_NODUPS 5 # endif # ifndef _TS_AMDESC_H_ typedef struct _ts_amdesc ts_amdesc; # endif typedef struct _ts_typeinfo { MI_TYPEID *ti_typeid; /* type oid */ mi_integer ti_typelen; /* internal length */ mi_smallint ti_typealign; /* internal alignment */ mi_smallint ti_typebyvalue; /* internal byvalue flag */ mi_integer ti_typebound; /* internal bound */ mi_integer ti_typeparameter; /* internal parameter */ mi_string MI_FAR *ti_typename; /* name of the type */ } ts_typeinfo; /* * flags which may be passed to ts_begin_scan */ #define TS_OUTPUT_BSON_TO_JSON 0x0800 /* output json instead of bson */ #define TS_SCAN_DISCREET 0x0400 #define TS_SCAN_HIDDEN 0x0200 #define TS_SCAN_EXACT_START 0x0100 #define TS_SCAN_EXACT_END 0x0080 #define TS_SCAN_FIRST 0x0040 /* used internally */ #define TS_SCAN_NO_NULLS 0x0020 #define TS_SCAN_SKIP_END 0x0010 #define TS_SCAN_SKIP_BEGIN 0x0008 #define TS_SCAN_SKIP_HIDDEN 0x0004 #define TS_SCAN_ALL_FLAGS (TS_SCAN_SKIP_HIDDEN | TS_SCAN_SKIP_BEGIN | TS_SCAN_SKIP_END | TS_SCAN_NO_NULLS | TS_SCAN_EXACT_END | TS_SCAN_EXACT_START | TS_SCAN_HIDDEN | TS_SCAN_DISCREET | TS_OUTPUT_BSON_TO_JSON) /* * Possible returns from ts_next */ #define TS_SCAN_EOS 0x1 #define TS_SCAN_NULL 0x2 #define TS_SCAN_ELEM 0x4 /* * flags which may be passed to ts_create */ #define TS_CREATE_IRR 0x01 #define TS_CREATE_IRR_HERTZ 0x02 #define TS_CREATE_IRR_COMPRESS 0x04 /* * flags returned in the null pointer argument to * ts_elem, ts_last_elem, ts_first_elem, etc... */ #define TS_NULL_NOTALLOCED 0x01 #define TS_NULL_HIDDEN 0x02 /* idsdb00493927: ensure the macro returns 0 for false and 1 for true */ #define TS_ELEM_HIDDEN(isnull) ((mi_boolean) ((((mi_integer) (isnull)) & TS_NULL_HIDDEN) ? MI_TRUE : MI_FALSE)) #define TS_ELEM_NULL(isnull) ((mi_boolean) ((((mi_integer) (isnull)) & TS_NULL_NOTALLOCED) ? MI_TRUE : MI_FALSE)) /* * flags for ts_closest_elem function */ #define TS_CLOSEST_NO_FLAGS 0x0 #define TS_CLOSEST_RETNULLS_FLAGS 0x40 /* values for ts_get_flags() */ #define TSFLAGS_IRR 0x01 #define TSFLAGS_INMEM 0x02 #define TSFLAGS_ASSIGNED 0x04 #define TSFLAGS_UPGRADE_XC1_XC4 0x08 #define TSFLAGS_PACKED 0x10 /* packed elements (compressed or hertz) */ #define TSFLAGS_COMPRESSED 0x20 /* compressed elements */ #define TSFLAGS_HERTZ 0x40 /* hertz elements */ #define TSFLAGS_PACKEDV2 0x80 /* version 2 of compressed and hertz */ #define TSFLAGS_HERTZ_HIGHBITS 0x700 /* hertz range from 256->2047 */ /* values for ts_container_lock_sql() */ #define TS_SHARED 0x0 #define TS_EXCLUSIVE 0x1 /* values for flags passed to ts_open */ #define TSOPEN_RDWRITE 0x0000 #define TSOPEN_READ_HIDDEN 0x0001 #define TSOPEN_WRITE_HIDDEN 0x0002 #define TSOPEN_WRITE_AND_HIDE 0x0004 #define TSOPEN_WRITE_AND_REVEAL 0x0008 #define TSOPEN_READ_ONLY 0x0010 #define TSOPEN_NO_NULLS 0x0020 #define TSOPEN_DISCREET 0x0040 #define TSOPEN_REDUCED_LOG_INTERNAL 0x0080 #define TSOPEN_REDUCED_LOG 0x0100 #define TSOPEN_PACKED_FLUSH 0x0200 #define TSOPEN_WRITE_FLAGS (TSOPEN_WRITE_AND_HIDE | TSOPEN_WRITE_AND_REVEAL | TSOPEN_WRITE_HIDDEN) #define TSOPEN_ALL_FLAGS (TSOPEN_WRITE_AND_HIDE | TSOPEN_READ_HIDDEN | TSOPEN_WRITE_AND_REVEAL | TSOPEN_READ_ONLY | TSOPEN_WRITE_HIDDEN | TSOPEN_NO_NULLS | TSOPEN_DISCREET | TSOPEN_REDUCED_LOG_INTERNAL | TSOPEN_REDUCED_LOG | TSOPEN_PACKED_FLUSH) /* allowable interval arguments to ts_tstamp_{plus,minus,difference} funcs */ #define TS_SECOND 30 #define TS_MINUTE 40 #define TS_HOUR 50 #define TS_DAY 60 #define TS_WEEK 70 #define TS_MONTH 80 #define TS_YEAR 90 /* * heuristic flags raised when timeseries has element * deleted. */ #define TSFLAGS_DEL 0x4 #define TS_IS_IRREGULAR(ts) ((mi_boolean) ts_get_flags(ts) & TSFLAGS_IRR) #define TS_IS_INCONTAINER(ts) ((mi_boolean) !(ts_get_flags(ts) & TSFLAGS_INMEM)) #define TS_MAX_ELEM_SIZE (0x8000 - 64) EXTERNC_BEGIN /* * functions that operate directly on, or produce, * timeseries. */ #include "ts_pubprotos.h" EXTERNC_END #endif