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

Commit 67079ae

Browse files
author
Nikita Glukhov
committed
Avoid double compilation of jsonfuncs.c
1 parent 4732912 commit 67079ae

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
#define jsonb_object_two_arg json_object_two_arg
3636
#define jsonb_typeof json_typeof
3737

38-
#define jsonb_array_element json_array_element
39-
#define jsonb_array_element_text json_array_element_text
40-
#define jsonb_array_elements json_array_elements
41-
#define jsonb_array_elements_text json_array_elements_text
42-
#define jsonb_array_length json_array_length
43-
#define jsonb_canonical json_canonical
44-
#define jsonb_concat json_concat
45-
#define jsonb_delete json_delete
46-
#define jsonb_delete_idx json_delete_idx
47-
#define jsonb_delete_path json_delete_path
48-
#define jsonb_delete_array json_delete_array
49-
#define jsonb_each json_each
50-
#define jsonb_each_text json_each_text
51-
#define jsonb_insert json_insert
52-
#define jsonb_extract_path json_extract_path
53-
#define jsonb_extract_path_text json_extract_path_text
54-
#define jsonb_object_field json_object_field
55-
#define jsonb_object_field_text json_object_field_text
56-
#define jsonb_object_keys json_object_keys
57-
#define jsonb_extract_keys json_extract_keys
58-
#define jsonb_populate_record json_populate_record
59-
#define jsonb_populate_recordset json_populate_recordset
60-
#define jsonb_pretty json_pretty
61-
#define jsonb_set json_set
62-
#define jsonb_set_lax json_set_lax
63-
#define jsonb_to_record json_to_record
64-
#define jsonb_to_recordset json_to_recordset
65-
#define jsonb_get_element json_get_element
66-
#define jsonb_set_element json_set_element
67-
6838
#define JsonxContainerOps (&jsontContainerOps)
6939
#define JsonxGetUniquified(json) (json)
7040
#define JsonxPGetDatum(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+
JsonbValue resbuf;
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+
JsonbValue resbuf;
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)