@@ -945,6 +945,14 @@ jsonAnalyzeMakeScalarStats(JsonbParseState **ps, const char *name,
945
945
return pushJsonbValue (ps , WJB_END_OBJECT , NULL );
946
946
}
947
947
948
+ static void
949
+ pushJsonbKeyValueFloatNonZero (JsonbParseState * * ps , JsonbValue * jbv ,
950
+ const char * field , double val )
951
+ {
952
+ if (val != 0.0 )
953
+ pushJsonbKeyValueFloat (ps , jbv , field , val );
954
+ }
955
+
948
956
/*
949
957
* jsonAnalyzeBuildPathStats
950
958
* Serialize statistics for a particular json path.
@@ -968,28 +976,28 @@ jsonAnalyzeBuildPathStats(JsonPathAnlStats *pstats)
968
976
969
977
pushJsonbKeyValueFloat (& ps , & val , "freq" , freq );
970
978
971
- pushJsonbKeyValueFloat (& ps , & val , "freq_null" ,
972
- freq * vstats -> nnulls /
979
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_null" ,
980
+ freq * vstats -> nnulls /
973
981
vstats -> jsons .values .count );
974
982
975
- pushJsonbKeyValueFloat (& ps , & val , "freq_boolean" ,
976
- freq * (vstats -> nfalse + vstats -> ntrue ) /
983
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_boolean" ,
984
+ freq * (vstats -> nfalse + vstats -> ntrue ) /
977
985
vstats -> jsons .values .count );
978
986
979
- pushJsonbKeyValueFloat (& ps , & val , "freq_string" ,
980
- freq * vstats -> nstrings /
987
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_string" ,
988
+ freq * vstats -> nstrings /
981
989
vstats -> jsons .values .count );
982
990
983
- pushJsonbKeyValueFloat (& ps , & val , "freq_numeric" ,
984
- freq * vstats -> nnumerics /
991
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_numeric" ,
992
+ freq * vstats -> nnumerics /
985
993
vstats -> jsons .values .count );
986
994
987
- pushJsonbKeyValueFloat (& ps , & val , "freq_array" ,
988
- freq * vstats -> narrays /
995
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_array" ,
996
+ freq * vstats -> narrays /
989
997
vstats -> jsons .values .count );
990
998
991
- pushJsonbKeyValueFloat (& ps , & val , "freq_object" ,
992
- freq * vstats -> nobjects /
999
+ pushJsonbKeyValueFloatNonZero (& ps , & val , "freq_object" ,
1000
+ freq * vstats -> nobjects /
993
1001
vstats -> jsons .values .count );
994
1002
995
1003
/*
0 commit comments