MCPcopy Create free account
hub / github.com/apache/cloudberry / PLyObject_FromJsonbValue

Function PLyObject_FromJsonbValue

contrib/jsonb_plpython/jsonb_plpython.c:98–133  ·  view source on GitHub ↗

* PLyObject_FromJsonbValue * * Transform JsonbValue to PyObject. */

Source from the content-addressed store, hash-verified

96 * Transform JsonbValue to PyObject.
97 */
98static PyObject *
99PLyObject_FromJsonbValue(JsonbValue *jsonbValue)
100{
101 switch (jsonbValue->type)
102 {
103 case jbvNull:
104 Py_RETURN_NONE;
105
106 case jbvBinary:
107 return PLyObject_FromJsonbContainer(jsonbValue->val.binary.data);
108
109 case jbvNumeric:
110 {
111 Datum num;
112 char *str;
113
114 num = NumericGetDatum(jsonbValue->val.numeric);
115 str = DatumGetCString(DirectFunctionCall1(numeric_out, num));
116
117 return PyObject_CallFunction(decimal_constructor, "s", str);
118 }
119
120 case jbvString:
121 return PLyString_FromJsonbValue(jsonbValue);
122
123 case jbvBool:
124 if (jsonbValue->val.boolean)
125 Py_RETURN_TRUE;
126 else
127 Py_RETURN_FALSE;
128
129 default:
130 elog(ERROR, "unexpected jsonb value type: %d", jsonbValue->type);
131 return NULL;
132 }
133}
134
135/*
136 * PLyObject_FromJsonbContainer

Callers 1

Calls 3

DatumGetCStringFunction · 0.85
PLyString_FromJsonbValueFunction · 0.85

Tested by

no test coverage detected