Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitec108e7

Browse files
author
Nikita Glukhov
committed
Hide JsonbParseState struct definition
1 parentc605bb4 commitec108e7

File tree

3 files changed

+32
-13
lines changed

3 files changed

+32
-13
lines changed

‎src/backend/utils/adt/jsonb.c‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ jsonb_in_object_start(void *pstate)
285285
JsonbInState*_state= (JsonbInState*)pstate;
286286

287287
_state->res=pushJsonbValue(&_state->parseState,WJB_BEGIN_OBJECT,NULL);
288-
_state->parseState->unique_keys=_state->unique_keys;
288+
JsonbParseStateSetUniqueKeys(_state->parseState,_state->unique_keys);
289289
}
290290

291291
staticvoid
@@ -1143,8 +1143,9 @@ jsonb_build_object_worker(int nargs, Datum *args, bool *nulls, Oid *types,
11431143
memset(&result,0,sizeof(JsonbInState));
11441144

11451145
result.res=pushJsonbValue(&result.parseState,WJB_BEGIN_OBJECT,NULL);
1146-
result.parseState->unique_keys=unique_keys;
1147-
result.parseState->skip_nulls=absent_on_null;
1146+
1147+
JsonbParseStateSetUniqueKeys(result.parseState,unique_keys);
1148+
JsonbParseStateSetSkipNulls(result.parseState,absent_on_null);
11481149

11491150
for (i=0;i<nargs;i+=2)
11501151
{
@@ -1675,8 +1676,9 @@ jsonb_object_agg_transfn_worker(FunctionCallInfo fcinfo,
16751676
state->res=result;
16761677
result->res=pushJsonbValue(&result->parseState,
16771678
WJB_BEGIN_OBJECT,NULL);
1678-
result->parseState->unique_keys=unique_keys;
1679-
result->parseState->skip_nulls=absent_on_null;
1679+
1680+
JsonbParseStateSetUniqueKeys(result->parseState,unique_keys);
1681+
JsonbParseStateSetSkipNulls(result->parseState,absent_on_null);
16801682

16811683
MemoryContextSwitchTo(oldcontext);
16821684

‎src/backend/utils/adt/jsonb_util.c‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@
3838
#defineJSONB_MAX_ELEMS (Min(MaxAllocSize / sizeof(JsonbValue), JB_CMASK))
3939
#defineJSONB_MAX_PAIRS (Min(MaxAllocSize / sizeof(JsonbPair), JB_CMASK))
4040

41+
/* Conversion state used when parsing Jsonb from text, or for type coercion */
42+
structJsonbParseState
43+
{
44+
JsonbValuecontVal;
45+
Sizesize;
46+
structJsonbParseState*next;
47+
boolunique_keys;/* Check object key uniqueness */
48+
boolskip_nulls;/* Skip null object fields */
49+
};
50+
4151
staticvoidfillJsonbValue(JsonbContainer*container,intindex,
4252
char*base_addr,uint32offset,
4353
JsonbValue*result);
@@ -575,6 +585,18 @@ JsonbParseStateClone(JsonbParseState *state)
575585
returnresult;
576586
}
577587

588+
void
589+
JsonbParseStateSetUniqueKeys(JsonbParseState*state,boolunique_keys)
590+
{
591+
state->unique_keys=unique_keys;
592+
}
593+
594+
void
595+
JsonbParseStateSetSkipNulls(JsonbParseState*state,boolskip_nulls)
596+
{
597+
state->skip_nulls=skip_nulls;
598+
}
599+
578600
/*
579601
* Push JsonbValue into JsonbParseState.
580602
*

‎src/include/utils/jsonb.h‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -324,14 +324,7 @@ struct JsonbPair
324324
};
325325

326326
/* Conversion state used when parsing Jsonb from text, or for type coercion */
327-
typedefstructJsonbParseState
328-
{
329-
JsonbValuecontVal;
330-
Sizesize;
331-
structJsonbParseState*next;
332-
boolunique_keys;/* Check object key uniqueness */
333-
boolskip_nulls;/* Skip null object fields */
334-
}JsonbParseState;
327+
typedefstructJsonbParseStateJsonbParseState;
335328

336329
/*
337330
* JsonbIterator holds details of the type for each iteration. It also stores a
@@ -408,6 +401,8 @@ extern JsonbValue *pushJsonbValue(JsonbParseState **pstate,
408401
externJsonbValue*pushScalarJsonbValue(JsonbParseState**pstate,
409402
JsonbValue*jbval,boolisKey);
410403
externJsonbParseState*JsonbParseStateClone(JsonbParseState*state);
404+
externvoidJsonbParseStateSetUniqueKeys(JsonbParseState*state,boolunique_keys);
405+
externvoidJsonbParseStateSetSkipNulls(JsonbParseState*state,boolskip_nulls);
411406
externJsonbIterator*JsonbIteratorInit(JsonbContainer*container);
412407
externJsonbIteratorTokenJsonbIteratorNext(JsonbIterator**it,JsonbValue*val,
413408
boolskipNested);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp