tseries.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /* Copyright HCL Technologies Ltd. 2017. All Rights Reserved. */
  2. /****************************************************************************/
  3. /* */
  4. /* Licensed Materials - Property of IBM */
  5. /* */
  6. /* "Restricted Materials of IBM" */
  7. /* */
  8. /* IBM Informix TimeSeries DataBlade */
  9. /* (c) Copyright IBM Corporation 1996-2014 All rights reserved. */
  10. /* */
  11. /****************************************************************************/
  12. /* Title: tseries.h
  13. *
  14. * Public header for time series
  15. */
  16. #ifndef _TSERIES_H_
  17. #define _TSERIES_H_
  18. #include "mi.h"
  19. #define TS_API_VERSION 1
  20. typedef struct _ts_tscan ts_tscan;
  21. typedef mi_lvarchar ts_timeseries;
  22. typedef struct _ts_tselem MI_FAR *ts_tselem;
  23. typedef struct _ts_tsdesc ts_tsdesc;
  24. # ifndef _TS_AM_H_
  25. typedef struct _ts_elem_desc_struc TS_ELEM_DESC;
  26. /* defines for compares */
  27. # define TS_LT 1
  28. # define TS_LE 2
  29. # define TS_EQ 3
  30. # define TS_GE 4
  31. # define TS_GT 5
  32. /* defines for return values */
  33. # define TS_ERROR -1
  34. # define TS_SUCCESS 0
  35. # define TS_HAVE_DUP 1
  36. /* args for writing */
  37. # define TS_PUT_PUT 1
  38. # define TS_PUT_INSERT 2
  39. # define TS_PUT_UPDATE 3
  40. # define TS_PUT_DELETE 4
  41. # define TS_PUT_NODUPS 5
  42. # endif
  43. # ifndef _TS_AMDESC_H_
  44. typedef struct _ts_amdesc ts_amdesc;
  45. # endif
  46. typedef struct _ts_typeinfo {
  47. MI_TYPEID *ti_typeid; /* type oid */
  48. mi_integer ti_typelen; /* internal length */
  49. mi_smallint ti_typealign; /* internal alignment */
  50. mi_smallint ti_typebyvalue; /* internal byvalue flag */
  51. mi_integer ti_typebound; /* internal bound */
  52. mi_integer ti_typeparameter; /* internal parameter */
  53. mi_string MI_FAR *ti_typename; /* name of the type */
  54. } ts_typeinfo;
  55. /*
  56. * flags which may be passed to ts_begin_scan
  57. */
  58. #define TS_OUTPUT_BSON_TO_JSON 0x0800 /* output json instead of bson */
  59. #define TS_SCAN_DISCREET 0x0400
  60. #define TS_SCAN_HIDDEN 0x0200
  61. #define TS_SCAN_EXACT_START 0x0100
  62. #define TS_SCAN_EXACT_END 0x0080
  63. #define TS_SCAN_FIRST 0x0040 /* used internally */
  64. #define TS_SCAN_NO_NULLS 0x0020
  65. #define TS_SCAN_SKIP_END 0x0010
  66. #define TS_SCAN_SKIP_BEGIN 0x0008
  67. #define TS_SCAN_SKIP_HIDDEN 0x0004
  68. #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)
  69. /*
  70. * Possible returns from ts_next
  71. */
  72. #define TS_SCAN_EOS 0x1
  73. #define TS_SCAN_NULL 0x2
  74. #define TS_SCAN_ELEM 0x4
  75. /*
  76. * flags which may be passed to ts_create
  77. */
  78. #define TS_CREATE_IRR 0x01
  79. #define TS_CREATE_IRR_HERTZ 0x02
  80. #define TS_CREATE_IRR_COMPRESS 0x04
  81. /*
  82. * flags returned in the null pointer argument to
  83. * ts_elem, ts_last_elem, ts_first_elem, etc...
  84. */
  85. #define TS_NULL_NOTALLOCED 0x01
  86. #define TS_NULL_HIDDEN 0x02
  87. /* idsdb00493927: ensure the macro returns 0 for false and 1 for true */
  88. #define TS_ELEM_HIDDEN(isnull) ((mi_boolean) ((((mi_integer) (isnull)) & TS_NULL_HIDDEN) ? MI_TRUE : MI_FALSE))
  89. #define TS_ELEM_NULL(isnull) ((mi_boolean) ((((mi_integer) (isnull)) & TS_NULL_NOTALLOCED) ? MI_TRUE : MI_FALSE))
  90. /*
  91. * flags for ts_closest_elem function
  92. */
  93. #define TS_CLOSEST_NO_FLAGS 0x0
  94. #define TS_CLOSEST_RETNULLS_FLAGS 0x40
  95. /* values for ts_get_flags() */
  96. #define TSFLAGS_IRR 0x01
  97. #define TSFLAGS_INMEM 0x02
  98. #define TSFLAGS_ASSIGNED 0x04
  99. #define TSFLAGS_UPGRADE_XC1_XC4 0x08
  100. #define TSFLAGS_PACKED 0x10 /* packed elements (compressed or hertz) */
  101. #define TSFLAGS_COMPRESSED 0x20 /* compressed elements */
  102. #define TSFLAGS_HERTZ 0x40 /* hertz elements */
  103. #define TSFLAGS_PACKEDV2 0x80 /* version 2 of compressed and hertz */
  104. #define TSFLAGS_HERTZ_HIGHBITS 0x700 /* hertz range from 256->2047 */
  105. /* values for ts_container_lock_sql() */
  106. #define TS_SHARED 0x0
  107. #define TS_EXCLUSIVE 0x1
  108. /* values for flags passed to ts_open */
  109. #define TSOPEN_RDWRITE 0x0000
  110. #define TSOPEN_READ_HIDDEN 0x0001
  111. #define TSOPEN_WRITE_HIDDEN 0x0002
  112. #define TSOPEN_WRITE_AND_HIDE 0x0004
  113. #define TSOPEN_WRITE_AND_REVEAL 0x0008
  114. #define TSOPEN_READ_ONLY 0x0010
  115. #define TSOPEN_NO_NULLS 0x0020
  116. #define TSOPEN_DISCREET 0x0040
  117. #define TSOPEN_REDUCED_LOG_INTERNAL 0x0080
  118. #define TSOPEN_REDUCED_LOG 0x0100
  119. #define TSOPEN_PACKED_FLUSH 0x0200
  120. #define TSOPEN_WRITE_FLAGS (TSOPEN_WRITE_AND_HIDE | TSOPEN_WRITE_AND_REVEAL | TSOPEN_WRITE_HIDDEN)
  121. #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)
  122. /* allowable interval arguments to ts_tstamp_{plus,minus,difference} funcs */
  123. #define TS_SECOND 30
  124. #define TS_MINUTE 40
  125. #define TS_HOUR 50
  126. #define TS_DAY 60
  127. #define TS_WEEK 70
  128. #define TS_MONTH 80
  129. #define TS_YEAR 90
  130. /*
  131. * heuristic flags raised when timeseries has element
  132. * deleted.
  133. */
  134. #define TSFLAGS_DEL 0x4
  135. #define TS_IS_IRREGULAR(ts) ((mi_boolean) ts_get_flags(ts) & TSFLAGS_IRR)
  136. #define TS_IS_INCONTAINER(ts) ((mi_boolean) !(ts_get_flags(ts) & TSFLAGS_INMEM))
  137. #define TS_MAX_ELEM_SIZE (0x8000 - 64)
  138. EXTERNC_BEGIN
  139. /*
  140. * functions that operate directly on, or produce,
  141. * timeseries.
  142. */
  143. #include "ts_pubprotos.h"
  144. EXTERNC_END
  145. #endif