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

Commit 484b6cd

Browse files
author
Nikita Glukhov
committed
Simplify a bit jsonPathStatsGetSubpath()
1 parent 952b8ef commit 484b6cd

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/backend/utils/adt/jsonb_selfuncs.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,10 @@ jsonPathAppendEntryWithLen(StringInfo path, const char *entry, int len)
314314

315315
/*
316316
* jsonPathStatsGetSubpath
317-
* ???
317+
* Find JSON path stats for object key or array elements (if 'key' = NULL).
318318
*/
319319
JsonPathStats
320-
jsonPathStatsGetSubpath(JsonPathStats pstats, const char *key, int keylen)
320+
jsonPathStatsGetSubpath(JsonPathStats pstats, const char *key)
321321
{
322322
JsonPathStats spstats;
323323
char *path;
@@ -329,7 +329,7 @@ jsonPathStatsGetSubpath(JsonPathStats pstats, const char *key, int keylen)
329329

330330
initStringInfo(&str);
331331
appendBinaryStringInfo(&str, pstats->path, pstats->pathlen);
332-
jsonPathAppendEntryWithLen(&str, key, keylen);
332+
jsonPathAppendEntry(&str, key);
333333

334334
path = str.data;
335335
pathlen = str.len;
@@ -390,8 +390,7 @@ jsonStatsGetPathStats(JsonStats jsdata, Datum *path, int pathlen,
390390

391391
for (int i = 0; pstats && i < pathlen; i++)
392392
{
393-
char *key = text_to_cstring(DatumGetTextP(path[i]));
394-
int keylen = strlen(key);
393+
char *key = TextDatumGetCString(path[i]);
395394
char *tail;
396395
int index;
397396

@@ -402,15 +401,15 @@ jsonStatsGetPathStats(JsonStats jsdata, Datum *path, int pathlen,
402401
if (tail == key || *tail != '\0' || errno != 0)
403402
{
404403
/* Find object key stats */
405-
pstats = jsonPathStatsGetSubpath(pstats, key, keylen);
404+
pstats = jsonPathStatsGetSubpath(pstats, key);
406405
}
407406
else
408407
{
409408
/* Find array index stats */
410409
float4 arrfreq;
411410

412411
/* FIXME consider object key "index" also */
413-
pstats = jsonPathStatsGetSubpath(pstats, NULL, 0);
412+
pstats = jsonPathStatsGetSubpath(pstats, NULL);
414413
sel *= jsonPathStatsGetArrayIndexSelectivity(pstats, index);
415414
arrfreq = jsonPathStatsGetFreq(pstats, 0.0);
416415

src/include/utils/json_selfuncs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ extern JsonPathStats jsonStatsGetPathStatsStr(JsonStats stats,
6767
const char *path, int pathlen);
6868

6969
extern JsonPathStats jsonPathStatsGetSubpath(JsonPathStats stats,
70-
const char *subpath, int subpathlen);
70+
const char *subpath);
7171

7272
extern bool jsonPathStatsGetNextKeyStats(JsonPathStats stats,
7373
JsonPathStats *keystats, bool keysOnly);

0 commit comments

Comments
 (0)