|
18 | 18 | #include"postgres.h"
|
19 | 19 | #include"access/compression.h"
|
20 | 20 | #include"lib/stringinfo.h"
|
| 21 | +#include"utils/builtins.h" |
21 | 22 | #include"utils/expandeddatum.h"
|
22 | 23 | #include"utils/jsonb.h"
|
23 | 24 |
|
@@ -324,6 +325,60 @@ JsonValueInitBinary(JsonValue *val, JsonContainer *cont)
|
324 | 325 | returnval;
|
325 | 326 | }
|
326 | 327 |
|
| 328 | +staticinlineJsonbValue* |
| 329 | +JsonValueInitString(JsonbValue*jbv,constchar*str) |
| 330 | +{ |
| 331 | +jbv->type=jbvString; |
| 332 | +jbv->val.string.len=strlen(str); |
| 333 | +jbv->val.string.val=memcpy(palloc(jbv->val.string.len+1),str, |
| 334 | +jbv->val.string.len+1); |
| 335 | +returnjbv; |
| 336 | +} |
| 337 | + |
| 338 | +staticinlineJsonbValue* |
| 339 | +JsonValueInitStringWithLen(JsonbValue*jbv,constchar*str,intlen) |
| 340 | +{ |
| 341 | +jbv->type=jbvString; |
| 342 | +jbv->val.string.val=str; |
| 343 | +jbv->val.string.len=len; |
| 344 | +returnjbv; |
| 345 | +} |
| 346 | + |
| 347 | +staticinlineJsonbValue* |
| 348 | +JsonValueInitText(JsonbValue*jbv,text*txt) |
| 349 | +{ |
| 350 | +jbv->type=jbvString; |
| 351 | +jbv->val.string.val=VARDATA_ANY(txt); |
| 352 | +jbv->val.string.len=VARSIZE_ANY_EXHDR(txt); |
| 353 | +returnjbv; |
| 354 | +} |
| 355 | + |
| 356 | +staticinlineJsonbValue* |
| 357 | +JsonValueInitNumeric(JsonbValue*jbv,Numericnum) |
| 358 | +{ |
| 359 | +jbv->type=jbvNumeric; |
| 360 | +jbv->val.numeric=num; |
| 361 | +returnjbv; |
| 362 | +} |
| 363 | + |
| 364 | +staticinlineJsonbValue* |
| 365 | +JsonValueInitInteger(JsonbValue*jbv,int64i) |
| 366 | +{ |
| 367 | +jbv->type=jbvNumeric; |
| 368 | +jbv->val.numeric=DatumGetNumeric(DirectFunctionCall1( |
| 369 | +int8_numeric,Int64GetDatum(i))); |
| 370 | +returnjbv; |
| 371 | +} |
| 372 | + |
| 373 | +staticinlineJsonbValue* |
| 374 | +JsonValueInitFloat(JsonbValue*jbv,float4f) |
| 375 | +{ |
| 376 | +jbv->type=jbvNumeric; |
| 377 | +jbv->val.numeric=DatumGetNumeric(DirectFunctionCall1( |
| 378 | +float4_numeric,Float4GetDatum(f))); |
| 379 | +returnjbv; |
| 380 | +} |
| 381 | + |
327 | 382 | externJson*JsonValueToJson(JsonValue*val);
|
328 | 383 | externJsonValue*JsonToJsonValue(Json*json,JsonValue*jv);
|
329 | 384 | externJsonValue*JsonValueUnpackBinary(constJsonValue*jbv);
|
|