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

Commit67079ae

Browse files
author
Nikita Glukhov
committed
Avoid double compilation of jsonfuncs.c
1 parent4732912 commit67079ae

File tree

5 files changed

+504
-299
lines changed

5 files changed

+504
-299
lines changed

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

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,6 @@
3535
#definejsonb_object_two_argjson_object_two_arg
3636
#definejsonb_typeofjson_typeof
3737

38-
#definejsonb_array_elementjson_array_element
39-
#definejsonb_array_element_textjson_array_element_text
40-
#definejsonb_array_elementsjson_array_elements
41-
#definejsonb_array_elements_textjson_array_elements_text
42-
#definejsonb_array_lengthjson_array_length
43-
#definejsonb_canonicaljson_canonical
44-
#definejsonb_concatjson_concat
45-
#definejsonb_deletejson_delete
46-
#definejsonb_delete_idxjson_delete_idx
47-
#definejsonb_delete_pathjson_delete_path
48-
#definejsonb_delete_arrayjson_delete_array
49-
#definejsonb_eachjson_each
50-
#definejsonb_each_textjson_each_text
51-
#definejsonb_insertjson_insert
52-
#definejsonb_extract_pathjson_extract_path
53-
#definejsonb_extract_path_textjson_extract_path_text
54-
#definejsonb_object_fieldjson_object_field
55-
#definejsonb_object_field_textjson_object_field_text
56-
#definejsonb_object_keysjson_object_keys
57-
#definejsonb_extract_keysjson_extract_keys
58-
#definejsonb_populate_recordjson_populate_record
59-
#definejsonb_populate_recordsetjson_populate_recordset
60-
#definejsonb_prettyjson_pretty
61-
#definejsonb_setjson_set
62-
#definejsonb_set_laxjson_set_lax
63-
#definejsonb_to_recordjson_to_record
64-
#definejsonb_to_recordsetjson_to_recordset
65-
#definejsonb_get_elementjson_get_element
66-
#definejsonb_set_elementjson_set_element
67-
6838
#defineJsonxContainerOps(&jsontContainerOps)
6939
#defineJsonxGetUniquified(json)(json)
7040
#defineJsonxPGetDatum(json)JsontPGetDatum(json)
@@ -291,7 +261,6 @@ escape_json(StringInfo buf, const char *str)
291261
}
292262

293263
#include"jsonb.c"
294-
#include"jsonfuncs.c"
295264

296265
/*
297266
* SQL function array_to_json(row)

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

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -244,16 +244,29 @@ jsonb_subscript_fetch(ExprState *state,
244244
SubscriptingRefState*sbsrefstate=op->d.sbsref.state;
245245
JsonbSubWorkspace*workspace= (JsonbSubWorkspace*)sbsrefstate->workspace;
246246
Jsonb*jsonbSource;
247+
JsonbValue*res;
248+
JsonbValueresbuf;
247249

248250
/* Should not get here if source jsonb (or any subscript) is null */
249251
Assert(!(*op->resnull));
250252

251253
jsonbSource=DatumGetJsonbP(*op->resvalue);
252-
*op->resvalue=jsonb_get_element(jsonbSource,
253-
workspace->index,
254-
sbsrefstate->numupper,
255-
op->resnull,
256-
false);
254+
255+
res=jsonb_get_element(jsonbSource,
256+
workspace->index,
257+
sbsrefstate->numupper,
258+
&resbuf);
259+
260+
if (res!=NULL)
261+
{
262+
*op->resnull= false;
263+
*op->resvalue=JsonbPGetDatum(JsonbValueToJsonb(res));
264+
}
265+
else
266+
{
267+
*op->resnull= true;
268+
*op->resvalue=PointerGetDatum(NULL);
269+
}
257270
}
258271

259272
/*
@@ -340,12 +353,22 @@ jsonb_subscript_fetch_old(ExprState *state,
340353
else
341354
{
342355
Jsonb*jsonbSource=DatumGetJsonbP(*op->resvalue);
356+
JsonbValueresbuf;
357+
JsonbValue*res=jsonb_get_element(jsonbSource,
358+
sbsrefstate->upperindex,
359+
sbsrefstate->numupper,
360+
&resbuf);
343361

344-
sbsrefstate->prevvalue=jsonb_get_element(jsonbSource,
345-
sbsrefstate->upperindex,
346-
sbsrefstate->numupper,
347-
&sbsrefstate->prevnull,
348-
false);
362+
if (res!=NULL)
363+
{
364+
sbsrefstate->prevnull= false;
365+
sbsrefstate->prevvalue=JsonbPGetDatum(JsonbValueToJsonb(res));
366+
}
367+
else
368+
{
369+
sbsrefstate->prevnull= true;
370+
sbsrefstate->prevvalue=PointerGetDatum(NULL);
371+
}
349372
}
350373
}
351374

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp