/* * * Licensed Materials - Property of IBM and/or HCL * * IBM Informix TimeSeries DataBlade * (c) Copyright IBM Corporation 1996, 2013 * (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved. * */ /* Title: ts_pubprotos.h * * Public header for time series public procedure prototypes. * * This header is not stand-alone. It is designed to be included * indirectly through tseries.h. */ #ifndef _TS_PUBPROTOS_H_ #define _TS_PUBPROTOS_H_ mi_integer ts_datetime_cmp( mi_datetime *tstamp1, mi_datetime *tstamp2); mi_datetime * 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); void 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); ts_tscan *ts_begin_scan(ts_tsdesc *tsdesc, mi_integer flags, mi_datetime *start, mi_datetime *end); mi_integer ts_next(ts_tscan *tscan, ts_tselem *tselem); mi_integer ts_current_offset(ts_tscan *tscan); mi_datetime *ts_current_timestamp(ts_tscan *tscan); MI_DATUM ts_get_col_by_name(ts_tsdesc *tsdesc, ts_tselem tselem, mi_string *colname, mi_boolean *isNull, mi_integer off); MI_DATUM ts_get_col_by_number(ts_tsdesc *tsdesc, ts_tselem tselem, mi_integer colnumber, mi_boolean *isNull, mi_integer off); void ts_end_scan(ts_tscan *tscan); 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, ...); 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, ...); 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); 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); ts_tsdesc *ts_open(MI_CONNECTION *conn, ts_timeseries *ts, MI_TYPEID *type_id, mi_integer flags); void ts_close(ts_tsdesc *tsdesc); ts_timeseries *ts_update_metadata(ts_timeseries *ts, mi_lvarchar *metadata, MI_TYPEID *metadata_typeid); mi_lvarchar *ts_get_metadata(ts_timeseries *ts, MI_TYPEID **metadata_typeid); ts_timeseries *ts_put_last_elem(ts_tsdesc *tsdesc, ts_tselem tselem); ts_timeseries *ts_put_nth_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_integer n); ts_timeseries *ts_put_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp); ts_timeseries *ts_put_elem_no_dups(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp); ts_timeseries *ts_hide_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp); ts_timeseries *ts_reveal_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp); ts_timeseries *ts_ins_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp); ts_timeseries *ts_upd_elem(ts_tsdesc *tsdesc, ts_tselem tselem, mi_datetime *tstamp); ts_timeseries *ts_del_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp); ts_tselem ts_nth_elem(ts_tsdesc *tsdesc, mi_integer N, mi_integer *isNull); ts_tselem ts_last_elem(ts_tsdesc *tsdesc, mi_integer *isNull, mi_integer *off); ts_tselem ts_first_elem(ts_tsdesc *tsdesc, mi_integer *isNull); ts_tselem ts_elem(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off); mi_integer ts_index(ts_tsdesc *tsdesc, mi_datetime *tstamp); mi_datetime *ts_time(ts_tsdesc *tsdesc, mi_integer N); mi_integer ts_nelems(ts_tsdesc *tsdesc); ts_timeseries *ts_get_ts(ts_tsdesc *tsdesc); ts_tselem ts_make_elem_rowdesc(ts_tsdesc *tsdesc, MI_DATUM *values, mi_boolean *nulls, mi_integer *off, MI_ROW_DESC *rowdesc); ts_tselem ts_make_elem(ts_tsdesc *tsdesc, MI_DATUM *values, mi_boolean *nulls, mi_integer *off); void ts_get_all_cols(ts_tsdesc *tsdesc, ts_tselem tselem, MI_DATUM * values, mi_boolean *nulls, mi_integer off); ts_tselem ts_row_to_elem( ts_tsdesc *tsdesc, MI_ROW *row, mi_integer *offset_ptr); void ts_free_elem( ts_tsdesc *tsdesc, ts_tselem elem); MI_ROW * ts_elem_to_row( ts_tsdesc *tsdesc, ts_tselem elem, mi_integer off); ts_tselem ts_make_elem_with_buf(ts_tsdesc * tsdesc, MI_DATUM * values, mi_boolean * nulls, mi_integer *off, ts_tselem elem); ts_timeseries *ts_copy(MI_CONNECTION *conn, ts_timeseries *ts, MI_TYPEID *type_id); void ts_free(ts_timeseries *ts); mi_integer ts_col_id(ts_tsdesc *tsdesc, mi_string *colname); mi_string *ts_get_calname(ts_timeseries *ts); mi_integer ts_get_threshold(ts_timeseries *ts); mi_int1 ts_get_hertz(ts_timeseries *ts); mi_integer ts_get_packed(ts_timeseries *ts); mi_lvarchar *ts_get_compression(ts_timeseries *ts); MI_TYPEID *ts_get_typeid(MI_CONNECTION *conn, ts_timeseries *ts); mi_integer ts_col_cnt(ts_tsdesc *tsdesc); ts_typeinfo *ts_colinfo_number(ts_tsdesc *tsdesc, mi_integer id); ts_typeinfo *ts_colinfo_name(ts_tsdesc *tsdesc, mi_string *colname); 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); ts_tselem ts_next_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off); ts_tselem ts_previous_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off); ts_tselem ts_last_valid(ts_tsdesc *tsdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer *off); ts_timeseries *ts_put_ts(ts_tsdesc *tsdesc1, ts_tsdesc *tsdesc2, mi_boolean nodups); mi_integer ts_get_flags(ts_timeseries *ts); mi_datetime *ts_get_origin(ts_timeseries *ts); mi_string *ts_get_containername(ts_timeseries *ts); mi_datetime * ts_cal_startdate(MI_CONNECTION *conn, mi_string *cal_name); mi_datetime * ts_cal_pattstartdate(MI_CONNECTION *conn, mi_string *cal_name); mi_datetime *ts_cal_stamp(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_integer offset); mi_integer ts_cal_index(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_datetime *stamp); MI_COLLECTION *ts_cal_range(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_datetime *stamp); MI_COLLECTION *ts_cal_range_index(MI_CONNECTION *conn, mi_string *cal_name, mi_datetime *origin, mi_integer offset); mi_datetime * ts_tstamp_plus(mi_datetime * startdate, mi_integer cnt, mi_integer interval, mi_datetime * result); mi_datetime * ts_tstamp_minus(mi_datetime * startdate, mi_integer cnt, mi_integer interval, mi_datetime * result); mi_integer ts_tstamp_difference(mi_datetime * dt2_orig, mi_datetime *dt1_orig, mi_integer interval); ts_tselem ts_get_non_null( ts_tsdesc *tsdesc, mi_datetime *timestamp, mi_string *column_name_str, mi_boolean forward, mi_integer *offset_ptr); ts_amdesc * ts_am_open_container(MI_CONNECTION *conn, mi_integer partition_id, mi_bigint inst_id, mi_integer col_count, mi_string *cont_name, mi_integer flags); ts_amdesc * ts_am_change_inst(MI_CONNECTION *conn, ts_amdesc *amdesc, mi_integer partition_id, mi_bigint inst_id, mi_integer col_count); void ts_am_close_container(ts_amdesc *amdesc); ts_tselem ts_am_elem_init(MI_CONNECTION *conn, MI_ROW_DESC *rowdesc, TS_ELEM_DESC **elem_desc, MI_TYPEID *subtype); MI_ROW * ts_am_elem_to_row(MI_CONNECTION *conn, TS_ELEM_DESC *elem_desc, MI_ROW_DESC *rowdesc, ts_tselem elem, mi_integer off); ts_tselem ts_am_make_elem(MI_CONNECTION *conn, TS_ELEM_DESC *elem_desc, ts_tselem elem, MI_DATUM * values, mi_boolean * nulls); void ts_am_free_elem(MI_CONNECTION *conn, ts_tselem elem, TS_ELEM_DESC *elem_desc); MI_DATUM ts_am_column_by_number( MI_CONNECTION *conn, TS_ELEM_DESC * elem_desc, ts_tselem tselem, mi_integer colnumber, mi_boolean * isNull); mi_integer ts_am_write_container(ts_amdesc *amdesc, mi_datetime *tstamp, ts_tselem elem, mi_integer type, mi_integer ts_offset, mi_integer calid); TS_ELEM_DESC * ts_am_get_elem_desc( MI_ROW_DESC *row_desc, MI_CONNECTION *conn); void ts_am_read_container(ts_amdesc *amdesc, mi_datetime *tstamp, mi_integer *isNull, mi_integer cmp, ts_tselem elem, mi_integer ts_offset, mi_integer calid); void ts_vtam_create_helper(mi_lvarchar *vtab_name_lv, mi_lvarchar *base_tab_name_lv, mi_lvarchar *new_ts, mi_integer ts_scan_mode, mi_lvarchar *tscol_name_lv); #endif