Fix HFTA operators and UDAFs broken by the last update
[com/gs-lite.git] / cfg / external_fcns.def
index 0043b84..999211a 100644 (file)
@@ -610,8 +610,8 @@ uint FUN [LFTA_LEGAL, COST EXPENSIVE]
         uint  FUN [COST LOW] extr_med_hfta0_fcn(string);
         uint EXTR qspace_of quant_udaf_hfta0 extr_quant_hfta0_space (uint);
         uint  FUN [COST LOW] extr_quant_hfta0_space(string);
-        string UDAF [SUBAGGR quant_udaf_lfta3, SUPERAGGR quant_udaf_hfta3] quant_udaf_hfta0 fstring16 (uint);
-        string UDAF quant_udaf_hfta3 fstring16 (string);
+        string UDAF [SUBAGGR quant_udaf_lfta3, SUPERAGGR quant_udaf_hfta3] quant_udaf_hfta0 fstring24 (uint);
+        string UDAF quant_udaf_hfta3 fstring24 (string);
         string UDAF quant_udaf_lfta3 fstring6600 (uint);
 
 ///////////////////////////////////////////////////////////
@@ -676,31 +676,76 @@ uint FUN [LFTA_LEGAL, COST EXPENSIVE]
 //     count the # times the payload is different from the previous value
 /////////////////////////////////////////////////////////////
 
-       uint UDAF [SUBAGGR count_diff_lfta_ui, SUPERAGGR count_diff_hfta] count_diff fstring12 (uint);
-       uint UDAF  count_diff_hfta fstring12 (string);
+       uint UDAF [SUBAGGR count_diff_lfta_ui, SUPERAGGR count_diff_hfta] count_diff fstring16 (uint);
+       uint UDAF  count_diff_hfta fstring16 (string);
        string UDAF  count_diff_lfta_ui fstring20 (uint);
 
-       uint UDAF [SUBAGGR count_diff_lfta_i, SUPERAGGR count_diff_hfta] count_diff fstring12 (int);
+       uint UDAF [SUBAGGR count_diff_lfta_i, SUPERAGGR count_diff_hfta] count_diff fstring16 (int);
        string UDAF  count_diff_lfta_i fstring20 (int);
 
-       uint UDAF [SUBAGGR count_diff_lfta_ul, SUPERAGGR count_diff_hfta] count_diff fstring12 (ullong);
+       uint UDAF [SUBAGGR count_diff_lfta_ul, SUPERAGGR count_diff_hfta] count_diff fstring16 (ullong);
        string UDAF  count_diff_lfta_ul fstring20 (ullong);
 
-       uint UDAF [SUBAGGR count_diff_lfta_l, SUPERAGGR count_diff_hfta] count_diff fstring12 (llong);
+       uint UDAF [SUBAGGR count_diff_lfta_l, SUPERAGGR count_diff_hfta] count_diff fstring16 (llong);
        string UDAF  count_diff_lfta_l fstring20 (llong);
 
-       uint UDAF [SUBAGGR count_diff_lfta_s, SUPERAGGR count_diff_hfta] count_diff fstring12 (string);
+       uint UDAF [SUBAGGR count_diff_lfta_s, SUPERAGGR count_diff_hfta] count_diff fstring16 (string);
        string UDAF  count_diff_lfta_s fstring20 (string);
 
 
+////////////////////////////////////////////////////////////////
+//     string aggregation via catenation
+//////////////////////////////////////////////////////
+
+       string UDAF [HFTA_ONLY] CAT_aggr fstring8 (string, string);
+
 ///////////////////////////////////////////////////////////
-//               integer array aggregation funciton
+//               integer array aggregation function
 //     We are going to store 4 values in LFTA in fixed size buffer
-//  plus one byte for array length (17 bytes total)
-//  HFTA will combine partial aggregates
+//     plus one byte for array length (17 bytes total)
+//     HFTA will combine partial aggregates
+//             This seems to create a string with a comma-separated list of the uints
 ///////////////////////////////////////////////////////////
 
        string UDAF [RUNNING, SUBAGGR running_array_aggr_lfta, SUPERAGGR running_array_aggr_hfta] running_array_aggr string (uint);
        string UDAF [RUNNING] running_array_aggr_hfta string (string);
        string UDAF [RUNNING] running_array_aggr_lfta fstring17 (uint);
        
+//////////////////////////////////////////////////////////
+//     Mapping functions
+//     Should eventually be replaced by watchlist join ?
+//////////////////////////////////
+       string FUN [HFTA_ONLY, COST EXPENSIVE] int_to_string_map(llong, string HANDLE);
+       string FUN [HFTA_ONLY, COST EXPENSIVE] int_to_string_map(ullong, string HANDLE);
+       string FUN [HFTA_ONLY, COST EXPENSIVE] int_to_string_map(int, string HANDLE);
+       string FUN [HFTA_ONLY, COST EXPENSIVE] int_to_string_map(uint, string HANDLE);
+
+//////////////////////////////////////////////////////////
+//     time-averaged aggregate.
+//     time_avg(sample, ts, window_size)
+       float UDAF [HFTA_ONLY, RUNNING] time_avg fstring44 (uint, llong, llong) ;
+       float UDAF [HFTA_ONLY, RUNNING] time_avg fstring44 (int, llong, llong) ;
+       float UDAF [HFTA_ONLY, RUNNING] time_avg fstring44 (ullong, llong, llong) ;
+       float UDAF [HFTA_ONLY, RUNNING] time_avg fstring44 (llong, llong, llong) ;
+       float UDAF [HFTA_ONLY, RUNNING] time_avg fstring44 (float, llong, llong) ;
+
+// ------------------------------------------------------------
+//             running_sum_max : get the running sum of an int,
+//             be able to report this sum and also its max value
+//             during the time window
+
+       llong EXTR running_sum run_sum_max extr_running_sum (uint);
+       llong EXTR running_sum run_sum_max extr_running_sum (int);
+       llong EXTR running_sum run_sum_max extr_running_sum (llong);
+       llong EXTR running_sum run_sum_max extr_running_sum (ullong);
+       llong FUN [COST LOW] extr_running_sum(string);
+       llong EXTR running_sum_max run_sum_max extr_running_sum_max (uint);
+       llong EXTR running_sum_max run_sum_max extr_running_sum_max (int);
+       llong EXTR running_sum_max run_sum_max extr_running_sum_max (llong);
+       llong EXTR running_sum_max run_sum_max extr_running_sum_max (ullong);
+       llong FUN [COST LOW] extr_running_sum_max(string);
+       string UDAF [HFTA_ONLY, RUNNING] run_sum_max fstring16 (uint);
+       string UDAF [HFTA_ONLY, RUNNING] run_sum_max fstring16 (int);
+       string UDAF [HFTA_ONLY, RUNNING] run_sum_max fstring16 (ullong);
+       string UDAF [HFTA_ONLY, RUNNING] run_sum_max fstring16 (llong);
+