ts_pubprotos.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. /*
  2. *
  3. * Licensed Materials - Property of IBM and/or HCL
  4. *
  5. * IBM Informix TimeSeries DataBlade
  6. * (c) Copyright IBM Corporation 1996, 2013
  7. * (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved.
  8. *
  9. */
  10. /* Title: ts_pubprotos.h
  11. *
  12. * Public header for time series public procedure prototypes.
  13. *
  14. * This header is not stand-alone. It is designed to be included
  15. * indirectly through tseries.h.
  16. */
  17. #ifndef _TS_PUBPROTOS_H_
  18. #define _TS_PUBPROTOS_H_
  19. mi_integer ts_datetime_cmp( mi_datetime *tstamp1, mi_datetime *tstamp2);
  20. mi_datetime *
  21. ts_make_stamp(MI_CONNECTION * conn, mi_datetime * ts, mi_integer year, mi_integer month, mi_integer day, mi_integer hour, mi_integer minute, mi_integer second, mi_integer ms);
  22. void
  23. ts_get_stamp_fields(MI_CONNECTION * conn, mi_datetime * ts, mi_integer * year, mi_integer * month, mi_integer * day, mi_integer * hour, mi_integer * minute, mi_integer * second, mi_integer * ms);
  24. ts_tscan *ts_begin_scan(ts_tsdesc *tsdesc, mi_integer flags, mi_datetime *start, mi_datetime *end);
  25. mi_integer ts_next(ts_tscan *tscan, ts_tselem *tselem);
  26. mi_integer ts_current_offset(ts_tscan *tscan);
  27. mi_datetime *ts_current_timestamp(ts_tscan *tscan);
  28. MI_DATUM ts_get_col_by_name(ts_tsdesc *tsdesc, ts_tselem tselem, mi_string *colname, mi_boolean *isNull, mi_integer off);
  29. MI_DATUM ts_get_col_by_number(ts_tsdesc *tsdesc, ts_tselem tselem, mi_integer colnumber, mi_boolean *isNull, mi_integer off);
  30. void ts_end_scan(ts_tscan *tscan);
  31. ts_timeseries *ts_create(MI_CONNECTION *conn, mi_string *calname, mi_datetime *origin, mi_integer threshold, mi_integer flags, MI_TYPEID *ts_typeid, mi_integer nelems, mi_string *container, ...);
  32. ts_timeseries *ts_create_with_metadata(MI_CONNECTION * conn, mi_string * calname, mi_datetime * origin, mi_integer threshold, mi_integer flags, MI_TYPEID * ts_typeid, mi_integer nelems, mi_string *container, mi_lvarchar *metadata, MI_TYPEID *metadata_typeid, ...);
  33. ts_timeseries *ts_create_with_rowdesc(MI_CONNECTION *conn, ts_timeseries *ts, MI_ROW_DESC *rowdesc, mi_integer flags, mi_datetime * orig_stamp, mi_integer thresh, mi_integer hertz, mi_string * container, mi_integer nelems, mi_lvarchar *ts_metadata, MI_TYPEID *meta_typeid);
  34. ts_timeseries *ts_create_with_tsdesc(MI_CONNECTION *conn, ts_tsdesc *tsdesc, mi_integer flags, mi_datetime * orig_stamp, mi_integer thresh, mi_integer hertz, mi_string * container, mi_integer nelems, mi_lvarchar *ts_metadata, MI_TYPEID *meta_typeid);
  35. ts_tsdesc *ts_open(MI_CONNECTION *conn, ts_timeseries *ts, MI_TYPEID *type_id, mi_integer flags);
  36. void ts_close(ts_tsdesc *tsdesc);
  37. ts_timeseries *ts_update_metadata(ts_timeseries *ts, mi_lvarchar *metadata, MI_TYPEID *metadata_typeid);
  38. mi_lvarchar *ts_get_metadata(ts_timeseries *ts, MI_TYPEID **metadata_typeid);
  39. ts_timeseries *ts_put_last_elem(ts_tsdesc *tsdesc, ts_tselem tselem);
  40. ts_timeseries *ts_put_nth_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_integer n);
  41. ts_timeseries *ts_put_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp);
  42. ts_timeseries *ts_put_elem_no_dups(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp);
  43. ts_timeseries *ts_hide_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp);
  44. ts_timeseries *ts_reveal_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp);
  45. ts_timeseries *ts_ins_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp);
  46. ts_timeseries *ts_upd_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp);
  47. ts_timeseries *ts_del_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp);
  48. ts_tselem ts_nth_elem(ts_tsdesc *tsdesc, mi_integer N, mi_integer *isNull);
  49. ts_tselem ts_last_elem(ts_tsdesc *tsdesc, mi_integer *isNull, mi_integer *off);
  50. ts_tselem ts_first_elem(ts_tsdesc *tsdesc, mi_integer *isNull);
  51. ts_tselem ts_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off);
  52. mi_integer ts_index(ts_tsdesc *tsdesc, mi_datetime *tstamp);
  53. mi_datetime *ts_time(ts_tsdesc *tsdesc, mi_integer N);
  54. mi_integer ts_nelems(ts_tsdesc *tsdesc);
  55. ts_timeseries *ts_get_ts(ts_tsdesc *tsdesc);
  56. ts_tselem ts_make_elem_rowdesc(ts_tsdesc *tsdesc, MI_DATUM *values, mi_boolean *nulls, mi_integer *off, MI_ROW_DESC *rowdesc);
  57. ts_tselem ts_make_elem(ts_tsdesc *tsdesc, MI_DATUM *values, mi_boolean *nulls, mi_integer *off);
  58. void ts_get_all_cols(ts_tsdesc *tsdesc, ts_tselem tselem, MI_DATUM * values, mi_boolean *nulls, mi_integer off);
  59. ts_tselem
  60. ts_row_to_elem( ts_tsdesc *tsdesc,
  61. MI_ROW *row,
  62. mi_integer *offset_ptr);
  63. void
  64. ts_free_elem( ts_tsdesc *tsdesc,
  65. ts_tselem elem);
  66. MI_ROW *
  67. ts_elem_to_row( ts_tsdesc *tsdesc,
  68. ts_tselem elem,
  69. mi_integer off);
  70. ts_tselem
  71. ts_make_elem_with_buf(ts_tsdesc * tsdesc,
  72. MI_DATUM * values,
  73. mi_boolean * nulls,
  74. mi_integer *off,
  75. ts_tselem elem);
  76. ts_timeseries *ts_copy(MI_CONNECTION *conn, ts_timeseries *ts, MI_TYPEID *type_id);
  77. void ts_free(ts_timeseries *ts);
  78. mi_integer ts_col_id(ts_tsdesc *tsdesc, mi_string *colname);
  79. mi_string *ts_get_calname(ts_timeseries *ts);
  80. mi_integer ts_get_threshold(ts_timeseries *ts);
  81. mi_int1 ts_get_hertz(ts_timeseries *ts);
  82. mi_integer ts_get_packed(ts_timeseries *ts);
  83. mi_lvarchar *ts_get_compression(ts_timeseries *ts);
  84. MI_TYPEID *ts_get_typeid(MI_CONNECTION *conn, ts_timeseries *ts);
  85. mi_integer ts_col_cnt(ts_tsdesc *tsdesc);
  86. ts_typeinfo *ts_colinfo_number(ts_tsdesc *tsdesc, mi_integer id);
  87. ts_typeinfo *ts_colinfo_name(ts_tsdesc *tsdesc, mi_string *colname);
  88. ts_tselem ts_closest_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_string *cmp, mi_string *col_list, mi_integer flags, mi_integer *isNull, mi_integer *off);
  89. ts_tselem ts_next_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off);
  90. ts_tselem ts_previous_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off);
  91. ts_tselem ts_last_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off);
  92. ts_timeseries *ts_put_ts(ts_tsdesc *tsdesc1, ts_tsdesc *tsdesc2, mi_boolean nodups);
  93. mi_integer ts_get_flags(ts_timeseries *ts);
  94. mi_datetime *ts_get_origin(ts_timeseries *ts);
  95. mi_string *ts_get_containername(ts_timeseries *ts);
  96. mi_datetime * ts_cal_startdate(MI_CONNECTION *conn, mi_string *cal_name);
  97. mi_datetime * ts_cal_pattstartdate(MI_CONNECTION *conn, mi_string *cal_name);
  98. mi_datetime *ts_cal_stamp(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_integer offset);
  99. mi_integer ts_cal_index(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_datetime *stamp);
  100. MI_COLLECTION *ts_cal_range(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_datetime *stamp);
  101. MI_COLLECTION *ts_cal_range_index(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_integer offset);
  102. mi_datetime *
  103. ts_tstamp_plus(mi_datetime * startdate, mi_integer cnt,
  104. mi_integer interval, mi_datetime * result);
  105. mi_datetime *
  106. ts_tstamp_minus(mi_datetime * startdate, mi_integer cnt,
  107. mi_integer interval, mi_datetime * result);
  108. mi_integer
  109. ts_tstamp_difference(mi_datetime * dt2_orig, mi_datetime *dt1_orig,
  110. mi_integer interval);
  111. ts_tselem
  112. ts_get_non_null( ts_tsdesc *tsdesc,
  113. mi_datetime *timestamp,
  114. mi_string *column_name_str,
  115. mi_boolean forward,
  116. mi_integer *offset_ptr);
  117. ts_amdesc *
  118. ts_am_open_container(MI_CONNECTION *conn,
  119. mi_integer partition_id,
  120. mi_bigint inst_id,
  121. mi_integer col_count,
  122. mi_string *cont_name,
  123. mi_integer flags);
  124. ts_amdesc *
  125. ts_am_change_inst(MI_CONNECTION *conn,
  126. ts_amdesc *amdesc,
  127. mi_integer partition_id,
  128. mi_bigint inst_id,
  129. mi_integer col_count);
  130. void
  131. ts_am_close_container(ts_amdesc *amdesc);
  132. ts_tselem
  133. ts_am_elem_init(MI_CONNECTION *conn,
  134. MI_ROW_DESC *rowdesc,
  135. TS_ELEM_DESC **elem_desc,
  136. MI_TYPEID *subtype);
  137. MI_ROW *
  138. ts_am_elem_to_row(MI_CONNECTION *conn,
  139. TS_ELEM_DESC *elem_desc,
  140. MI_ROW_DESC *rowdesc,
  141. ts_tselem elem,
  142. mi_integer off);
  143. ts_tselem
  144. ts_am_make_elem(MI_CONNECTION *conn,
  145. TS_ELEM_DESC *elem_desc,
  146. ts_tselem elem,
  147. MI_DATUM * values,
  148. mi_boolean * nulls);
  149. void
  150. ts_am_free_elem(MI_CONNECTION *conn,
  151. ts_tselem elem,
  152. TS_ELEM_DESC *elem_desc);
  153. MI_DATUM
  154. ts_am_column_by_number( MI_CONNECTION *conn,
  155. TS_ELEM_DESC * elem_desc,
  156. ts_tselem tselem,
  157. mi_integer colnumber,
  158. mi_boolean * isNull);
  159. mi_integer
  160. ts_am_write_container(ts_amdesc *amdesc,
  161. mi_datetime *tstamp,
  162. ts_tselem elem,
  163. mi_integer type,
  164. mi_integer ts_offset,
  165. mi_integer calid);
  166. TS_ELEM_DESC *
  167. ts_am_get_elem_desc( MI_ROW_DESC *row_desc,
  168. MI_CONNECTION *conn);
  169. void
  170. ts_am_read_container(ts_amdesc *amdesc,
  171. mi_datetime *tstamp,
  172. mi_integer *isNull,
  173. mi_integer cmp,
  174. ts_tselem elem,
  175. mi_integer ts_offset,
  176. mi_integer calid);
  177. void
  178. ts_vtam_create_helper(mi_lvarchar *vtab_name_lv,
  179. mi_lvarchar *base_tab_name_lv,
  180. mi_lvarchar *new_ts,
  181. mi_integer ts_scan_mode,
  182. mi_lvarchar *tscol_name_lv);
  183. #endif