@@ -2814,10 +2814,26 @@ hll_add_trans4(PG_FUNCTION_ARGS)
2814
2814
(errcode (ERRCODE_DATA_EXCEPTION ),
2815
2815
errmsg ("hll_add_trans4 outside transition context" )));
2816
2816
2817
- // Is the first argument a NULL?
2817
+ // If the first argument is a NULL on first call, init an hll_empty
2818
2818
if (PG_ARGISNULL (0 ))
2819
2819
{
2820
+ int32 log2m = PG_GETARG_INT32 (2 );
2821
+ int32 regwidth = PG_GETARG_INT32 (3 );
2822
+ int64 expthresh = PG_GETARG_INT64 (4 );
2823
+ int32 sparseon = PG_GETARG_INT32 (5 );
2824
+
2820
2825
msap = setup_multiset (aggctx );
2826
+
2827
+ check_modifiers (log2m , regwidth , expthresh , sparseon );
2828
+
2829
+ memset (msap , '\0' , sizeof (multiset_t ));
2830
+
2831
+ msap -> ms_type = MST_EMPTY ;
2832
+ msap -> ms_nbits = regwidth ;
2833
+ msap -> ms_nregs = 1 << log2m ;
2834
+ msap -> ms_log2nregs = log2m ;
2835
+ msap -> ms_expthresh = expthresh ;
2836
+ msap -> ms_sparseon = sparseon ;
2821
2837
}
2822
2838
else
2823
2839
{
@@ -2829,28 +2845,6 @@ hll_add_trans4(PG_FUNCTION_ARGS)
2829
2845
{
2830
2846
int64 val = PG_GETARG_INT64 (1 );
2831
2847
2832
- // Was the first argument uninitialized?
2833
- if (msap -> ms_type == MST_UNINIT )
2834
- {
2835
- int32 log2m = PG_GETARG_INT32 (2 );
2836
- int32 regwidth = PG_GETARG_INT32 (3 );
2837
- int64 expthresh = PG_GETARG_INT64 (4 );
2838
- int32 sparseon = PG_GETARG_INT32 (5 );
2839
-
2840
- multiset_t ms ;
2841
-
2842
- check_modifiers (log2m , regwidth , expthresh , sparseon );
2843
-
2844
- memset (msap , '\0' , sizeof (ms ));
2845
-
2846
- msap -> ms_type = MST_EMPTY ;
2847
- msap -> ms_nbits = regwidth ;
2848
- msap -> ms_nregs = 1 << log2m ;
2849
- msap -> ms_log2nregs = log2m ;
2850
- msap -> ms_expthresh = expthresh ;
2851
- msap -> ms_sparseon = sparseon ;
2852
- }
2853
-
2854
2848
multiset_add (msap , val );
2855
2849
}
2856
2850
@@ -2877,10 +2871,26 @@ hll_add_trans3(PG_FUNCTION_ARGS)
2877
2871
(errcode (ERRCODE_DATA_EXCEPTION ),
2878
2872
errmsg ("hll_add_trans3 outside transition context" )));
2879
2873
2880
- // Is the first argument a NULL?
2874
+ // If the first argument is a NULL on first call, init an hll_empty
2881
2875
if (PG_ARGISNULL (0 ))
2882
2876
{
2877
+ int32 log2m = PG_GETARG_INT32 (2 );
2878
+ int32 regwidth = PG_GETARG_INT32 (3 );
2879
+ int64 expthresh = PG_GETARG_INT64 (4 );
2880
+ int32 sparseon = g_default_sparseon ;
2881
+
2883
2882
msap = setup_multiset (aggctx );
2883
+
2884
+ check_modifiers (log2m , regwidth , expthresh , sparseon );
2885
+
2886
+ memset (msap , '\0' , sizeof (multiset_t ));
2887
+
2888
+ msap -> ms_type = MST_EMPTY ;
2889
+ msap -> ms_nbits = regwidth ;
2890
+ msap -> ms_nregs = 1 << log2m ;
2891
+ msap -> ms_log2nregs = log2m ;
2892
+ msap -> ms_expthresh = expthresh ;
2893
+ msap -> ms_sparseon = sparseon ;
2884
2894
}
2885
2895
else
2886
2896
{
@@ -2892,28 +2902,6 @@ hll_add_trans3(PG_FUNCTION_ARGS)
2892
2902
{
2893
2903
int64 val = PG_GETARG_INT64 (1 );
2894
2904
2895
- // Was the first argument uninitialized?
2896
- if (msap -> ms_type == MST_UNINIT )
2897
- {
2898
- int32 log2m = PG_GETARG_INT32 (2 );
2899
- int32 regwidth = PG_GETARG_INT32 (3 );
2900
- int64 expthresh = PG_GETARG_INT64 (4 );
2901
- int32 sparseon = g_default_sparseon ;
2902
-
2903
- multiset_t ms ;
2904
-
2905
- check_modifiers (log2m , regwidth , expthresh , sparseon );
2906
-
2907
- memset (msap , '\0' , sizeof (ms ));
2908
-
2909
- msap -> ms_type = MST_EMPTY ;
2910
- msap -> ms_nbits = regwidth ;
2911
- msap -> ms_nregs = 1 << log2m ;
2912
- msap -> ms_log2nregs = log2m ;
2913
- msap -> ms_expthresh = expthresh ;
2914
- msap -> ms_sparseon = sparseon ;
2915
- }
2916
-
2917
2905
multiset_add (msap , val );
2918
2906
}
2919
2907
@@ -2940,10 +2928,26 @@ hll_add_trans2(PG_FUNCTION_ARGS)
2940
2928
(errcode (ERRCODE_DATA_EXCEPTION ),
2941
2929
errmsg ("hll_add_trans2 outside transition context" )));
2942
2930
2943
- // Is the first argument a NULL?
2931
+ // If the first argument is a NULL on first call, init an hll_empty
2944
2932
if (PG_ARGISNULL (0 ))
2945
2933
{
2934
+ int32 log2m = PG_GETARG_INT32 (2 );
2935
+ int32 regwidth = PG_GETARG_INT32 (3 );
2936
+ int64 expthresh = g_default_expthresh ;
2937
+ int32 sparseon = g_default_sparseon ;
2938
+
2946
2939
msap = setup_multiset (aggctx );
2940
+
2941
+ check_modifiers (log2m , regwidth , expthresh , sparseon );
2942
+
2943
+ memset (msap , '\0' , sizeof (multiset_t ));
2944
+
2945
+ msap -> ms_type = MST_EMPTY ;
2946
+ msap -> ms_nbits = regwidth ;
2947
+ msap -> ms_nregs = 1 << log2m ;
2948
+ msap -> ms_log2nregs = log2m ;
2949
+ msap -> ms_expthresh = expthresh ;
2950
+ msap -> ms_sparseon = sparseon ;
2947
2951
}
2948
2952
else
2949
2953
{
@@ -2955,28 +2959,6 @@ hll_add_trans2(PG_FUNCTION_ARGS)
2955
2959
{
2956
2960
int64 val = PG_GETARG_INT64 (1 );
2957
2961
2958
- // Was the first argument uninitialized?
2959
- if (msap -> ms_type == MST_UNINIT )
2960
- {
2961
- int32 log2m = PG_GETARG_INT32 (2 );
2962
- int32 regwidth = PG_GETARG_INT32 (3 );
2963
- int64 expthresh = g_default_expthresh ;
2964
- int32 sparseon = g_default_sparseon ;
2965
-
2966
- multiset_t ms ;
2967
-
2968
- check_modifiers (log2m , regwidth , expthresh , sparseon );
2969
-
2970
- memset (msap , '\0' , sizeof (ms ));
2971
-
2972
- msap -> ms_type = MST_EMPTY ;
2973
- msap -> ms_nbits = regwidth ;
2974
- msap -> ms_nregs = 1 << log2m ;
2975
- msap -> ms_log2nregs = log2m ;
2976
- msap -> ms_expthresh = expthresh ;
2977
- msap -> ms_sparseon = sparseon ;
2978
- }
2979
-
2980
2962
multiset_add (msap , val );
2981
2963
}
2982
2964
@@ -3003,10 +2985,26 @@ hll_add_trans1(PG_FUNCTION_ARGS)
3003
2985
(errcode (ERRCODE_DATA_EXCEPTION ),
3004
2986
errmsg ("hll_add_trans1 outside transition context" )));
3005
2987
3006
- // Is the first argument a NULL?
2988
+ // If the first argument is a NULL on first call, init an hll_empty
3007
2989
if (PG_ARGISNULL (0 ))
3008
2990
{
2991
+ int32 log2m = PG_GETARG_INT32 (2 );
2992
+ int32 regwidth = g_default_regwidth ;
2993
+ int64 expthresh = g_default_expthresh ;
2994
+ int32 sparseon = g_default_sparseon ;
2995
+
3009
2996
msap = setup_multiset (aggctx );
2997
+
2998
+ check_modifiers (log2m , regwidth , expthresh , sparseon );
2999
+
3000
+ memset (msap , '\0' , sizeof (multiset_t ));
3001
+
3002
+ msap -> ms_type = MST_EMPTY ;
3003
+ msap -> ms_nbits = regwidth ;
3004
+ msap -> ms_nregs = 1 << log2m ;
3005
+ msap -> ms_log2nregs = log2m ;
3006
+ msap -> ms_expthresh = expthresh ;
3007
+ msap -> ms_sparseon = sparseon ;
3010
3008
}
3011
3009
else
3012
3010
{
@@ -3018,28 +3016,6 @@ hll_add_trans1(PG_FUNCTION_ARGS)
3018
3016
{
3019
3017
int64 val = PG_GETARG_INT64 (1 );
3020
3018
3021
- // Was the first argument uninitialized?
3022
- if (msap -> ms_type == MST_UNINIT )
3023
- {
3024
- int32 log2m = PG_GETARG_INT32 (2 );
3025
- int32 regwidth = g_default_regwidth ;
3026
- int64 expthresh = g_default_expthresh ;
3027
- int32 sparseon = g_default_sparseon ;
3028
-
3029
- multiset_t ms ;
3030
-
3031
- check_modifiers (log2m , regwidth , expthresh , sparseon );
3032
-
3033
- memset (msap , '\0' , sizeof (ms ));
3034
-
3035
- msap -> ms_type = MST_EMPTY ;
3036
- msap -> ms_nbits = regwidth ;
3037
- msap -> ms_nregs = 1 << log2m ;
3038
- msap -> ms_log2nregs = log2m ;
3039
- msap -> ms_expthresh = expthresh ;
3040
- msap -> ms_sparseon = sparseon ;
3041
- }
3042
-
3043
3019
multiset_add (msap , val );
3044
3020
}
3045
3021
@@ -3066,10 +3042,26 @@ hll_add_trans0(PG_FUNCTION_ARGS)
3066
3042
(errcode (ERRCODE_DATA_EXCEPTION ),
3067
3043
errmsg ("hll_add_trans0 outside transition context" )));
3068
3044
3069
- // Is the first argument a NULL?
3045
+ // If the first argument is a NULL on first call, init an hll_empty
3070
3046
if (PG_ARGISNULL (0 ))
3071
3047
{
3048
+ int32 log2m = g_default_log2m ;
3049
+ int32 regwidth = g_default_regwidth ;
3050
+ int64 expthresh = g_default_expthresh ;
3051
+ int32 sparseon = g_default_sparseon ;
3052
+
3072
3053
msap = setup_multiset (aggctx );
3054
+
3055
+ check_modifiers (log2m , regwidth , expthresh , sparseon );
3056
+
3057
+ memset (msap , '\0' , sizeof (multiset_t ));
3058
+
3059
+ msap -> ms_type = MST_EMPTY ;
3060
+ msap -> ms_nbits = regwidth ;
3061
+ msap -> ms_nregs = 1 << log2m ;
3062
+ msap -> ms_log2nregs = log2m ;
3063
+ msap -> ms_expthresh = expthresh ;
3064
+ msap -> ms_sparseon = sparseon ;
3073
3065
}
3074
3066
else
3075
3067
{
@@ -3081,28 +3073,6 @@ hll_add_trans0(PG_FUNCTION_ARGS)
3081
3073
{
3082
3074
int64 val = PG_GETARG_INT64 (1 );
3083
3075
3084
- // Was the first argument uninitialized?
3085
- if (msap -> ms_type == MST_UNINIT )
3086
- {
3087
- int32 log2m = g_default_log2m ;
3088
- int32 regwidth = g_default_regwidth ;
3089
- int64 expthresh = g_default_expthresh ;
3090
- int32 sparseon = g_default_sparseon ;
3091
-
3092
- multiset_t ms ;
3093
-
3094
- check_modifiers (log2m , regwidth , expthresh , sparseon );
3095
-
3096
- memset (msap , '\0' , sizeof (ms ));
3097
-
3098
- msap -> ms_type = MST_EMPTY ;
3099
- msap -> ms_nbits = regwidth ;
3100
- msap -> ms_nregs = 1 << log2m ;
3101
- msap -> ms_log2nregs = log2m ;
3102
- msap -> ms_expthresh = expthresh ;
3103
- msap -> ms_sparseon = sparseon ;
3104
- }
3105
-
3106
3076
multiset_add (msap , val );
3107
3077
}
3108
3078
0 commit comments