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

Commite70f462

Browse files
author
Nikita Glukhov
committed
Add buf parameter to JsonToCString()
1 parentc30f001 commite70f462

File tree

3 files changed

+10
-15
lines changed

3 files changed

+10
-15
lines changed

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jsonb_out(PG_FUNCTION_ARGS)
111111
Jsonb*jb=PG_GETARG_JSONB_P(0);
112112
char*out;
113113

114-
out=JsonToCString(JsonbRoot(jb));
114+
out=JsonToCString(JsonbRoot(jb),NULL);
115115

116116
PG_RETURN_CSTRING(out);
117117
}
@@ -129,7 +129,7 @@ jsonb_send(PG_FUNCTION_ARGS)
129129
StringInfojtext=makeStringInfo();
130130
intversion=1;
131131

132-
(void)JsonbToCString(jtext,JsonbRoot(jb),JsonbGetSize(jb));
132+
(void)JsonToCString(JsonbRoot(jb),jtext);
133133

134134
pq_begintypsend(&buf);
135135
pq_sendint8(&buf,version);
@@ -522,8 +522,7 @@ JsonbToCStringWorker(StringInfo out, JsonbContainer *in, int estimated_len, bool
522522
{
523523
first= false;
524524
if (v.type==jbvBinary)
525-
JsonbToCString(out,v.val.binary.data,
526-
v.val.binary.data->len);
525+
JsonToCString(v.val.binary.data,out);
527526
else
528527
jsonb_put_escaped_value(out,&v);
529528
}
@@ -548,8 +547,7 @@ JsonbToCStringWorker(StringInfo out, JsonbContainer *in, int estimated_len, bool
548547
add_indent(out,use_indent,level);
549548

550549
if (v.type==jbvBinary)
551-
JsonbToCString(out,v.val.binary.data,
552-
v.val.binary.data->len);
550+
JsonToCString(v.val.binary.data,out);
553551
else
554552
jsonb_put_escaped_value(out,&v);
555553
break;

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

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,9 +1501,8 @@ jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull, bool as_text)
15011501
{
15021502
if (as_text)
15031503
{
1504-
returnPointerGetDatum(cstring_to_text(JsonbToCString(NULL,
1505-
container,
1506-
JsonbGetSize(jb))));
1504+
returnPointerGetDatum(cstring_to_text(JsonToCStringExt(NULL,container,
1505+
JsonbGetSize(jb))));
15071506
}
15081507
else
15091508
{
@@ -1770,8 +1769,7 @@ JsonbValueAsText(JsonbValue *v)
17701769
StringInfoDatajtext;
17711770

17721771
initStringInfo(&jtext);
1773-
(void)JsonbToCString(&jtext,v->val.binary.data,
1774-
v->val.binary.data->len);
1772+
(void)JsonToCString(v->val.binary.data,&jtext);
17751773

17761774
returncstring_to_text_with_len(jtext.data,jtext.len);
17771775
}
@@ -2921,7 +2919,7 @@ populate_scalar(ScalarIOData *io, Oid typid, int32 typmod, JsValue *jsv)
29212919
*/
29222920
Jsonb*jsonb=JsonbValueToJsonb(jbv);
29232921

2924-
str=JsonbToCString(NULL,&jsonb->root,-1);
2922+
str=JsonToCString(&jsonb->root,NULL);
29252923
}
29262924
elseif (jbv->type==jbvString)/* quotes are stripped */
29272925
str=pnstrdup(jbv->val.string.val,jbv->val.string.len);
@@ -2931,8 +2929,7 @@ populate_scalar(ScalarIOData *io, Oid typid, int32 typmod, JsValue *jsv)
29312929
str=DatumGetCString(DirectFunctionCall1(numeric_out,
29322930
PointerGetDatum(jbv->val.numeric)));
29332931
elseif (jbv->type==jbvBinary)
2934-
str=JsonbToCString(NULL,jbv->val.binary.data,
2935-
jbv->val.binary.data->len);
2932+
str=JsonToCString(jbv->val.binary.data,NULL);
29362933
else
29372934
elog(ERROR,"unrecognized jsonb type: %d", (int)jbv->type);
29382935
}

‎src/include/utils/json_generic.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ extern char *JsonbToCStringRaw(StringInfo out, JsonContainer *in,
258258
externchar*JsonbToCStringIndent(StringInfoout,JsonContainer*in,
259259
intestimated_len);
260260

261-
#defineJsonToCString(jc)JsonToCStringExt(NULL, jc, (jc)->len)
261+
#defineJsonToCString(jc,buf)((jc)->ops->toString(buf, jc, (jc)->len))
262262

263263
#defineJsonToCStringExt(out,in,estimated_len) \
264264
((*(in)->ops->toString)(out, in, estimated_len))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp