|
17 | 17 |
|
18 | 18 | #include"postgres.h"
|
19 | 19 | #include"lib/stringinfo.h"
|
| 20 | +#include"utils/builtins.h" |
20 | 21 | #include"utils/expandeddatum.h"
|
21 | 22 | #include"utils/jsonb.h"
|
22 | 23 |
|
@@ -379,6 +380,60 @@ JsonValueInitBinary(JsonValue *val, JsonContainer *cont)
|
379 | 380 | returnval;
|
380 | 381 | }
|
381 | 382 |
|
| 383 | +staticinlineJsonbValue* |
| 384 | +JsonValueInitString(JsonbValue*jbv,constchar*str) |
| 385 | +{ |
| 386 | +jbv->type=jbvString; |
| 387 | +jbv->val.string.len=strlen(str); |
| 388 | +jbv->val.string.val=memcpy(palloc(jbv->val.string.len+1),str, |
| 389 | +jbv->val.string.len+1); |
| 390 | +returnjbv; |
| 391 | +} |
| 392 | + |
| 393 | +staticinlineJsonbValue* |
| 394 | +JsonValueInitStringWithLen(JsonbValue*jbv,constchar*str,intlen) |
| 395 | +{ |
| 396 | +jbv->type=jbvString; |
| 397 | +jbv->val.string.val=str; |
| 398 | +jbv->val.string.len=len; |
| 399 | +returnjbv; |
| 400 | +} |
| 401 | + |
| 402 | +staticinlineJsonbValue* |
| 403 | +JsonValueInitText(JsonbValue*jbv,text*txt) |
| 404 | +{ |
| 405 | +jbv->type=jbvString; |
| 406 | +jbv->val.string.val=VARDATA_ANY(txt); |
| 407 | +jbv->val.string.len=VARSIZE_ANY_EXHDR(txt); |
| 408 | +returnjbv; |
| 409 | +} |
| 410 | + |
| 411 | +staticinlineJsonbValue* |
| 412 | +JsonValueInitNumeric(JsonbValue*jbv,Numericnum) |
| 413 | +{ |
| 414 | +jbv->type=jbvNumeric; |
| 415 | +jbv->val.numeric=num; |
| 416 | +returnjbv; |
| 417 | +} |
| 418 | + |
| 419 | +staticinlineJsonbValue* |
| 420 | +JsonValueInitInteger(JsonbValue*jbv,int64i) |
| 421 | +{ |
| 422 | +jbv->type=jbvNumeric; |
| 423 | +jbv->val.numeric=DatumGetNumeric(DirectFunctionCall1( |
| 424 | +int8_numeric,Int64GetDatum(i))); |
| 425 | +returnjbv; |
| 426 | +} |
| 427 | + |
| 428 | +staticinlineJsonbValue* |
| 429 | +JsonValueInitFloat(JsonbValue*jbv,float4f) |
| 430 | +{ |
| 431 | +jbv->type=jbvNumeric; |
| 432 | +jbv->val.numeric=DatumGetNumeric(DirectFunctionCall1( |
| 433 | +float4_numeric,Float4GetDatum(f))); |
| 434 | +returnjbv; |
| 435 | +} |
| 436 | + |
382 | 437 | externJson*JsonValueToJson(JsonValue*val);
|
383 | 438 | externJsonValue*JsonToJsonValue(Json*json,JsonValue*jv);
|
384 | 439 | externJsonValue*JsonValueUnpackBinary(constJsonValue*jbv);
|
|