Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9229fd3

Browse files
author
Nikita Glukhov
committed
Move JsonValueStats .strings and .numerics fields into #ifdef JSON_ANALYZE_SCALARS, add .nstrings and .nnumerics fields instead
1 parent 3b764d2 commit 9229fd3

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/backend/utils/adt/jsonb_typanalyze.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,10 @@ typedef struct JsonValueStats
129129
{
130130
JsonScalarStats jsons; /* stats for all JSON types together */
131131

132-
/* XXX used only with JSON_ANALYZE_SCALARS defined */
132+
#ifdef JSON_ANALYZE_SCALARS /* XXX */
133133
JsonScalarStats strings; /* stats for JSON strings */
134134
JsonScalarStats numerics; /* stats for JSON numerics */
135+
#endif
135136

136137
/* stats for booleans */
137138
struct
@@ -143,6 +144,8 @@ typedef struct JsonValueStats
143144
int nnulls; /* number of JSON null values */
144145
int nobjects; /* number of JSON objects */
145146
int narrays; /* number of JSON arrays */
147+
int nstrings; /* number of JSON strings */
148+
int nnumerics; /* number of JSON numerics */
146149

147150
JsonScalarStats lens; /* stats of object lengths */
148151
JsonScalarStats arrlens; /* stats of array lengths */
@@ -378,6 +381,7 @@ jsonAnalyzeJsonValue(JsonAnalyzeContext *ctx, JsonValueStats *vstats,
378381
break;
379382

380383
case jbvString:
384+
vstats->nstrings++;
381385
#ifdef JSON_ANALYZE_SCALARS
382386
value = PointerGetDatum(
383387
cstring_to_text_with_len(jv->val.string.val,
@@ -387,6 +391,7 @@ jsonAnalyzeJsonValue(JsonAnalyzeContext *ctx, JsonValueStats *vstats,
387391
break;
388392

389393
case jbvNumeric:
394+
vstats->nnumerics++;
390395
#ifdef JSON_ANALYZE_SCALARS
391396
value = PointerGetDatum(jv->val.numeric);
392397
JsonValuesAppend(&vstats->numerics.values, value, ctx->target);
@@ -804,11 +809,11 @@ jsonAnalyzeBuildPathStats(JsonPathAnlStats *pstats)
804809
vstats->jsons.values.count);
805810

806811
pushJsonbKeyValueFloat(&ps, &val, "freq_string",
807-
freq * vstats->strings.values.count /
812+
freq * vstats->nstrings /
808813
vstats->jsons.values.count);
809814

810815
pushJsonbKeyValueFloat(&ps, &val, "freq_numeric",
811-
freq * vstats->numerics.values.count /
816+
freq * vstats->nnumerics /
812817
vstats->jsons.values.count);
813818

814819
pushJsonbKeyValueFloat(&ps, &val, "freq_array",

0 commit comments

Comments
 (0)