From 720106e4f7d5860c90dfb8a1b72b739e389648e8 Mon Sep 17 00:00:00 2001 From: stalkerg Date: Tue, 30 Aug 2016 18:40:43 +0300 Subject: [PATCH 1/3] Port to postgres 9.6 --- sr_plan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sr_plan.c b/sr_plan.c index d9ebd23..a35dace 100644 --- a/sr_plan.c +++ b/sr_plan.c @@ -83,7 +83,7 @@ PlannedStmt *sr_planner(Query *parse, sr_plans_table_rv = makeRangeVar("public", "sr_plans", -1); sr_plans_heap = heap_openrv(sr_plans_table_rv, heap_lock); - query_index_rel_oid = DatumGetObjectId(DirectFunctionCall1(to_regclass, CStringGetDatum("sr_plans_query_hash_idx"))); + query_index_rel_oid = DatumGetObjectId(DirectFunctionCall1(to_regclass, PointerGetDatum(cstring_to_text("sr_plans_query_hash_idx")))); if (query_index_rel_oid == InvalidOid) { elog(WARNING, "Not found sr_plans_query_hash_idx index"); @@ -485,4 +485,4 @@ sr_plan_invalid_table(PG_FUNCTION_ARGS) heap_close(sr_plans_heap, RowExclusiveLock); PG_RETURN_NULL(); -} \ No newline at end of file +} From c988035970ee5ca13ebf3ce7210dff202a2bc98f Mon Sep 17 00:00:00 2001 From: stalkerg Date: Tue, 30 Aug 2016 18:43:45 +0300 Subject: [PATCH 2/3] Add des and ser. --- deserialize.c | 28485 ++++++++++++++++++++++++++++++++++++++++++++++++ serialize.c | 23781 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52266 insertions(+) create mode 100644 deserialize.c create mode 100644 serialize.c diff --git a/deserialize.c b/deserialize.c new file mode 100644 index 0000000..a84cbde --- /dev/null +++ b/deserialize.c @@ -0,0 +1,28485 @@ +#include "sr_plan.h" + +static +void *jsonb_to_node(JsonbContainer *container); + +static List * +list_deser(JsonbContainer *container, bool oid); + +typedef int (*myFuncDef)(int, int); +static void *(*hook) (void *); + + + + + + + + + + +static List * +list_deser(JsonbContainer *container, bool oid) +{ + int type; + JsonbValue v; + JsonbIterator *it; + List *l = NIL; + it = JsonbIteratorInit(container); + + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + switch(v.type) + { + case jbvNumeric: + if (oid) + l = lappend_oid(l, DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric)))); + else + l = lappend_int(l, DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric)))); + break; + case jbvString: + { + char *result = palloc(v.val.string.len + 1); + result[v.val.string.len] = '\0'; + memcpy(result, v.val.string.val, v.val.string.len); + l = lappend(l, makeString(result)); + } + break; + case jbvNull: + l = lappend(l, NULL); + break; + default: + l = lappend(l, jsonb_to_node(v.val.binary.data)); + } + } + } + return l; +} + + + + + + + + + + + + + + static + void *RelabelType_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *VariableSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateOpClassStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CompositeTypeStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ArrayRef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeTblRef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ScalarArrayOpExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterEnumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *OnConflictExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterObjectSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Query_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterDefaultPrivilegesStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateEventTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BitmapIndexScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateRangeStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateSeqStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *GroupingFunc_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeTableSample_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BitmapOr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ReindexStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WindowFunc_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *NullTest_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ConvertRowtypeExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DeallocateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterDatabaseSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateOpFamilyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CustomScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WindowAgg_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *MergeAppend_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterSeqStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BooleanTest_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RoleSpec_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RecursiveUnion_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *MergeJoin_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterEventTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CoerceToDomainValue_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Append_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Scan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ModifyTable_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropOwnedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTableMoveAllStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *NestLoop_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *InlineCodeBlock_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropTableSpaceStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateExtensionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ViewStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlternativeSubPlan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *IntoClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *GrantStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropdbStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *OnConflictClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *IndexOnlyScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_Star_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Constraint_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterPolicyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *LockingClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FuncCall_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateTransformStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *NestLoopParam_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *MinMaxExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *UpdateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Agg_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SetToDefault_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTSConfigurationStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_Expr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SubLink_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterOperatorStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *IndexStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterDomainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TidScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *PlanRowMark_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *PrepareStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterDatabaseStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SelectStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FromExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Param_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTSDictionaryStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ReassignOwnedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *MultiAssignRef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *LoadStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RefreshMatViewStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DeleteStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SubqueryScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateCastStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ConstraintsSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WindowClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ArrayExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *InferClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BitmapHeapScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CaseTestExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *VariableShowStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Expr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateAmStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FetchStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Sort_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Const_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CoerceToDomain_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ExplainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TransactionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BoolExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *GrantRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ParamRef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *HashJoin_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ClosePortalStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Plan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CopyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateForeignServerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SetOp_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CollateExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_ArrayExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *LockStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateTableSpaceStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TargetEntry_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *XmlSerialize_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TypeName_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *VacuumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SampleScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeVar_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_Indices_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateFdwStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_Indirection_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CurrentOfExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TableLikeClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateForeignTableStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeTblEntry_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FunctionParameter_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *OpExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterFdwStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *BitmapAnd_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreatePolicyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *InferenceElem_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ExecuteStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *XmlExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SecLabelStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreatePLangStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DeclareCursorStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterExtensionContentsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateOpClassItem_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RowMarkClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RowExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RenameStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterExtensionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Unique_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FunctionScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *LockRows_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *InsertStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterRoleSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CollateClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTableSpaceOptionsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DefElem_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DiscardStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RuleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ArrayCoerceExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Limit_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Material_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AccessPriv_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ColumnRef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterOpFamilyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Aggref_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateFunctionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ClusterStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *PlannedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CheckPointStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CteScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RowCompareExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CaseWhen_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ColumnDef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *A_Const_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ValuesScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *PlanInvalItem_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ListenStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Gather_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateTableAsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *UnlistenStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateConversionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterFunctionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TruncateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ResTarget_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CoerceViaIO_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CaseExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateEnumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeSubselect_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DropUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *JoinExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *IndexScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Group_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *IndexElem_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SortBy_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Join_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DoStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FieldStore_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Hash_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTableCmd_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WorkTableScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WindowDef_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FieldSelect_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeFunction_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterSystemStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterObjectDependsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *GroupingSet_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FuncExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CommentStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *NotifyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TypeCast_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WithCheckOption_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SubPlan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Result_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SetOperationStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ReplicaIdentityStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Alias_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CommonTableExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreatedbStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *WithClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ForeignScan_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *FuncWithArgs_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterForeignServerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *DefineStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterTableStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *ImportForeignSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Var_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *SortGroupClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CreateDomainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *TableSampleClause_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *CoalesceExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *RangeTblFunction_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *NamedArgExpr_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *Value_deser(JsonbContainer *container, void *node_cast, int replace_type); + static + void *AlterOwnerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type); + +static Datum +datum_deser(JsonbValue *var_value, bool typbyval) +{ + Datum res; + char *s; + int i = 0; + int type; + JsonbValue v; + + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + + if (typbyval) + { + if (it->nElems > (Size) sizeof(Datum)) + elog(ERROR, "byval datum but length = %d", it->nElems); + res = (Datum) 0; + s = (char *) (&res); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + if (i >= (Size) sizeof(Datum)) + break; + + s[i] = (char) DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + i++; + } + } + } + else if (it->nElems <= 0) + { + res = (Datum) NULL; + } + else + { + s = (char *) palloc(it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + if (i >= it->nElems) + break; + + s[i] = (char) DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + i++; + } + } + res = PointerGetDatum(s); + + } + + return res; +} + + + static + void *RelabelType_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RelabelType *local_node; + if (node_cast != NULL) + local_node = (RelabelType *) node_cast; + else + local_node = makeNode(RelabelType); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relabelformat"); + var_key.val.string.val = strdup("relabelformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relabelformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultcollid"); + var_key.val.string.val = strdup("resultcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttypmod"); + var_key.val.string.val = strdup("resulttypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *VariableSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + VariableSetStmt *local_node; + if (node_cast != NULL) + local_node = (VariableSetStmt *) node_cast; + else + local_node = makeNode(VariableSetStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_local"); + var_key.val.string.val = strdup("is_local"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_local = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateOpClassStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateOpClassStmt *local_node; + if (node_cast != NULL) + local_node = (CreateOpClassStmt *) node_cast; + else + local_node = makeNode(CreateOpClassStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isDefault"); + var_key.val.string.val = strdup("isDefault"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isDefault = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfamilyname"); + var_key.val.string.val = strdup("opfamilyname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opfamilyname = NULL; + else + local_node->opfamilyname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("amname"); + var_key.val.string.val = strdup("amname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->amname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->amname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opclassname"); + var_key.val.string.val = strdup("opclassname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opclassname = NULL; + else + local_node->opclassname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("datatype"); + var_key.val.string.val = strdup("datatype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->datatype = NULL; + } else { + local_node->datatype = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("items"); + var_key.val.string.val = strdup("items"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->items = NULL; + else + local_node->items = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CompositeTypeStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CompositeTypeStmt *local_node; + if (node_cast != NULL) + local_node = (CompositeTypeStmt *) node_cast; + else + local_node = makeNode(CompositeTypeStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coldeflist"); + var_key.val.string.val = strdup("coldeflist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->coldeflist = NULL; + else + local_node->coldeflist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typevar"); + var_key.val.string.val = strdup("typevar"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->typevar = NULL; + } else { + local_node->typevar = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ArrayRef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ArrayRef *local_node; + if (node_cast != NULL) + local_node = (ArrayRef *) node_cast; + else + local_node = makeNode(ArrayRef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("reftypmod"); + var_key.val.string.val = strdup("reftypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->reftypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refupperindexpr"); + var_key.val.string.val = strdup("refupperindexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->refupperindexpr = NULL; + else + local_node->refupperindexpr = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refexpr"); + var_key.val.string.val = strdup("refexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->refexpr = NULL; + } else { + local_node->refexpr = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refarraytype"); + var_key.val.string.val = strdup("refarraytype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->refarraytype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refassgnexpr"); + var_key.val.string.val = strdup("refassgnexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->refassgnexpr = NULL; + } else { + local_node->refassgnexpr = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refelemtype"); + var_key.val.string.val = strdup("refelemtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->refelemtype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refcollid"); + var_key.val.string.val = strdup("refcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->refcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("reflowerindexpr"); + var_key.val.string.val = strdup("reflowerindexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->reflowerindexpr = NULL; + else + local_node->reflowerindexpr = list_deser(var_value->val.binary.data, false); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeTblRef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeTblRef *local_node; + if (node_cast != NULL) + local_node = (RangeTblRef *) node_cast; + else + local_node = makeNode(RangeTblRef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rtindex"); + var_key.val.string.val = strdup("rtindex"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rtindex = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ScalarArrayOpExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ScalarArrayOpExpr *local_node; + if (node_cast != NULL) + local_node = (ScalarArrayOpExpr *) node_cast; + else + local_node = makeNode(ScalarArrayOpExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfuncid"); + var_key.val.string.val = strdup("opfuncid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opfuncid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opno"); + var_key.val.string.val = strdup("opno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opno = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("useOr"); + var_key.val.string.val = strdup("useOr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->useOr = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterEnumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterEnumStmt *local_node; + if (node_cast != NULL) + local_node = (AlterEnumStmt *) node_cast; + else + local_node = makeNode(AlterEnumStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->typeName = NULL; + else + local_node->typeName = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skipIfExists"); + var_key.val.string.val = strdup("skipIfExists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skipIfExists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newVal"); + var_key.val.string.val = strdup("newVal"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->newVal = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->newVal = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newValIsAfter"); + var_key.val.string.val = strdup("newValIsAfter"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->newValIsAfter = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newValNeighbor"); + var_key.val.string.val = strdup("newValNeighbor"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->newValNeighbor = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->newValNeighbor = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *OnConflictExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + OnConflictExpr *local_node; + if (node_cast != NULL) + local_node = (OnConflictExpr *) node_cast; + else + local_node = makeNode(OnConflictExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("exclRelIndex"); + var_key.val.string.val = strdup("exclRelIndex"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->exclRelIndex = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("action"); + var_key.val.string.val = strdup("action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->action = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arbiterWhere"); + var_key.val.string.val = strdup("arbiterWhere"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arbiterWhere = NULL; + } else { + local_node->arbiterWhere = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("exclRelTlist"); + var_key.val.string.val = strdup("exclRelTlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->exclRelTlist = NULL; + else + local_node->exclRelTlist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraint"); + var_key.val.string.val = strdup("constraint"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->constraint = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictSet"); + var_key.val.string.val = strdup("onConflictSet"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->onConflictSet = NULL; + else + local_node->onConflictSet = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arbiterElems"); + var_key.val.string.val = strdup("arbiterElems"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->arbiterElems = NULL; + else + local_node->arbiterElems = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictWhere"); + var_key.val.string.val = strdup("onConflictWhere"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->onConflictWhere = NULL; + } else { + local_node->onConflictWhere = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterObjectSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterObjectSchemaStmt *local_node; + if (node_cast != NULL) + local_node = (AlterObjectSchemaStmt *) node_cast; + else + local_node = makeNode(AlterObjectSchemaStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("object"); + var_key.val.string.val = strdup("object"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->object = NULL; + else + local_node->object = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objarg"); + var_key.val.string.val = strdup("objarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objarg = NULL; + else + local_node->objarg = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newschema"); + var_key.val.string.val = strdup("newschema"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->newschema = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->newschema = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objectType"); + var_key.val.string.val = strdup("objectType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objectType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Query_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Query *local_node; + if (node_cast != NULL) + local_node = (Query *) node_cast; + else + local_node = makeNode(Query); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("commandType"); + var_key.val.string.val = strdup("commandType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->commandType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortClause"); + var_key.val.string.val = strdup("sortClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->sortClause = NULL; + else + local_node->sortClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultRelation"); + var_key.val.string.val = strdup("resultRelation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultRelation = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("queryId"); + var_key.val.string.val = strdup("queryId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->queryId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitOffset"); + var_key.val.string.val = strdup("limitOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitOffset = NULL; + } else { + local_node->limitOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cteList"); + var_key.val.string.val = strdup("cteList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cteList = NULL; + else + local_node->cteList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setOperations"); + var_key.val.string.val = strdup("setOperations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->setOperations = NULL; + } else { + local_node->setOperations = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasModifyingCTE"); + var_key.val.string.val = strdup("hasModifyingCTE"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasModifyingCTE = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("windowClause"); + var_key.val.string.val = strdup("windowClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->windowClause = NULL; + else + local_node->windowClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targetList"); + var_key.val.string.val = strdup("targetList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->targetList = NULL; + else + local_node->targetList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("utilityStmt"); + var_key.val.string.val = strdup("utilityStmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->utilityStmt = NULL; + } else { + local_node->utilityStmt = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasRowSecurity"); + var_key.val.string.val = strdup("hasRowSecurity"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasRowSecurity = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitCount"); + var_key.val.string.val = strdup("limitCount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitCount = NULL; + } else { + local_node->limitCount = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("canSetTag"); + var_key.val.string.val = strdup("canSetTag"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->canSetTag = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returningList"); + var_key.val.string.val = strdup("returningList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->returningList = NULL; + else + local_node->returningList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasAggs"); + var_key.val.string.val = strdup("hasAggs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasAggs = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rowMarks"); + var_key.val.string.val = strdup("rowMarks"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rowMarks = NULL; + else + local_node->rowMarks = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("groupingSets"); + var_key.val.string.val = strdup("groupingSets"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->groupingSets = NULL; + else + local_node->groupingSets = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withCheckOptions"); + var_key.val.string.val = strdup("withCheckOptions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->withCheckOptions = NULL; + else + local_node->withCheckOptions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasDistinctOn"); + var_key.val.string.val = strdup("hasDistinctOn"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasDistinctOn = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasRecursive"); + var_key.val.string.val = strdup("hasRecursive"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasRecursive = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasWindowFuncs"); + var_key.val.string.val = strdup("hasWindowFuncs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasWindowFuncs = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasSubLinks"); + var_key.val.string.val = strdup("hasSubLinks"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasSubLinks = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("jointree"); + var_key.val.string.val = strdup("jointree"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->jointree = NULL; + } else { + local_node->jointree = (FromExpr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasForUpdate"); + var_key.val.string.val = strdup("hasForUpdate"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasForUpdate = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("groupClause"); + var_key.val.string.val = strdup("groupClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->groupClause = NULL; + else + local_node->groupClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraintDeps"); + var_key.val.string.val = strdup("constraintDeps"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->constraintDeps = NULL; + else + local_node->constraintDeps = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("distinctClause"); + var_key.val.string.val = strdup("distinctClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->distinctClause = NULL; + else + local_node->distinctClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("querySource"); + var_key.val.string.val = strdup("querySource"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->querySource = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflict"); + var_key.val.string.val = strdup("onConflict"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->onConflict = NULL; + } else { + local_node->onConflict = (OnConflictExpr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("havingQual"); + var_key.val.string.val = strdup("havingQual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->havingQual = NULL; + } else { + local_node->havingQual = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rtable"); + var_key.val.string.val = strdup("rtable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rtable = NULL; + else + local_node->rtable = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterDefaultPrivilegesStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterDefaultPrivilegesStmt *local_node; + if (node_cast != NULL) + local_node = (AlterDefaultPrivilegesStmt *) node_cast; + else + local_node = makeNode(AlterDefaultPrivilegesStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("action"); + var_key.val.string.val = strdup("action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->action = NULL; + } else { + local_node->action = (GrantStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateEventTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateEventTrigStmt *local_node; + if (node_cast != NULL) + local_node = (CreateEventTrigStmt *) node_cast; + else + local_node = makeNode(CreateEventTrigStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("eventname"); + var_key.val.string.val = strdup("eventname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->eventname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->eventname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("trigname"); + var_key.val.string.val = strdup("trigname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->trigname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->trigname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whenclause"); + var_key.val.string.val = strdup("whenclause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->whenclause = NULL; + else + local_node->whenclause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcname"); + var_key.val.string.val = strdup("funcname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcname = NULL; + else + local_node->funcname = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BitmapIndexScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BitmapIndexScan *local_node; + if (node_cast != NULL) + local_node = (BitmapIndexScan *) node_cast; + else + local_node = makeNode(BitmapIndexScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexid"); + var_key.val.string.val = strdup("indexid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexqualorig"); + var_key.val.string.val = strdup("indexqualorig"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexqualorig = NULL; + else + local_node->indexqualorig = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexqual"); + var_key.val.string.val = strdup("indexqual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexqual = NULL; + else + local_node->indexqual = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateRangeStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateRangeStmt *local_node; + if (node_cast != NULL) + local_node = (CreateRangeStmt *) node_cast; + else + local_node = makeNode(CreateRangeStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->typeName = NULL; + else + local_node->typeName = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("params"); + var_key.val.string.val = strdup("params"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->params = NULL; + else + local_node->params = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateSeqStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateSeqStmt *local_node; + if (node_cast != NULL) + local_node = (CreateSeqStmt *) node_cast; + else + local_node = makeNode(CreateSeqStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ownerId"); + var_key.val.string.val = strdup("ownerId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ownerId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sequence"); + var_key.val.string.val = strdup("sequence"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->sequence = NULL; + } else { + local_node->sequence = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *GroupingFunc_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + GroupingFunc *local_node; + if (node_cast != NULL) + local_node = (GroupingFunc *) node_cast; + else + local_node = makeNode(GroupingFunc); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refs"); + var_key.val.string.val = strdup("refs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->refs = NULL; + else + local_node->refs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cols"); + var_key.val.string.val = strdup("cols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cols = NULL; + else + local_node->cols = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agglevelsup"); + var_key.val.string.val = strdup("agglevelsup"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->agglevelsup = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeTableSample_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeTableSample *local_node; + if (node_cast != NULL) + local_node = (RangeTableSample *) node_cast; + else + local_node = makeNode(RangeTableSample); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("method"); + var_key.val.string.val = strdup("method"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->method = NULL; + else + local_node->method = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("repeatable"); + var_key.val.string.val = strdup("repeatable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->repeatable = NULL; + } else { + local_node->repeatable = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BitmapOr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BitmapOr *local_node; + if (node_cast != NULL) + local_node = (BitmapOr *) node_cast; + else + local_node = makeNode(BitmapOr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("bitmapplans"); + var_key.val.string.val = strdup("bitmapplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->bitmapplans = NULL; + else + local_node->bitmapplans = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ReindexStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ReindexStmt *local_node; + if (node_cast != NULL) + local_node = (ReindexStmt *) node_cast; + else + local_node = makeNode(ReindexStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->options = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropStmt *local_node; + if (node_cast != NULL) + local_node = (DropStmt *) node_cast; + else + local_node = makeNode(DropStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objects"); + var_key.val.string.val = strdup("objects"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objects = NULL; + else + local_node->objects = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arguments"); + var_key.val.string.val = strdup("arguments"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->arguments = NULL; + else + local_node->arguments = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("removeType"); + var_key.val.string.val = strdup("removeType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->removeType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("concurrent"); + var_key.val.string.val = strdup("concurrent"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->concurrent = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WindowFunc_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WindowFunc *local_node; + if (node_cast != NULL) + local_node = (WindowFunc *) node_cast; + else + local_node = makeNode(WindowFunc); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggfilter"); + var_key.val.string.val = strdup("aggfilter"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->aggfilter = NULL; + } else { + local_node->aggfilter = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winstar"); + var_key.val.string.val = strdup("winstar"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winstar = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winagg"); + var_key.val.string.val = strdup("winagg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winagg = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("wintype"); + var_key.val.string.val = strdup("wintype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->wintype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winref"); + var_key.val.string.val = strdup("winref"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winref = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("wincollid"); + var_key.val.string.val = strdup("wincollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->wincollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winfnoid"); + var_key.val.string.val = strdup("winfnoid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winfnoid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *NullTest_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + NullTest *local_node; + if (node_cast != NULL) + local_node = (NullTest *) node_cast; + else + local_node = makeNode(NullTest); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nulltesttype"); + var_key.val.string.val = strdup("nulltesttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nulltesttype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("argisrow"); + var_key.val.string.val = strdup("argisrow"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->argisrow = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ConvertRowtypeExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ConvertRowtypeExpr *local_node; + if (node_cast != NULL) + local_node = (ConvertRowtypeExpr *) node_cast; + else + local_node = makeNode(ConvertRowtypeExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("convertformat"); + var_key.val.string.val = strdup("convertformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->convertformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DeallocateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DeallocateStmt *local_node; + if (node_cast != NULL) + local_node = (DeallocateStmt *) node_cast; + else + local_node = makeNode(DeallocateStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterDatabaseSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterDatabaseSetStmt *local_node; + if (node_cast != NULL) + local_node = (AlterDatabaseSetStmt *) node_cast; + else + local_node = makeNode(AlterDatabaseSetStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dbname"); + var_key.val.string.val = strdup("dbname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->dbname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->dbname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setstmt"); + var_key.val.string.val = strdup("setstmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->setstmt = NULL; + } else { + local_node->setstmt = (VariableSetStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateOpFamilyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateOpFamilyStmt *local_node; + if (node_cast != NULL) + local_node = (CreateOpFamilyStmt *) node_cast; + else + local_node = makeNode(CreateOpFamilyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfamilyname"); + var_key.val.string.val = strdup("opfamilyname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opfamilyname = NULL; + else + local_node->opfamilyname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("amname"); + var_key.val.string.val = strdup("amname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->amname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->amname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CustomScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CustomScan *local_node; + if (node_cast != NULL) + local_node = (CustomScan *) node_cast; + else + local_node = makeNode(CustomScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("custom_scan_tlist"); + var_key.val.string.val = strdup("custom_scan_tlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->custom_scan_tlist = NULL; + else + local_node->custom_scan_tlist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("custom_relids"); + var_key.val.string.val = strdup("custom_relids"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->custom_relids = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->custom_relids = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("custom_plans"); + var_key.val.string.val = strdup("custom_plans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->custom_plans = NULL; + else + local_node->custom_plans = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("custom_exprs"); + var_key.val.string.val = strdup("custom_exprs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->custom_exprs = NULL; + else + local_node->custom_exprs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("custom_private"); + var_key.val.string.val = strdup("custom_private"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->custom_private = NULL; + else + local_node->custom_private = list_deser(var_value->val.binary.data, false); + + } + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("flags"); + var_key.val.string.val = strdup("flags"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->flags = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + /* NOT FOUND TYPE: *CustomScanMethods */ + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WindowAgg_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WindowAgg *local_node; + if (node_cast != NULL) + local_node = (WindowAgg *) node_cast; + else + local_node = makeNode(WindowAgg); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ordNumCols"); + var_key.val.string.val = strdup("ordNumCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ordNumCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("partOperators"); + var_key.val.string.val = strdup("partOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->partNumCols = it->nElems; + local_node->partOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->partOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ordOperators"); + var_key.val.string.val = strdup("ordOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->ordNumCols = it->nElems; + local_node->ordOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->ordOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ordColIdx"); + var_key.val.string.val = strdup("ordColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->ordNumCols = it->nElems; + local_node->ordColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->ordColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("endOffset"); + var_key.val.string.val = strdup("endOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->endOffset = NULL; + } else { + local_node->endOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("frameOptions"); + var_key.val.string.val = strdup("frameOptions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->frameOptions = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("partNumCols"); + var_key.val.string.val = strdup("partNumCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->partNumCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("startOffset"); + var_key.val.string.val = strdup("startOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->startOffset = NULL; + } else { + local_node->startOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("partColIdx"); + var_key.val.string.val = strdup("partColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->partNumCols = it->nElems; + local_node->partColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->partColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winref"); + var_key.val.string.val = strdup("winref"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winref = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *MergeAppend_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + MergeAppend *local_node; + if (node_cast != NULL) + local_node = (MergeAppend *) node_cast; + else + local_node = makeNode(MergeAppend); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortOperators"); + var_key.val.string.val = strdup("sortOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->sortOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->sortOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nullsFirst"); + var_key.val.string.val = strdup("nullsFirst"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->nullsFirst = (bool*) palloc(sizeof(bool)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->nullsFirst[i] = v.val.boolean; + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeplans"); + var_key.val.string.val = strdup("mergeplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->mergeplans = NULL; + else + local_node->mergeplans = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortColIdx"); + var_key.val.string.val = strdup("sortColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->sortColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->sortColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collations"); + var_key.val.string.val = strdup("collations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->collations = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->collations[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterSeqStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterSeqStmt *local_node; + if (node_cast != NULL) + local_node = (AlterSeqStmt *) node_cast; + else + local_node = makeNode(AlterSeqStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sequence"); + var_key.val.string.val = strdup("sequence"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->sequence = NULL; + } else { + local_node->sequence = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BooleanTest_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BooleanTest *local_node; + if (node_cast != NULL) + local_node = (BooleanTest *) node_cast; + else + local_node = makeNode(BooleanTest); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("booltesttype"); + var_key.val.string.val = strdup("booltesttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->booltesttype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RoleSpec_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RoleSpec *local_node; + if (node_cast != NULL) + local_node = (RoleSpec *) node_cast; + else + local_node = makeNode(RoleSpec); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rolename"); + var_key.val.string.val = strdup("rolename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->rolename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->rolename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roletype"); + var_key.val.string.val = strdup("roletype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->roletype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RecursiveUnion_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RecursiveUnion *local_node; + if (node_cast != NULL) + local_node = (RecursiveUnion *) node_cast; + else + local_node = makeNode(RecursiveUnion); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("wtParam"); + var_key.val.string.val = strdup("wtParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->wtParam = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dupColIdx"); + var_key.val.string.val = strdup("dupColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->dupColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->dupColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dupOperators"); + var_key.val.string.val = strdup("dupOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->dupOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->dupOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numGroups"); + var_key.val.string.val = strdup("numGroups"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + +#ifdef USE_FLOAT8_BYVAL + local_node->numGroups = DatumGetInt64(DirectFunctionCall1(numeric_int8, NumericGetDatum(var_value->val.numeric))); +#else + local_node->numGroups = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); +#endif + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *MergeJoin_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + MergeJoin *local_node; + if (node_cast != NULL) + local_node = (MergeJoin *) node_cast; + else + local_node = makeNode(MergeJoin); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeFamilies"); + var_key.val.string.val = strdup("mergeFamilies"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->mergeFamilies = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->mergeFamilies[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeCollations"); + var_key.val.string.val = strdup("mergeCollations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->mergeCollations = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->mergeCollations[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + Join_deser(container, (void *)&local_node->join, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeNullsFirst"); + var_key.val.string.val = strdup("mergeNullsFirst"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->mergeNullsFirst = (bool*) palloc(sizeof(bool)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->mergeNullsFirst[i] = v.val.boolean; + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeclauses"); + var_key.val.string.val = strdup("mergeclauses"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->mergeclauses = NULL; + else + local_node->mergeclauses = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mergeStrategies"); + var_key.val.string.val = strdup("mergeStrategies"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->mergeStrategies = (int*) palloc(sizeof(int)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->mergeStrategies[i] = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterEventTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterEventTrigStmt *local_node; + if (node_cast != NULL) + local_node = (AlterEventTrigStmt *) node_cast; + else + local_node = makeNode(AlterEventTrigStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tgenabled"); + var_key.val.string.val = strdup("tgenabled"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->tgenabled = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("trigname"); + var_key.val.string.val = strdup("trigname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->trigname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->trigname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CoerceToDomainValue_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CoerceToDomainValue *local_node; + if (node_cast != NULL) + local_node = (CoerceToDomainValue *) node_cast; + else + local_node = makeNode(CoerceToDomainValue); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeId"); + var_key.val.string.val = strdup("typeId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeMod"); + var_key.val.string.val = strdup("typeMod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeMod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collation"); + var_key.val.string.val = strdup("collation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->collation = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Append_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Append *local_node; + if (node_cast != NULL) + local_node = (Append *) node_cast; + else + local_node = makeNode(Append); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("appendplans"); + var_key.val.string.val = strdup("appendplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->appendplans = NULL; + else + local_node->appendplans = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Scan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Scan *local_node; + if (node_cast != NULL) + local_node = (Scan *) node_cast; + else + local_node = makeNode(Scan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("scanrelid"); + var_key.val.string.val = strdup("scanrelid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->scanrelid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ModifyTable_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ModifyTable *local_node; + if (node_cast != NULL) + local_node = (ModifyTable *) node_cast; + else + local_node = makeNode(ModifyTable); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwPrivLists"); + var_key.val.string.val = strdup("fdwPrivLists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdwPrivLists = NULL; + else + local_node->fdwPrivLists = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("epqParam"); + var_key.val.string.val = strdup("epqParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->epqParam = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returningLists"); + var_key.val.string.val = strdup("returningLists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->returningLists = NULL; + else + local_node->returningLists = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictSet"); + var_key.val.string.val = strdup("onConflictSet"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->onConflictSet = NULL; + else + local_node->onConflictSet = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwDirectModifyPlans"); + var_key.val.string.val = strdup("fdwDirectModifyPlans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->fdwDirectModifyPlans = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->fdwDirectModifyPlans = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nominalRelation"); + var_key.val.string.val = strdup("nominalRelation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nominalRelation = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("exclRelRTI"); + var_key.val.string.val = strdup("exclRelRTI"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->exclRelRTI = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictWhere"); + var_key.val.string.val = strdup("onConflictWhere"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->onConflictWhere = NULL; + } else { + local_node->onConflictWhere = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plans"); + var_key.val.string.val = strdup("plans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->plans = NULL; + else + local_node->plans = list_deser(var_value->val.binary.data, false); + + } + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictAction"); + var_key.val.string.val = strdup("onConflictAction"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->onConflictAction = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("exclRelTlist"); + var_key.val.string.val = strdup("exclRelTlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->exclRelTlist = NULL; + else + local_node->exclRelTlist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("canSetTag"); + var_key.val.string.val = strdup("canSetTag"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->canSetTag = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultRelIndex"); + var_key.val.string.val = strdup("resultRelIndex"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultRelIndex = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rowMarks"); + var_key.val.string.val = strdup("rowMarks"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rowMarks = NULL; + else + local_node->rowMarks = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withCheckOptionLists"); + var_key.val.string.val = strdup("withCheckOptionLists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->withCheckOptionLists = NULL; + else + local_node->withCheckOptionLists = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultRelations"); + var_key.val.string.val = strdup("resultRelations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->resultRelations = NULL; + else + local_node->resultRelations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arbiterIndexes"); + var_key.val.string.val = strdup("arbiterIndexes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->arbiterIndexes = NULL; + else + local_node->arbiterIndexes = list_deser(var_value->val.binary.data, true); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("operation"); + var_key.val.string.val = strdup("operation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->operation = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropRoleStmt *local_node; + if (node_cast != NULL) + local_node = (DropRoleStmt *) node_cast; + else + local_node = makeNode(DropRoleStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropOwnedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropOwnedStmt *local_node; + if (node_cast != NULL) + local_node = (DropOwnedStmt *) node_cast; + else + local_node = makeNode(DropOwnedStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTableMoveAllStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTableMoveAllStmt *local_node; + if (node_cast != NULL) + local_node = (AlterTableMoveAllStmt *) node_cast; + else + local_node = makeNode(AlterTableMoveAllStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("orig_tablespacename"); + var_key.val.string.val = strdup("orig_tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->orig_tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->orig_tablespacename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("new_tablespacename"); + var_key.val.string.val = strdup("new_tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->new_tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->new_tablespacename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nowait"); + var_key.val.string.val = strdup("nowait"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nowait = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objtype"); + var_key.val.string.val = strdup("objtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *NestLoop_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + NestLoop *local_node; + if (node_cast != NULL) + local_node = (NestLoop *) node_cast; + else + local_node = makeNode(NestLoop); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nestParams"); + var_key.val.string.val = strdup("nestParams"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->nestParams = NULL; + else + local_node->nestParams = list_deser(var_value->val.binary.data, false); + + } + { + + Join_deser(container, (void *)&local_node->join, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *InlineCodeBlock_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + InlineCodeBlock *local_node; + if (node_cast != NULL) + local_node = (InlineCodeBlock *) node_cast; + else + local_node = makeNode(InlineCodeBlock); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("source_text"); + var_key.val.string.val = strdup("source_text"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->source_text = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->source_text = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("langIsTrusted"); + var_key.val.string.val = strdup("langIsTrusted"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->langIsTrusted = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("langOid"); + var_key.val.string.val = strdup("langOid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->langOid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropTableSpaceStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropTableSpaceStmt *local_node; + if (node_cast != NULL) + local_node = (DropTableSpaceStmt *) node_cast; + else + local_node = makeNode(DropTableSpaceStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablespacename"); + var_key.val.string.val = strdup("tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tablespacename = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateExtensionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateExtensionStmt *local_node; + if (node_cast != NULL) + local_node = (CreateExtensionStmt *) node_cast; + else + local_node = makeNode(CreateExtensionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("extname"); + var_key.val.string.val = strdup("extname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->extname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->extname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ViewStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ViewStmt *local_node; + if (node_cast != NULL) + local_node = (ViewStmt *) node_cast; + else + local_node = makeNode(ViewStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withCheckOption"); + var_key.val.string.val = strdup("withCheckOption"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->withCheckOption = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("view"); + var_key.val.string.val = strdup("view"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->view = NULL; + } else { + local_node->view = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aliases"); + var_key.val.string.val = strdup("aliases"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aliases = NULL; + else + local_node->aliases = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlternativeSubPlan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlternativeSubPlan *local_node; + if (node_cast != NULL) + local_node = (AlternativeSubPlan *) node_cast; + else + local_node = makeNode(AlternativeSubPlan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subplans"); + var_key.val.string.val = strdup("subplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->subplans = NULL; + else + local_node->subplans = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *IntoClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + IntoClause *local_node; + if (node_cast != NULL) + local_node = (IntoClause *) node_cast; + else + local_node = makeNode(IntoClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rel"); + var_key.val.string.val = strdup("rel"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->rel = NULL; + } else { + local_node->rel = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skipData"); + var_key.val.string.val = strdup("skipData"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skipData = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onCommit"); + var_key.val.string.val = strdup("onCommit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->onCommit = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tableSpaceName"); + var_key.val.string.val = strdup("tableSpaceName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tableSpaceName = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tableSpaceName = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("viewQuery"); + var_key.val.string.val = strdup("viewQuery"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->viewQuery = NULL; + } else { + local_node->viewQuery = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colNames"); + var_key.val.string.val = strdup("colNames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colNames = NULL; + else + local_node->colNames = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *GrantStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + GrantStmt *local_node; + if (node_cast != NULL) + local_node = (GrantStmt *) node_cast; + else + local_node = makeNode(GrantStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("privileges"); + var_key.val.string.val = strdup("privileges"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->privileges = NULL; + else + local_node->privileges = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objects"); + var_key.val.string.val = strdup("objects"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objects = NULL; + else + local_node->objects = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grant_option"); + var_key.val.string.val = strdup("grant_option"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->grant_option = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grantees"); + var_key.val.string.val = strdup("grantees"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->grantees = NULL; + else + local_node->grantees = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targtype"); + var_key.val.string.val = strdup("targtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->targtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_grant"); + var_key.val.string.val = strdup("is_grant"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_grant = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objtype"); + var_key.val.string.val = strdup("objtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropdbStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropdbStmt *local_node; + if (node_cast != NULL) + local_node = (DropdbStmt *) node_cast; + else + local_node = makeNode(DropdbStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dbname"); + var_key.val.string.val = strdup("dbname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->dbname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->dbname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *OnConflictClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + OnConflictClause *local_node; + if (node_cast != NULL) + local_node = (OnConflictClause *) node_cast; + else + local_node = makeNode(OnConflictClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targetList"); + var_key.val.string.val = strdup("targetList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->targetList = NULL; + else + local_node->targetList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("action"); + var_key.val.string.val = strdup("action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->action = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("infer"); + var_key.val.string.val = strdup("infer"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->infer = NULL; + } else { + local_node->infer = (InferClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *IndexOnlyScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + IndexOnlyScan *local_node; + if (node_cast != NULL) + local_node = (IndexOnlyScan *) node_cast; + else + local_node = makeNode(IndexOnlyScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexid"); + var_key.val.string.val = strdup("indexid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexqual"); + var_key.val.string.val = strdup("indexqual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexqual = NULL; + else + local_node->indexqual = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderby"); + var_key.val.string.val = strdup("indexorderby"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexorderby = NULL; + else + local_node->indexorderby = list_deser(var_value->val.binary.data, false); + + } + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderdir"); + var_key.val.string.val = strdup("indexorderdir"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexorderdir = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indextlist"); + var_key.val.string.val = strdup("indextlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indextlist = NULL; + else + local_node->indextlist = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_Star_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_Star *local_node; + if (node_cast != NULL) + local_node = (A_Star *) node_cast; + else + local_node = makeNode(A_Star); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Constraint_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Constraint *local_node; + if (node_cast != NULL) + local_node = (Constraint *) node_cast; + else + local_node = makeNode(Constraint); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("raw_expr"); + var_key.val.string.val = strdup("raw_expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->raw_expr = NULL; + } else { + local_node->raw_expr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("access_method"); + var_key.val.string.val = strdup("access_method"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->access_method = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->access_method = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("contype"); + var_key.val.string.val = strdup("contype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->contype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fk_matchtype"); + var_key.val.string.val = strdup("fk_matchtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fk_matchtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("pk_attrs"); + var_key.val.string.val = strdup("pk_attrs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->pk_attrs = NULL; + else + local_node->pk_attrs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("keys"); + var_key.val.string.val = strdup("keys"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->keys = NULL; + else + local_node->keys = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conname"); + var_key.val.string.val = strdup("conname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->conname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->conname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_no_inherit"); + var_key.val.string.val = strdup("is_no_inherit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_no_inherit = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexspace"); + var_key.val.string.val = strdup("indexspace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->indexspace = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->indexspace = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("deferrable"); + var_key.val.string.val = strdup("deferrable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->deferrable = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fk_del_action"); + var_key.val.string.val = strdup("fk_del_action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fk_del_action = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fk_attrs"); + var_key.val.string.val = strdup("fk_attrs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fk_attrs = NULL; + else + local_node->fk_attrs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("exclusions"); + var_key.val.string.val = strdup("exclusions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->exclusions = NULL; + else + local_node->exclusions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexname"); + var_key.val.string.val = strdup("indexname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->indexname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->indexname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fk_upd_action"); + var_key.val.string.val = strdup("fk_upd_action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fk_upd_action = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cooked_expr"); + var_key.val.string.val = strdup("cooked_expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->cooked_expr = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->cooked_expr = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("initially_valid"); + var_key.val.string.val = strdup("initially_valid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->initially_valid = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skip_validation"); + var_key.val.string.val = strdup("skip_validation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skip_validation = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("old_conpfeqop"); + var_key.val.string.val = strdup("old_conpfeqop"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->old_conpfeqop = NULL; + else + local_node->old_conpfeqop = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("where_clause"); + var_key.val.string.val = strdup("where_clause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->where_clause = NULL; + } else { + local_node->where_clause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("pktable"); + var_key.val.string.val = strdup("pktable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->pktable = NULL; + } else { + local_node->pktable = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("initdeferred"); + var_key.val.string.val = strdup("initdeferred"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->initdeferred = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("old_pktable_oid"); + var_key.val.string.val = strdup("old_pktable_oid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->old_pktable_oid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterPolicyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterPolicyStmt *local_node; + if (node_cast != NULL) + local_node = (AlterPolicyStmt *) node_cast; + else + local_node = makeNode(AlterPolicyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("table"); + var_key.val.string.val = strdup("table"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->table = NULL; + } else { + local_node->table = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("qual"); + var_key.val.string.val = strdup("qual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->qual = NULL; + } else { + local_node->qual = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("policy_name"); + var_key.val.string.val = strdup("policy_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->policy_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->policy_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("with_check"); + var_key.val.string.val = strdup("with_check"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->with_check = NULL; + } else { + local_node->with_check = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *LockingClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + LockingClause *local_node; + if (node_cast != NULL) + local_node = (LockingClause *) node_cast; + else + local_node = makeNode(LockingClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lockedRels"); + var_key.val.string.val = strdup("lockedRels"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->lockedRels = NULL; + else + local_node->lockedRels = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("waitPolicy"); + var_key.val.string.val = strdup("waitPolicy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->waitPolicy = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("strength"); + var_key.val.string.val = strdup("strength"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->strength = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FuncCall_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FuncCall *local_node; + if (node_cast != NULL) + local_node = (FuncCall *) node_cast; + else + local_node = makeNode(FuncCall); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agg_star"); + var_key.val.string.val = strdup("agg_star"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->agg_star = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func_variadic"); + var_key.val.string.val = strdup("func_variadic"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->func_variadic = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agg_distinct"); + var_key.val.string.val = strdup("agg_distinct"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->agg_distinct = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("over"); + var_key.val.string.val = strdup("over"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->over = NULL; + } else { + local_node->over = (WindowDef *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agg_order"); + var_key.val.string.val = strdup("agg_order"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->agg_order = NULL; + else + local_node->agg_order = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcname"); + var_key.val.string.val = strdup("funcname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcname = NULL; + else + local_node->funcname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agg_filter"); + var_key.val.string.val = strdup("agg_filter"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->agg_filter = NULL; + } else { + local_node->agg_filter = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agg_within_group"); + var_key.val.string.val = strdup("agg_within_group"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->agg_within_group = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateTransformStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateTransformStmt *local_node; + if (node_cast != NULL) + local_node = (CreateTransformStmt *) node_cast; + else + local_node = makeNode(CreateTransformStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lang"); + var_key.val.string.val = strdup("lang"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->lang = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->lang = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("type_name"); + var_key.val.string.val = strdup("type_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->type_name = NULL; + } else { + local_node->type_name = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tosql"); + var_key.val.string.val = strdup("tosql"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->tosql = NULL; + } else { + local_node->tosql = (FuncWithArgs *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fromsql"); + var_key.val.string.val = strdup("fromsql"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->fromsql = NULL; + } else { + local_node->fromsql = (FuncWithArgs *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *NestLoopParam_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + NestLoopParam *local_node; + if (node_cast != NULL) + local_node = (NestLoopParam *) node_cast; + else + local_node = makeNode(NestLoopParam); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramval"); + var_key.val.string.val = strdup("paramval"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->paramval = NULL; + } else { + local_node->paramval = (Var *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramno"); + var_key.val.string.val = strdup("paramno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramno = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *MinMaxExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + MinMaxExpr *local_node; + if (node_cast != NULL) + local_node = (MinMaxExpr *) node_cast; + else + local_node = makeNode(MinMaxExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("minmaxtype"); + var_key.val.string.val = strdup("minmaxtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->minmaxtype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("minmaxcollid"); + var_key.val.string.val = strdup("minmaxcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->minmaxcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("op"); + var_key.val.string.val = strdup("op"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->op = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *UpdateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + UpdateStmt *local_node; + if (node_cast != NULL) + local_node = (UpdateStmt *) node_cast; + else + local_node = makeNode(UpdateStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targetList"); + var_key.val.string.val = strdup("targetList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->targetList = NULL; + else + local_node->targetList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returningList"); + var_key.val.string.val = strdup("returningList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->returningList = NULL; + else + local_node->returningList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fromClause"); + var_key.val.string.val = strdup("fromClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fromClause = NULL; + else + local_node->fromClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withClause"); + var_key.val.string.val = strdup("withClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->withClause = NULL; + } else { + local_node->withClause = (WithClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Agg_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Agg *local_node; + if (node_cast != NULL) + local_node = (Agg *) node_cast; + else + local_node = makeNode(Agg); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggstrategy"); + var_key.val.string.val = strdup("aggstrategy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggstrategy = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grpOperators"); + var_key.val.string.val = strdup("grpOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->grpOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->grpOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggsplit"); + var_key.val.string.val = strdup("aggsplit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggsplit = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("chain"); + var_key.val.string.val = strdup("chain"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->chain = NULL; + else + local_node->chain = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("groupingSets"); + var_key.val.string.val = strdup("groupingSets"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->groupingSets = NULL; + else + local_node->groupingSets = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grpColIdx"); + var_key.val.string.val = strdup("grpColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->grpColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->grpColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numGroups"); + var_key.val.string.val = strdup("numGroups"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + +#ifdef USE_FLOAT8_BYVAL + local_node->numGroups = DatumGetInt64(DirectFunctionCall1(numeric_int8, NumericGetDatum(var_value->val.numeric))); +#else + local_node->numGroups = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); +#endif + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SetToDefault_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SetToDefault *local_node; + if (node_cast != NULL) + local_node = (SetToDefault *) node_cast; + else + local_node = makeNode(SetToDefault); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeId"); + var_key.val.string.val = strdup("typeId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeMod"); + var_key.val.string.val = strdup("typeMod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeMod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collation"); + var_key.val.string.val = strdup("collation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->collation = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTSConfigurationStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTSConfigurationStmt *local_node; + if (node_cast != NULL) + local_node = (AlterTSConfigurationStmt *) node_cast; + else + local_node = makeNode(AlterTSConfigurationStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tokentype"); + var_key.val.string.val = strdup("tokentype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->tokentype = NULL; + else + local_node->tokentype = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dicts"); + var_key.val.string.val = strdup("dicts"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->dicts = NULL; + else + local_node->dicts = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("override"); + var_key.val.string.val = strdup("override"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->override = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cfgname"); + var_key.val.string.val = strdup("cfgname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cfgname = NULL; + else + local_node->cfgname = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_Expr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_Expr *local_node; + if (node_cast != NULL) + local_node = (A_Expr *) node_cast; + else + local_node = makeNode(A_Expr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->name = NULL; + else + local_node->name = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rexpr"); + var_key.val.string.val = strdup("rexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->rexpr = NULL; + } else { + local_node->rexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lexpr"); + var_key.val.string.val = strdup("lexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->lexpr = NULL; + } else { + local_node->lexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SubLink_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SubLink *local_node; + if (node_cast != NULL) + local_node = (SubLink *) node_cast; + else + local_node = makeNode(SubLink); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("operName"); + var_key.val.string.val = strdup("operName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->operName = NULL; + else + local_node->operName = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subselect"); + var_key.val.string.val = strdup("subselect"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->subselect = NULL; + } else { + local_node->subselect = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subLinkId"); + var_key.val.string.val = strdup("subLinkId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->subLinkId = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subLinkType"); + var_key.val.string.val = strdup("subLinkType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->subLinkType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("testexpr"); + var_key.val.string.val = strdup("testexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->testexpr = NULL; + } else { + local_node->testexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterOperatorStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterOperatorStmt *local_node; + if (node_cast != NULL) + local_node = (AlterOperatorStmt *) node_cast; + else + local_node = makeNode(AlterOperatorStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opername"); + var_key.val.string.val = strdup("opername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opername = NULL; + else + local_node->opername = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("operargs"); + var_key.val.string.val = strdup("operargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->operargs = NULL; + else + local_node->operargs = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *IndexStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + IndexStmt *local_node; + if (node_cast != NULL) + local_node = (IndexStmt *) node_cast; + else + local_node = makeNode(IndexStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tableSpace"); + var_key.val.string.val = strdup("tableSpace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tableSpace = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tableSpace = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("idxcomment"); + var_key.val.string.val = strdup("idxcomment"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->idxcomment = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->idxcomment = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexParams"); + var_key.val.string.val = strdup("indexParams"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexParams = NULL; + else + local_node->indexParams = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexOid"); + var_key.val.string.val = strdup("indexOid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexOid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("unique"); + var_key.val.string.val = strdup("unique"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->unique = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("deferrable"); + var_key.val.string.val = strdup("deferrable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->deferrable = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isconstraint"); + var_key.val.string.val = strdup("isconstraint"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isconstraint = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("oldNode"); + var_key.val.string.val = strdup("oldNode"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->oldNode = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("accessMethod"); + var_key.val.string.val = strdup("accessMethod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->accessMethod = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->accessMethod = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("idxname"); + var_key.val.string.val = strdup("idxname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->idxname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->idxname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("transformed"); + var_key.val.string.val = strdup("transformed"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->transformed = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("excludeOpNames"); + var_key.val.string.val = strdup("excludeOpNames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->excludeOpNames = NULL; + else + local_node->excludeOpNames = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("concurrent"); + var_key.val.string.val = strdup("concurrent"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->concurrent = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("initdeferred"); + var_key.val.string.val = strdup("initdeferred"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->initdeferred = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("primary"); + var_key.val.string.val = strdup("primary"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->primary = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterDomainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterDomainStmt *local_node; + if (node_cast != NULL) + local_node = (AlterDomainStmt *) node_cast; + else + local_node = makeNode(AlterDomainStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subtype"); + var_key.val.string.val = strdup("subtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->subtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->typeName = NULL; + else + local_node->typeName = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("def"); + var_key.val.string.val = strdup("def"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->def = NULL; + } else { + local_node->def = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TidScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TidScan *local_node; + if (node_cast != NULL) + local_node = (TidScan *) node_cast; + else + local_node = makeNode(TidScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tidquals"); + var_key.val.string.val = strdup("tidquals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->tidquals = NULL; + else + local_node->tidquals = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *PlanRowMark_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + PlanRowMark *local_node; + if (node_cast != NULL) + local_node = (PlanRowMark *) node_cast; + else + local_node = makeNode(PlanRowMark); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("strength"); + var_key.val.string.val = strdup("strength"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->strength = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("waitPolicy"); + var_key.val.string.val = strdup("waitPolicy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->waitPolicy = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isParent"); + var_key.val.string.val = strdup("isParent"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isParent = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("allMarkTypes"); + var_key.val.string.val = strdup("allMarkTypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->allMarkTypes = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("markType"); + var_key.val.string.val = strdup("markType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->markType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("prti"); + var_key.val.string.val = strdup("prti"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->prti = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rowmarkId"); + var_key.val.string.val = strdup("rowmarkId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rowmarkId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rti"); + var_key.val.string.val = strdup("rti"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rti = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *PrepareStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + PrepareStmt *local_node; + if (node_cast != NULL) + local_node = (PrepareStmt *) node_cast; + else + local_node = makeNode(PrepareStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("argtypes"); + var_key.val.string.val = strdup("argtypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->argtypes = NULL; + else + local_node->argtypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterDatabaseStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterDatabaseStmt *local_node; + if (node_cast != NULL) + local_node = (AlterDatabaseStmt *) node_cast; + else + local_node = makeNode(AlterDatabaseStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dbname"); + var_key.val.string.val = strdup("dbname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->dbname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->dbname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SelectStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SelectStmt *local_node; + if (node_cast != NULL) + local_node = (SelectStmt *) node_cast; + else + local_node = makeNode(SelectStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortClause"); + var_key.val.string.val = strdup("sortClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->sortClause = NULL; + else + local_node->sortClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fromClause"); + var_key.val.string.val = strdup("fromClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fromClause = NULL; + else + local_node->fromClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitOffset"); + var_key.val.string.val = strdup("limitOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitOffset = NULL; + } else { + local_node->limitOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rarg"); + var_key.val.string.val = strdup("rarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->rarg = NULL; + } else { + local_node->rarg = (SelectStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("groupClause"); + var_key.val.string.val = strdup("groupClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->groupClause = NULL; + else + local_node->groupClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("windowClause"); + var_key.val.string.val = strdup("windowClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->windowClause = NULL; + else + local_node->windowClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("valuesLists"); + var_key.val.string.val = strdup("valuesLists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->valuesLists = NULL; + else + local_node->valuesLists = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("havingClause"); + var_key.val.string.val = strdup("havingClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->havingClause = NULL; + } else { + local_node->havingClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targetList"); + var_key.val.string.val = strdup("targetList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->targetList = NULL; + else + local_node->targetList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitCount"); + var_key.val.string.val = strdup("limitCount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitCount = NULL; + } else { + local_node->limitCount = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("distinctClause"); + var_key.val.string.val = strdup("distinctClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->distinctClause = NULL; + else + local_node->distinctClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lockingClause"); + var_key.val.string.val = strdup("lockingClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->lockingClause = NULL; + else + local_node->lockingClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("larg"); + var_key.val.string.val = strdup("larg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->larg = NULL; + } else { + local_node->larg = (SelectStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("all"); + var_key.val.string.val = strdup("all"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->all = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("intoClause"); + var_key.val.string.val = strdup("intoClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->intoClause = NULL; + } else { + local_node->intoClause = (IntoClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withClause"); + var_key.val.string.val = strdup("withClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->withClause = NULL; + } else { + local_node->withClause = (WithClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("op"); + var_key.val.string.val = strdup("op"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->op = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FromExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FromExpr *local_node; + if (node_cast != NULL) + local_node = (FromExpr *) node_cast; + else + local_node = makeNode(FromExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("quals"); + var_key.val.string.val = strdup("quals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->quals = NULL; + } else { + local_node->quals = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fromlist"); + var_key.val.string.val = strdup("fromlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fromlist = NULL; + else + local_node->fromlist = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Param_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Param *local_node; + if (node_cast != NULL) + local_node = (Param *) node_cast; + else + local_node = makeNode(Param); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramkind"); + var_key.val.string.val = strdup("paramkind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramkind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramcollid"); + var_key.val.string.val = strdup("paramcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramtype"); + var_key.val.string.val = strdup("paramtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramtype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramtypmod"); + var_key.val.string.val = strdup("paramtypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramtypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramid"); + var_key.val.string.val = strdup("paramid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->paramid = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTSDictionaryStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTSDictionaryStmt *local_node; + if (node_cast != NULL) + local_node = (AlterTSDictionaryStmt *) node_cast; + else + local_node = makeNode(AlterTSDictionaryStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dictname"); + var_key.val.string.val = strdup("dictname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->dictname = NULL; + else + local_node->dictname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ReassignOwnedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ReassignOwnedStmt *local_node; + if (node_cast != NULL) + local_node = (ReassignOwnedStmt *) node_cast; + else + local_node = makeNode(ReassignOwnedStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newrole"); + var_key.val.string.val = strdup("newrole"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->newrole = NULL; + } else { + local_node->newrole = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *MultiAssignRef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + MultiAssignRef *local_node; + if (node_cast != NULL) + local_node = (MultiAssignRef *) node_cast; + else + local_node = makeNode(MultiAssignRef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colno"); + var_key.val.string.val = strdup("colno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->colno = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ncolumns"); + var_key.val.string.val = strdup("ncolumns"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ncolumns = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("source"); + var_key.val.string.val = strdup("source"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->source = NULL; + } else { + local_node->source = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *LoadStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + LoadStmt *local_node; + if (node_cast != NULL) + local_node = (LoadStmt *) node_cast; + else + local_node = makeNode(LoadStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("filename"); + var_key.val.string.val = strdup("filename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->filename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->filename = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateStmt *local_node; + if (node_cast != NULL) + local_node = (CreateStmt *) node_cast; + else + local_node = makeNode(CreateStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tableElts"); + var_key.val.string.val = strdup("tableElts"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->tableElts = NULL; + else + local_node->tableElts = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("oncommit"); + var_key.val.string.val = strdup("oncommit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->oncommit = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inhRelations"); + var_key.val.string.val = strdup("inhRelations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->inhRelations = NULL; + else + local_node->inhRelations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ofTypename"); + var_key.val.string.val = strdup("ofTypename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->ofTypename = NULL; + } else { + local_node->ofTypename = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablespacename"); + var_key.val.string.val = strdup("tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tablespacename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraints"); + var_key.val.string.val = strdup("constraints"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->constraints = NULL; + else + local_node->constraints = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RefreshMatViewStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RefreshMatViewStmt *local_node; + if (node_cast != NULL) + local_node = (RefreshMatViewStmt *) node_cast; + else + local_node = makeNode(RefreshMatViewStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skipData"); + var_key.val.string.val = strdup("skipData"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skipData = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("concurrent"); + var_key.val.string.val = strdup("concurrent"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->concurrent = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DeleteStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DeleteStmt *local_node; + if (node_cast != NULL) + local_node = (DeleteStmt *) node_cast; + else + local_node = makeNode(DeleteStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("usingClause"); + var_key.val.string.val = strdup("usingClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->usingClause = NULL; + else + local_node->usingClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returningList"); + var_key.val.string.val = strdup("returningList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->returningList = NULL; + else + local_node->returningList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withClause"); + var_key.val.string.val = strdup("withClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->withClause = NULL; + } else { + local_node->withClause = (WithClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SubqueryScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SubqueryScan *local_node; + if (node_cast != NULL) + local_node = (SubqueryScan *) node_cast; + else + local_node = makeNode(SubqueryScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subplan"); + var_key.val.string.val = strdup("subplan"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->subplan = NULL; + } else { + local_node->subplan = (Plan *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateCastStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateCastStmt *local_node; + if (node_cast != NULL) + local_node = (CreateCastStmt *) node_cast; + else + local_node = makeNode(CreateCastStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inout"); + var_key.val.string.val = strdup("inout"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inout = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sourcetype"); + var_key.val.string.val = strdup("sourcetype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->sourcetype = NULL; + } else { + local_node->sourcetype = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("context"); + var_key.val.string.val = strdup("context"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->context = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func"); + var_key.val.string.val = strdup("func"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->func = NULL; + } else { + local_node->func = (FuncWithArgs *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targettype"); + var_key.val.string.val = strdup("targettype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->targettype = NULL; + } else { + local_node->targettype = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ConstraintsSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ConstraintsSetStmt *local_node; + if (node_cast != NULL) + local_node = (ConstraintsSetStmt *) node_cast; + else + local_node = makeNode(ConstraintsSetStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("deferred"); + var_key.val.string.val = strdup("deferred"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->deferred = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraints"); + var_key.val.string.val = strdup("constraints"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->constraints = NULL; + else + local_node->constraints = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WindowClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WindowClause *local_node; + if (node_cast != NULL) + local_node = (WindowClause *) node_cast; + else + local_node = makeNode(WindowClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("copiedOrder"); + var_key.val.string.val = strdup("copiedOrder"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->copiedOrder = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refname"); + var_key.val.string.val = strdup("refname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->refname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->refname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("orderClause"); + var_key.val.string.val = strdup("orderClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->orderClause = NULL; + else + local_node->orderClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("startOffset"); + var_key.val.string.val = strdup("startOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->startOffset = NULL; + } else { + local_node->startOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("endOffset"); + var_key.val.string.val = strdup("endOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->endOffset = NULL; + } else { + local_node->endOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("frameOptions"); + var_key.val.string.val = strdup("frameOptions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->frameOptions = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("winref"); + var_key.val.string.val = strdup("winref"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->winref = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("partitionClause"); + var_key.val.string.val = strdup("partitionClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->partitionClause = NULL; + else + local_node->partitionClause = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ArrayExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ArrayExpr *local_node; + if (node_cast != NULL) + local_node = (ArrayExpr *) node_cast; + else + local_node = makeNode(ArrayExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("array_typeid"); + var_key.val.string.val = strdup("array_typeid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->array_typeid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("array_collid"); + var_key.val.string.val = strdup("array_collid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->array_collid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("element_typeid"); + var_key.val.string.val = strdup("element_typeid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->element_typeid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("elements"); + var_key.val.string.val = strdup("elements"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->elements = NULL; + else + local_node->elements = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("multidims"); + var_key.val.string.val = strdup("multidims"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->multidims = var_value->val.boolean; + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *InferClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + InferClause *local_node; + if (node_cast != NULL) + local_node = (InferClause *) node_cast; + else + local_node = makeNode(InferClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexElems"); + var_key.val.string.val = strdup("indexElems"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexElems = NULL; + else + local_node->indexElems = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conname"); + var_key.val.string.val = strdup("conname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->conname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->conname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BitmapHeapScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BitmapHeapScan *local_node; + if (node_cast != NULL) + local_node = (BitmapHeapScan *) node_cast; + else + local_node = makeNode(BitmapHeapScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("bitmapqualorig"); + var_key.val.string.val = strdup("bitmapqualorig"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->bitmapqualorig = NULL; + else + local_node->bitmapqualorig = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CaseTestExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CaseTestExpr *local_node; + if (node_cast != NULL) + local_node = (CaseTestExpr *) node_cast; + else + local_node = makeNode(CaseTestExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeId"); + var_key.val.string.val = strdup("typeId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeMod"); + var_key.val.string.val = strdup("typeMod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeMod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collation"); + var_key.val.string.val = strdup("collation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->collation = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *VariableShowStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + VariableShowStmt *local_node; + if (node_cast != NULL) + local_node = (VariableShowStmt *) node_cast; + else + local_node = makeNode(VariableShowStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Expr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Expr *local_node; + if (node_cast != NULL) + local_node = (Expr *) node_cast; + else + local_node = makeNode(Expr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateAmStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateAmStmt *local_node; + if (node_cast != NULL) + local_node = (CreateAmStmt *) node_cast; + else + local_node = makeNode(CreateAmStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("amtype"); + var_key.val.string.val = strdup("amtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->amtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("amname"); + var_key.val.string.val = strdup("amname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->amname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->amname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("handler_name"); + var_key.val.string.val = strdup("handler_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->handler_name = NULL; + else + local_node->handler_name = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FetchStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FetchStmt *local_node; + if (node_cast != NULL) + local_node = (FetchStmt *) node_cast; + else + local_node = makeNode(FetchStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("portalname"); + var_key.val.string.val = strdup("portalname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->portalname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->portalname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("direction"); + var_key.val.string.val = strdup("direction"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->direction = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ismove"); + var_key.val.string.val = strdup("ismove"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ismove = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("howMany"); + var_key.val.string.val = strdup("howMany"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + +#ifdef USE_FLOAT8_BYVAL + local_node->howMany = DatumGetInt64(DirectFunctionCall1(numeric_int8, NumericGetDatum(var_value->val.numeric))); +#else + local_node->howMany = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); +#endif + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Sort_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Sort *local_node; + if (node_cast != NULL) + local_node = (Sort *) node_cast; + else + local_node = makeNode(Sort); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortOperators"); + var_key.val.string.val = strdup("sortOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->sortOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->sortOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nullsFirst"); + var_key.val.string.val = strdup("nullsFirst"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->nullsFirst = (bool*) palloc(sizeof(bool)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->nullsFirst[i] = v.val.boolean; + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortColIdx"); + var_key.val.string.val = strdup("sortColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->sortColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->sortColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collations"); + var_key.val.string.val = strdup("collations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->collations = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->collations[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Const_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Const *local_node; + if (node_cast != NULL) + local_node = (Const *) node_cast; + else + local_node = makeNode(Const); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constcollid"); + var_key.val.string.val = strdup("constcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->constcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constbyval"); + var_key.val.string.val = strdup("constbyval"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->constbyval = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constlen"); + var_key.val.string.val = strdup("constlen"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->constlen = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("consttype"); + var_key.val.string.val = strdup("consttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->consttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constvalue"); + var_key.val.string.val = strdup("constvalue"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->constvalue = (Datum) NULL; + else + { + JsonbValue *typbyval_value; + + JsonbValue typbyval_key; + typbyval_key.type = jbvString; + typbyval_key.val.string.len = strlen("constbyval"); + typbyval_key.val.string.val = strdup("constbyval"); + + + typbyval_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &typbyval_key); + + local_node->constvalue = datum_deser(var_value, typbyval_value->val.boolean); + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("consttypmod"); + var_key.val.string.val = strdup("consttypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->consttypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constisnull"); + var_key.val.string.val = strdup("constisnull"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->constisnull = var_value->val.boolean; + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CoerceToDomain_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CoerceToDomain *local_node; + if (node_cast != NULL) + local_node = (CoerceToDomain *) node_cast; + else + local_node = makeNode(CoerceToDomain); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coercionformat"); + var_key.val.string.val = strdup("coercionformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->coercionformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultcollid"); + var_key.val.string.val = strdup("resultcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttypmod"); + var_key.val.string.val = strdup("resulttypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ExplainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ExplainStmt *local_node; + if (node_cast != NULL) + local_node = (ExplainStmt *) node_cast; + else + local_node = makeNode(ExplainStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TransactionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TransactionStmt *local_node; + if (node_cast != NULL) + local_node = (TransactionStmt *) node_cast; + else + local_node = makeNode(TransactionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("gid"); + var_key.val.string.val = strdup("gid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->gid = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->gid = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BoolExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BoolExpr *local_node; + if (node_cast != NULL) + local_node = (BoolExpr *) node_cast; + else + local_node = makeNode(BoolExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("boolop"); + var_key.val.string.val = strdup("boolop"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->boolop = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *GrantRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + GrantRoleStmt *local_node; + if (node_cast != NULL) + local_node = (GrantRoleStmt *) node_cast; + else + local_node = makeNode(GrantRoleStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grantor"); + var_key.val.string.val = strdup("grantor"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->grantor = NULL; + } else { + local_node->grantor = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grantee_roles"); + var_key.val.string.val = strdup("grantee_roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->grantee_roles = NULL; + else + local_node->grantee_roles = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_grant"); + var_key.val.string.val = strdup("is_grant"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_grant = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("admin_opt"); + var_key.val.string.val = strdup("admin_opt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->admin_opt = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("granted_roles"); + var_key.val.string.val = strdup("granted_roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->granted_roles = NULL; + else + local_node->granted_roles = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ParamRef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ParamRef *local_node; + if (node_cast != NULL) + local_node = (ParamRef *) node_cast; + else + local_node = makeNode(ParamRef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("number"); + var_key.val.string.val = strdup("number"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->number = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *HashJoin_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + HashJoin *local_node; + if (node_cast != NULL) + local_node = (HashJoin *) node_cast; + else + local_node = makeNode(HashJoin); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hashclauses"); + var_key.val.string.val = strdup("hashclauses"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->hashclauses = NULL; + else + local_node->hashclauses = list_deser(var_value->val.binary.data, false); + + } + { + + Join_deser(container, (void *)&local_node->join, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ClosePortalStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ClosePortalStmt *local_node; + if (node_cast != NULL) + local_node = (ClosePortalStmt *) node_cast; + else + local_node = makeNode(ClosePortalStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("portalname"); + var_key.val.string.val = strdup("portalname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->portalname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->portalname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Plan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Plan *local_node; + if (node_cast != NULL) + local_node = (Plan *) node_cast; + else + local_node = makeNode(Plan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("righttree"); + var_key.val.string.val = strdup("righttree"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->righttree = NULL; + } else { + local_node->righttree = (Plan *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plan_node_id"); + var_key.val.string.val = strdup("plan_node_id"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->plan_node_id = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("total_cost"); + var_key.val.string.val = strdup("total_cost"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->total_cost = DatumGetFloat8(DirectFunctionCall1(numeric_float8, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("targetlist"); + var_key.val.string.val = strdup("targetlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->targetlist = NULL; + else + local_node->targetlist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("initPlan"); + var_key.val.string.val = strdup("initPlan"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->initPlan = NULL; + else + local_node->initPlan = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plan_width"); + var_key.val.string.val = strdup("plan_width"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->plan_width = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("qual"); + var_key.val.string.val = strdup("qual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->qual = NULL; + else + local_node->qual = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("startup_cost"); + var_key.val.string.val = strdup("startup_cost"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->startup_cost = DatumGetFloat8(DirectFunctionCall1(numeric_float8, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plan_rows"); + var_key.val.string.val = strdup("plan_rows"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->plan_rows = DatumGetFloat8(DirectFunctionCall1(numeric_float8, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("extParam"); + var_key.val.string.val = strdup("extParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->extParam = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->extParam = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lefttree"); + var_key.val.string.val = strdup("lefttree"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->lefttree = NULL; + } else { + local_node->lefttree = (Plan *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("allParam"); + var_key.val.string.val = strdup("allParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->allParam = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->allParam = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("parallel_aware"); + var_key.val.string.val = strdup("parallel_aware"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->parallel_aware = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CopyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CopyStmt *local_node; + if (node_cast != NULL) + local_node = (CopyStmt *) node_cast; + else + local_node = makeNode(CopyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("filename"); + var_key.val.string.val = strdup("filename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->filename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->filename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_from"); + var_key.val.string.val = strdup("is_from"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_from = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_program"); + var_key.val.string.val = strdup("is_program"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_program = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("attlist"); + var_key.val.string.val = strdup("attlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->attlist = NULL; + else + local_node->attlist = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateForeignServerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateForeignServerStmt *local_node; + if (node_cast != NULL) + local_node = (CreateForeignServerStmt *) node_cast; + else + local_node = makeNode(CreateForeignServerStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servertype"); + var_key.val.string.val = strdup("servertype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servertype = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servertype = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("version"); + var_key.val.string.val = strdup("version"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->version = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->version = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwname"); + var_key.val.string.val = strdup("fdwname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->fdwname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->fdwname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SetOp_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SetOp *local_node; + if (node_cast != NULL) + local_node = (SetOp *) node_cast; + else + local_node = makeNode(SetOp); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dupOperators"); + var_key.val.string.val = strdup("dupOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->dupOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->dupOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dupColIdx"); + var_key.val.string.val = strdup("dupColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->dupColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->dupColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("strategy"); + var_key.val.string.val = strdup("strategy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->strategy = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cmd"); + var_key.val.string.val = strdup("cmd"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cmd = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numGroups"); + var_key.val.string.val = strdup("numGroups"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + +#ifdef USE_FLOAT8_BYVAL + local_node->numGroups = DatumGetInt64(DirectFunctionCall1(numeric_int8, NumericGetDatum(var_value->val.numeric))); +#else + local_node->numGroups = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); +#endif + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("firstFlag"); + var_key.val.string.val = strdup("firstFlag"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->firstFlag = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("flagColIdx"); + var_key.val.string.val = strdup("flagColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->flagColIdx = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CollateExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CollateExpr *local_node; + if (node_cast != NULL) + local_node = (CollateExpr *) node_cast; + else + local_node = makeNode(CollateExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collOid"); + var_key.val.string.val = strdup("collOid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->collOid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_ArrayExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_ArrayExpr *local_node; + if (node_cast != NULL) + local_node = (A_ArrayExpr *) node_cast; + else + local_node = makeNode(A_ArrayExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("elements"); + var_key.val.string.val = strdup("elements"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->elements = NULL; + else + local_node->elements = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *LockStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + LockStmt *local_node; + if (node_cast != NULL) + local_node = (LockStmt *) node_cast; + else + local_node = makeNode(LockStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mode"); + var_key.val.string.val = strdup("mode"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->mode = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relations"); + var_key.val.string.val = strdup("relations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->relations = NULL; + else + local_node->relations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nowait"); + var_key.val.string.val = strdup("nowait"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nowait = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateTableSpaceStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateTableSpaceStmt *local_node; + if (node_cast != NULL) + local_node = (CreateTableSpaceStmt *) node_cast; + else + local_node = makeNode(CreateTableSpaceStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablespacename"); + var_key.val.string.val = strdup("tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tablespacename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->location = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->location = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("owner"); + var_key.val.string.val = strdup("owner"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->owner = NULL; + } else { + local_node->owner = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TargetEntry_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TargetEntry *local_node; + if (node_cast != NULL) + local_node = (TargetEntry *) node_cast; + else + local_node = makeNode(TargetEntry); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resorigcol"); + var_key.val.string.val = strdup("resorigcol"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resorigcol = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resjunk"); + var_key.val.string.val = strdup("resjunk"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resjunk = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resno"); + var_key.val.string.val = strdup("resno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resno = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resorigtbl"); + var_key.val.string.val = strdup("resorigtbl"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resorigtbl = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ressortgroupref"); + var_key.val.string.val = strdup("ressortgroupref"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ressortgroupref = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resname"); + var_key.val.string.val = strdup("resname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->resname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->resname = result; + } + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("expr"); + var_key.val.string.val = strdup("expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->expr = NULL; + } else { + local_node->expr = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *XmlSerialize_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + XmlSerialize *local_node; + if (node_cast != NULL) + local_node = (XmlSerialize *) node_cast; + else + local_node = makeNode(XmlSerialize); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->typeName = NULL; + } else { + local_node->typeName = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("xmloption"); + var_key.val.string.val = strdup("xmloption"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->xmloption = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("expr"); + var_key.val.string.val = strdup("expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->expr = NULL; + } else { + local_node->expr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TypeName_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TypeName *local_node; + if (node_cast != NULL) + local_node = (TypeName *) node_cast; + else + local_node = makeNode(TypeName); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typmods"); + var_key.val.string.val = strdup("typmods"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->typmods = NULL; + else + local_node->typmods = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeOid"); + var_key.val.string.val = strdup("typeOid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typeOid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arrayBounds"); + var_key.val.string.val = strdup("arrayBounds"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->arrayBounds = NULL; + else + local_node->arrayBounds = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("pct_type"); + var_key.val.string.val = strdup("pct_type"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->pct_type = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("names"); + var_key.val.string.val = strdup("names"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->names = NULL; + else + local_node->names = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typemod"); + var_key.val.string.val = strdup("typemod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typemod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setof"); + var_key.val.string.val = strdup("setof"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->setof = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *VacuumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + VacuumStmt *local_node; + if (node_cast != NULL) + local_node = (VacuumStmt *) node_cast; + else + local_node = makeNode(VacuumStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("va_cols"); + var_key.val.string.val = strdup("va_cols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->va_cols = NULL; + else + local_node->va_cols = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->options = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SampleScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SampleScan *local_node; + if (node_cast != NULL) + local_node = (SampleScan *) node_cast; + else + local_node = makeNode(SampleScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablesample"); + var_key.val.string.val = strdup("tablesample"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->tablesample = NULL; + } else { + local_node->tablesample = (TableSampleClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeVar_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeVar *local_node; + if (node_cast != NULL) + local_node = (RangeVar *) node_cast; + else + local_node = makeNode(RangeVar); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("alias"); + var_key.val.string.val = strdup("alias"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->alias = NULL; + } else { + local_node->alias = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("schemaname"); + var_key.val.string.val = strdup("schemaname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->schemaname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->schemaname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inhOpt"); + var_key.val.string.val = strdup("inhOpt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inhOpt = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relname"); + var_key.val.string.val = strdup("relname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->relname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->relname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relpersistence"); + var_key.val.string.val = strdup("relpersistence"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relpersistence = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("catalogname"); + var_key.val.string.val = strdup("catalogname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->catalogname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->catalogname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_Indices_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_Indices *local_node; + if (node_cast != NULL) + local_node = (A_Indices *) node_cast; + else + local_node = makeNode(A_Indices); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_slice"); + var_key.val.string.val = strdup("is_slice"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_slice = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("uidx"); + var_key.val.string.val = strdup("uidx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->uidx = NULL; + } else { + local_node->uidx = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lidx"); + var_key.val.string.val = strdup("lidx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->lidx = NULL; + } else { + local_node->lidx = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateFdwStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateFdwStmt *local_node; + if (node_cast != NULL) + local_node = (CreateFdwStmt *) node_cast; + else + local_node = makeNode(CreateFdwStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwname"); + var_key.val.string.val = strdup("fdwname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->fdwname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->fdwname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func_options"); + var_key.val.string.val = strdup("func_options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->func_options = NULL; + else + local_node->func_options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_Indirection_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_Indirection *local_node; + if (node_cast != NULL) + local_node = (A_Indirection *) node_cast; + else + local_node = makeNode(A_Indirection); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indirection"); + var_key.val.string.val = strdup("indirection"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indirection = NULL; + else + local_node->indirection = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CurrentOfExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CurrentOfExpr *local_node; + if (node_cast != NULL) + local_node = (CurrentOfExpr *) node_cast; + else + local_node = makeNode(CurrentOfExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cvarno"); + var_key.val.string.val = strdup("cvarno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cvarno = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cursor_name"); + var_key.val.string.val = strdup("cursor_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->cursor_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->cursor_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cursor_param"); + var_key.val.string.val = strdup("cursor_param"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cursor_param = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TableLikeClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TableLikeClause *local_node; + if (node_cast != NULL) + local_node = (TableLikeClause *) node_cast; + else + local_node = makeNode(TableLikeClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->options = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateForeignTableStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateForeignTableStmt *local_node; + if (node_cast != NULL) + local_node = (CreateForeignTableStmt *) node_cast; + else + local_node = makeNode(CreateForeignTableStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + CreateStmt_deser(container, (void *)&local_node->base, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeTblEntry_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeTblEntry *local_node; + if (node_cast != NULL) + local_node = (RangeTblEntry *) node_cast; + else + local_node = makeNode(RangeTblEntry); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcordinality"); + var_key.val.string.val = strdup("funcordinality"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcordinality = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablesample"); + var_key.val.string.val = strdup("tablesample"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->tablesample = NULL; + } else { + local_node->tablesample = (TableSampleClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inFromCl"); + var_key.val.string.val = strdup("inFromCl"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inFromCl = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("values_lists"); + var_key.val.string.val = strdup("values_lists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->values_lists = NULL; + else + local_node->values_lists = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecoltypes"); + var_key.val.string.val = strdup("ctecoltypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecoltypes = NULL; + else + local_node->ctecoltypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subquery"); + var_key.val.string.val = strdup("subquery"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->subquery = NULL; + } else { + local_node->subquery = (Query *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("self_reference"); + var_key.val.string.val = strdup("self_reference"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->self_reference = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("jointype"); + var_key.val.string.val = strdup("jointype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->jointype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relkind"); + var_key.val.string.val = strdup("relkind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relkind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lateral"); + var_key.val.string.val = strdup("lateral"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->lateral = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("selectedCols"); + var_key.val.string.val = strdup("selectedCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->selectedCols = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->selectedCols = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("securityQuals"); + var_key.val.string.val = strdup("securityQuals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->securityQuals = NULL; + else + local_node->securityQuals = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("eref"); + var_key.val.string.val = strdup("eref"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->eref = NULL; + } else { + local_node->eref = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relid"); + var_key.val.string.val = strdup("relid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecoltypmods"); + var_key.val.string.val = strdup("ctecoltypmods"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecoltypmods = NULL; + else + local_node->ctecoltypmods = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("checkAsUser"); + var_key.val.string.val = strdup("checkAsUser"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->checkAsUser = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rtekind"); + var_key.val.string.val = strdup("rtekind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rtekind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("insertedCols"); + var_key.val.string.val = strdup("insertedCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->insertedCols = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->insertedCols = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecolcollations"); + var_key.val.string.val = strdup("ctecolcollations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecolcollations = NULL; + else + local_node->ctecolcollations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("security_barrier"); + var_key.val.string.val = strdup("security_barrier"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->security_barrier = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("alias"); + var_key.val.string.val = strdup("alias"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->alias = NULL; + } else { + local_node->alias = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inh"); + var_key.val.string.val = strdup("inh"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inh = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("updatedCols"); + var_key.val.string.val = strdup("updatedCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->updatedCols = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->updatedCols = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("joinaliasvars"); + var_key.val.string.val = strdup("joinaliasvars"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->joinaliasvars = NULL; + else + local_node->joinaliasvars = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctename"); + var_key.val.string.val = strdup("ctename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->ctename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->ctename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("functions"); + var_key.val.string.val = strdup("functions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->functions = NULL; + else + local_node->functions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("requiredPerms"); + var_key.val.string.val = strdup("requiredPerms"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->requiredPerms = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctelevelsup"); + var_key.val.string.val = strdup("ctelevelsup"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ctelevelsup = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("values_collations"); + var_key.val.string.val = strdup("values_collations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->values_collations = NULL; + else + local_node->values_collations = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FunctionParameter_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FunctionParameter *local_node; + if (node_cast != NULL) + local_node = (FunctionParameter *) node_cast; + else + local_node = makeNode(FunctionParameter); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("mode"); + var_key.val.string.val = strdup("mode"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->mode = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defexpr"); + var_key.val.string.val = strdup("defexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->defexpr = NULL; + } else { + local_node->defexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("argType"); + var_key.val.string.val = strdup("argType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->argType = NULL; + } else { + local_node->argType = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *OpExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + OpExpr *local_node; + if (node_cast != NULL) + local_node = (OpExpr *) node_cast; + else + local_node = makeNode(OpExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfuncid"); + var_key.val.string.val = strdup("opfuncid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opfuncid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opresulttype"); + var_key.val.string.val = strdup("opresulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opresulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opretset"); + var_key.val.string.val = strdup("opretset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opretset = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opno"); + var_key.val.string.val = strdup("opno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opno = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opcollid"); + var_key.val.string.val = strdup("opcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->opcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterFdwStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterFdwStmt *local_node; + if (node_cast != NULL) + local_node = (AlterFdwStmt *) node_cast; + else + local_node = makeNode(AlterFdwStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwname"); + var_key.val.string.val = strdup("fdwname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->fdwname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->fdwname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func_options"); + var_key.val.string.val = strdup("func_options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->func_options = NULL; + else + local_node->func_options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *BitmapAnd_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + BitmapAnd *local_node; + if (node_cast != NULL) + local_node = (BitmapAnd *) node_cast; + else + local_node = makeNode(BitmapAnd); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("bitmapplans"); + var_key.val.string.val = strdup("bitmapplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->bitmapplans = NULL; + else + local_node->bitmapplans = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateUserMappingStmt *local_node; + if (node_cast != NULL) + local_node = (CreateUserMappingStmt *) node_cast; + else + local_node = makeNode(CreateUserMappingStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("user"); + var_key.val.string.val = strdup("user"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->user = NULL; + } else { + local_node->user = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreatePolicyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreatePolicyStmt *local_node; + if (node_cast != NULL) + local_node = (CreatePolicyStmt *) node_cast; + else + local_node = makeNode(CreatePolicyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("table"); + var_key.val.string.val = strdup("table"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->table = NULL; + } else { + local_node->table = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("roles"); + var_key.val.string.val = strdup("roles"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->roles = NULL; + else + local_node->roles = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cmd_name"); + var_key.val.string.val = strdup("cmd_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->cmd_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->cmd_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("qual"); + var_key.val.string.val = strdup("qual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->qual = NULL; + } else { + local_node->qual = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("policy_name"); + var_key.val.string.val = strdup("policy_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->policy_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->policy_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("with_check"); + var_key.val.string.val = strdup("with_check"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->with_check = NULL; + } else { + local_node->with_check = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterUserMappingStmt *local_node; + if (node_cast != NULL) + local_node = (AlterUserMappingStmt *) node_cast; + else + local_node = makeNode(AlterUserMappingStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("user"); + var_key.val.string.val = strdup("user"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->user = NULL; + } else { + local_node->user = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *InferenceElem_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + InferenceElem *local_node; + if (node_cast != NULL) + local_node = (InferenceElem *) node_cast; + else + local_node = makeNode(InferenceElem); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("infercollid"); + var_key.val.string.val = strdup("infercollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->infercollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inferopclass"); + var_key.val.string.val = strdup("inferopclass"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inferopclass = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("expr"); + var_key.val.string.val = strdup("expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->expr = NULL; + } else { + local_node->expr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ExecuteStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ExecuteStmt *local_node; + if (node_cast != NULL) + local_node = (ExecuteStmt *) node_cast; + else + local_node = makeNode(ExecuteStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("params"); + var_key.val.string.val = strdup("params"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->params = NULL; + else + local_node->params = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *XmlExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + XmlExpr *local_node; + if (node_cast != NULL) + local_node = (XmlExpr *) node_cast; + else + local_node = makeNode(XmlExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("xmloption"); + var_key.val.string.val = strdup("xmloption"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->xmloption = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typmod"); + var_key.val.string.val = strdup("typmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->typmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("named_args"); + var_key.val.string.val = strdup("named_args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->named_args = NULL; + else + local_node->named_args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg_names"); + var_key.val.string.val = strdup("arg_names"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->arg_names = NULL; + else + local_node->arg_names = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("op"); + var_key.val.string.val = strdup("op"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->op = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SecLabelStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SecLabelStmt *local_node; + if (node_cast != NULL) + local_node = (SecLabelStmt *) node_cast; + else + local_node = makeNode(SecLabelStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objname"); + var_key.val.string.val = strdup("objname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objname = NULL; + else + local_node->objname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objargs"); + var_key.val.string.val = strdup("objargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objargs = NULL; + else + local_node->objargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("label"); + var_key.val.string.val = strdup("label"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->label = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->label = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objtype"); + var_key.val.string.val = strdup("objtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("provider"); + var_key.val.string.val = strdup("provider"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->provider = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->provider = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreatePLangStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreatePLangStmt *local_node; + if (node_cast != NULL) + local_node = (CreatePLangStmt *) node_cast; + else + local_node = makeNode(CreatePLangStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plvalidator"); + var_key.val.string.val = strdup("plvalidator"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->plvalidator = NULL; + else + local_node->plvalidator = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plname"); + var_key.val.string.val = strdup("plname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->plname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->plname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("pltrusted"); + var_key.val.string.val = strdup("pltrusted"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->pltrusted = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plinline"); + var_key.val.string.val = strdup("plinline"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->plinline = NULL; + else + local_node->plinline = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plhandler"); + var_key.val.string.val = strdup("plhandler"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->plhandler = NULL; + else + local_node->plhandler = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DeclareCursorStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DeclareCursorStmt *local_node; + if (node_cast != NULL) + local_node = (DeclareCursorStmt *) node_cast; + else + local_node = makeNode(DeclareCursorStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("portalname"); + var_key.val.string.val = strdup("portalname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->portalname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->portalname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->options = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterExtensionContentsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterExtensionContentsStmt *local_node; + if (node_cast != NULL) + local_node = (AlterExtensionContentsStmt *) node_cast; + else + local_node = makeNode(AlterExtensionContentsStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("action"); + var_key.val.string.val = strdup("action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->action = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objname"); + var_key.val.string.val = strdup("objname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objname = NULL; + else + local_node->objname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objargs"); + var_key.val.string.val = strdup("objargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objargs = NULL; + else + local_node->objargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("extname"); + var_key.val.string.val = strdup("extname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->extname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->extname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objtype"); + var_key.val.string.val = strdup("objtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateOpClassItem_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateOpClassItem *local_node; + if (node_cast != NULL) + local_node = (CreateOpClassItem *) node_cast; + else + local_node = makeNode(CreateOpClassItem); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("order_family"); + var_key.val.string.val = strdup("order_family"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->order_family = NULL; + else + local_node->order_family = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("number"); + var_key.val.string.val = strdup("number"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->number = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->name = NULL; + else + local_node->name = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("class_args"); + var_key.val.string.val = strdup("class_args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->class_args = NULL; + else + local_node->class_args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("itemtype"); + var_key.val.string.val = strdup("itemtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->itemtype = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("storedtype"); + var_key.val.string.val = strdup("storedtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->storedtype = NULL; + } else { + local_node->storedtype = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RowMarkClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RowMarkClause *local_node; + if (node_cast != NULL) + local_node = (RowMarkClause *) node_cast; + else + local_node = makeNode(RowMarkClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("strength"); + var_key.val.string.val = strdup("strength"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->strength = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("waitPolicy"); + var_key.val.string.val = strdup("waitPolicy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->waitPolicy = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rti"); + var_key.val.string.val = strdup("rti"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rti = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("pushedDown"); + var_key.val.string.val = strdup("pushedDown"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->pushedDown = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RowExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RowExpr *local_node; + if (node_cast != NULL) + local_node = (RowExpr *) node_cast; + else + local_node = makeNode(RowExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("row_format"); + var_key.val.string.val = strdup("row_format"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->row_format = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("row_typeid"); + var_key.val.string.val = strdup("row_typeid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->row_typeid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colnames"); + var_key.val.string.val = strdup("colnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colnames = NULL; + else + local_node->colnames = list_deser(var_value->val.binary.data, false); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RenameStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RenameStmt *local_node; + if (node_cast != NULL) + local_node = (RenameStmt *) node_cast; + else + local_node = makeNode(RenameStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("object"); + var_key.val.string.val = strdup("object"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->object = NULL; + else + local_node->object = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objarg"); + var_key.val.string.val = strdup("objarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objarg = NULL; + else + local_node->objarg = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newname"); + var_key.val.string.val = strdup("newname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->newname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->newname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("renameType"); + var_key.val.string.val = strdup("renameType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->renameType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relationType"); + var_key.val.string.val = strdup("relationType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relationType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subname"); + var_key.val.string.val = strdup("subname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->subname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->subname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterExtensionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterExtensionStmt *local_node; + if (node_cast != NULL) + local_node = (AlterExtensionStmt *) node_cast; + else + local_node = makeNode(AlterExtensionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("extname"); + var_key.val.string.val = strdup("extname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->extname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->extname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Unique_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Unique *local_node; + if (node_cast != NULL) + local_node = (Unique *) node_cast; + else + local_node = makeNode(Unique); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("uniqColIdx"); + var_key.val.string.val = strdup("uniqColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->uniqColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->uniqColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("uniqOperators"); + var_key.val.string.val = strdup("uniqOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->uniqOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->uniqOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FunctionScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FunctionScan *local_node; + if (node_cast != NULL) + local_node = (FunctionScan *) node_cast; + else + local_node = makeNode(FunctionScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("functions"); + var_key.val.string.val = strdup("functions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->functions = NULL; + else + local_node->functions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcordinality"); + var_key.val.string.val = strdup("funcordinality"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcordinality = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *LockRows_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + LockRows *local_node; + if (node_cast != NULL) + local_node = (LockRows *) node_cast; + else + local_node = makeNode(LockRows); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rowMarks"); + var_key.val.string.val = strdup("rowMarks"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rowMarks = NULL; + else + local_node->rowMarks = list_deser(var_value->val.binary.data, false); + + } + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("epqParam"); + var_key.val.string.val = strdup("epqParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->epqParam = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *InsertStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + InsertStmt *local_node; + if (node_cast != NULL) + local_node = (InsertStmt *) node_cast; + else + local_node = makeNode(InsertStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("onConflictClause"); + var_key.val.string.val = strdup("onConflictClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->onConflictClause = NULL; + } else { + local_node->onConflictClause = (OnConflictClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returningList"); + var_key.val.string.val = strdup("returningList"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->returningList = NULL; + else + local_node->returningList = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("selectStmt"); + var_key.val.string.val = strdup("selectStmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->selectStmt = NULL; + } else { + local_node->selectStmt = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cols"); + var_key.val.string.val = strdup("cols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cols = NULL; + else + local_node->cols = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withClause"); + var_key.val.string.val = strdup("withClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->withClause = NULL; + } else { + local_node->withClause = (WithClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterRoleSetStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterRoleSetStmt *local_node; + if (node_cast != NULL) + local_node = (AlterRoleSetStmt *) node_cast; + else + local_node = makeNode(AlterRoleSetStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("database"); + var_key.val.string.val = strdup("database"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->database = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->database = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setstmt"); + var_key.val.string.val = strdup("setstmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->setstmt = NULL; + } else { + local_node->setstmt = (VariableSetStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("role"); + var_key.val.string.val = strdup("role"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->role = NULL; + } else { + local_node->role = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CollateClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CollateClause *local_node; + if (node_cast != NULL) + local_node = (CollateClause *) node_cast; + else + local_node = makeNode(CollateClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collname"); + var_key.val.string.val = strdup("collname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->collname = NULL; + else + local_node->collname = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTableSpaceOptionsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTableSpaceOptionsStmt *local_node; + if (node_cast != NULL) + local_node = (AlterTableSpaceOptionsStmt *) node_cast; + else + local_node = makeNode(AlterTableSpaceOptionsStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tablespacename"); + var_key.val.string.val = strdup("tablespacename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->tablespacename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->tablespacename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isReset"); + var_key.val.string.val = strdup("isReset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isReset = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DefElem_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DefElem *local_node; + if (node_cast != NULL) + local_node = (DefElem *) node_cast; + else + local_node = makeNode(DefElem); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defname"); + var_key.val.string.val = strdup("defname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->defname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->defname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defnamespace"); + var_key.val.string.val = strdup("defnamespace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->defnamespace = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->defnamespace = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defaction"); + var_key.val.string.val = strdup("defaction"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->defaction = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DiscardStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DiscardStmt *local_node; + if (node_cast != NULL) + local_node = (DiscardStmt *) node_cast; + else + local_node = makeNode(DiscardStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("target"); + var_key.val.string.val = strdup("target"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->target = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RuleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RuleStmt *local_node; + if (node_cast != NULL) + local_node = (RuleStmt *) node_cast; + else + local_node = makeNode(RuleStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rulename"); + var_key.val.string.val = strdup("rulename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->rulename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->rulename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("event"); + var_key.val.string.val = strdup("event"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->event = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("instead"); + var_key.val.string.val = strdup("instead"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->instead = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whereClause"); + var_key.val.string.val = strdup("whereClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whereClause = NULL; + } else { + local_node->whereClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("actions"); + var_key.val.string.val = strdup("actions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->actions = NULL; + else + local_node->actions = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ArrayCoerceExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ArrayCoerceExpr *local_node; + if (node_cast != NULL) + local_node = (ArrayCoerceExpr *) node_cast; + else + local_node = makeNode(ArrayCoerceExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isExplicit"); + var_key.val.string.val = strdup("isExplicit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isExplicit = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coerceformat"); + var_key.val.string.val = strdup("coerceformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->coerceformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultcollid"); + var_key.val.string.val = strdup("resultcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttypmod"); + var_key.val.string.val = strdup("resulttypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("elemfuncid"); + var_key.val.string.val = strdup("elemfuncid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->elemfuncid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Limit_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Limit *local_node; + if (node_cast != NULL) + local_node = (Limit *) node_cast; + else + local_node = makeNode(Limit); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitOffset"); + var_key.val.string.val = strdup("limitOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitOffset = NULL; + } else { + local_node->limitOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("limitCount"); + var_key.val.string.val = strdup("limitCount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->limitCount = NULL; + } else { + local_node->limitCount = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Material_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Material *local_node; + if (node_cast != NULL) + local_node = (Material *) node_cast; + else + local_node = makeNode(Material); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AccessPriv_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AccessPriv *local_node; + if (node_cast != NULL) + local_node = (AccessPriv *) node_cast; + else + local_node = makeNode(AccessPriv); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cols"); + var_key.val.string.val = strdup("cols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cols = NULL; + else + local_node->cols = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("priv_name"); + var_key.val.string.val = strdup("priv_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->priv_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->priv_name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ColumnRef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ColumnRef *local_node; + if (node_cast != NULL) + local_node = (ColumnRef *) node_cast; + else + local_node = makeNode(ColumnRef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fields"); + var_key.val.string.val = strdup("fields"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fields = NULL; + else + local_node->fields = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterOpFamilyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterOpFamilyStmt *local_node; + if (node_cast != NULL) + local_node = (AlterOpFamilyStmt *) node_cast; + else + local_node = makeNode(AlterOpFamilyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfamilyname"); + var_key.val.string.val = strdup("opfamilyname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opfamilyname = NULL; + else + local_node->opfamilyname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isDrop"); + var_key.val.string.val = strdup("isDrop"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isDrop = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("amname"); + var_key.val.string.val = strdup("amname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->amname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->amname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("items"); + var_key.val.string.val = strdup("items"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->items = NULL; + else + local_node->items = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Aggref_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Aggref *local_node; + if (node_cast != NULL) + local_node = (Aggref *) node_cast; + else + local_node = makeNode(Aggref); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggfnoid"); + var_key.val.string.val = strdup("aggfnoid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggfnoid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("agglevelsup"); + var_key.val.string.val = strdup("agglevelsup"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->agglevelsup = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggkind"); + var_key.val.string.val = strdup("aggkind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggkind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggsplit"); + var_key.val.string.val = strdup("aggsplit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggsplit = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggargtypes"); + var_key.val.string.val = strdup("aggargtypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aggargtypes = NULL; + else + local_node->aggargtypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggtranstype"); + var_key.val.string.val = strdup("aggtranstype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggtranstype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggdirectargs"); + var_key.val.string.val = strdup("aggdirectargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aggdirectargs = NULL; + else + local_node->aggdirectargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggvariadic"); + var_key.val.string.val = strdup("aggvariadic"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggvariadic = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggcollid"); + var_key.val.string.val = strdup("aggcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggfilter"); + var_key.val.string.val = strdup("aggfilter"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->aggfilter = NULL; + } else { + local_node->aggfilter = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggtype"); + var_key.val.string.val = strdup("aggtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggtype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggorder"); + var_key.val.string.val = strdup("aggorder"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aggorder = NULL; + else + local_node->aggorder = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggdistinct"); + var_key.val.string.val = strdup("aggdistinct"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aggdistinct = NULL; + else + local_node->aggdistinct = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aggstar"); + var_key.val.string.val = strdup("aggstar"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->aggstar = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateSchemaStmt *local_node; + if (node_cast != NULL) + local_node = (CreateSchemaStmt *) node_cast; + else + local_node = makeNode(CreateSchemaStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("schemaname"); + var_key.val.string.val = strdup("schemaname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->schemaname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->schemaname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("schemaElts"); + var_key.val.string.val = strdup("schemaElts"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->schemaElts = NULL; + else + local_node->schemaElts = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("authrole"); + var_key.val.string.val = strdup("authrole"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->authrole = NULL; + } else { + local_node->authrole = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateFunctionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateFunctionStmt *local_node; + if (node_cast != NULL) + local_node = (CreateFunctionStmt *) node_cast; + else + local_node = makeNode(CreateFunctionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("replace"); + var_key.val.string.val = strdup("replace"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->replace = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("parameters"); + var_key.val.string.val = strdup("parameters"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->parameters = NULL; + else + local_node->parameters = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcname"); + var_key.val.string.val = strdup("funcname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcname = NULL; + else + local_node->funcname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("returnType"); + var_key.val.string.val = strdup("returnType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->returnType = NULL; + } else { + local_node->returnType = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("withClause"); + var_key.val.string.val = strdup("withClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->withClause = NULL; + else + local_node->withClause = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ClusterStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ClusterStmt *local_node; + if (node_cast != NULL) + local_node = (ClusterStmt *) node_cast; + else + local_node = makeNode(ClusterStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("verbose"); + var_key.val.string.val = strdup("verbose"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->verbose = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexname"); + var_key.val.string.val = strdup("indexname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->indexname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->indexname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *PlannedStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + PlannedStmt *local_node; + if (node_cast != NULL) + local_node = (PlannedStmt *) node_cast; + else + local_node = makeNode(PlannedStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("commandType"); + var_key.val.string.val = strdup("commandType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->commandType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("queryId"); + var_key.val.string.val = strdup("queryId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->queryId = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dependsOnRole"); + var_key.val.string.val = strdup("dependsOnRole"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->dependsOnRole = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("utilityStmt"); + var_key.val.string.val = strdup("utilityStmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->utilityStmt = NULL; + } else { + local_node->utilityStmt = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rewindPlanIDs"); + var_key.val.string.val = strdup("rewindPlanIDs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->rewindPlanIDs = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->rewindPlanIDs = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasModifyingCTE"); + var_key.val.string.val = strdup("hasModifyingCTE"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasModifyingCTE = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relationOids"); + var_key.val.string.val = strdup("relationOids"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->relationOids = NULL; + else + local_node->relationOids = list_deser(var_value->val.binary.data, true); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subplans"); + var_key.val.string.val = strdup("subplans"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->subplans = NULL; + else + local_node->subplans = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("transientPlan"); + var_key.val.string.val = strdup("transientPlan"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->transientPlan = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hasReturning"); + var_key.val.string.val = strdup("hasReturning"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hasReturning = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("invalItems"); + var_key.val.string.val = strdup("invalItems"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->invalItems = NULL; + else + local_node->invalItems = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nParamExec"); + var_key.val.string.val = strdup("nParamExec"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nParamExec = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("canSetTag"); + var_key.val.string.val = strdup("canSetTag"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->canSetTag = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rowMarks"); + var_key.val.string.val = strdup("rowMarks"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rowMarks = NULL; + else + local_node->rowMarks = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("planTree"); + var_key.val.string.val = strdup("planTree"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->planTree = NULL; + } else { + local_node->planTree = (Plan *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultRelations"); + var_key.val.string.val = strdup("resultRelations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->resultRelations = NULL; + else + local_node->resultRelations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("parallelModeNeeded"); + var_key.val.string.val = strdup("parallelModeNeeded"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->parallelModeNeeded = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rtable"); + var_key.val.string.val = strdup("rtable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rtable = NULL; + else + local_node->rtable = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CheckPointStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CheckPointStmt *local_node; + if (node_cast != NULL) + local_node = (CheckPointStmt *) node_cast; + else + local_node = makeNode(CheckPointStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CteScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CteScan *local_node; + if (node_cast != NULL) + local_node = (CteScan *) node_cast; + else + local_node = makeNode(CteScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctePlanId"); + var_key.val.string.val = strdup("ctePlanId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ctePlanId = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cteParam"); + var_key.val.string.val = strdup("cteParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cteParam = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RowCompareExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RowCompareExpr *local_node; + if (node_cast != NULL) + local_node = (RowCompareExpr *) node_cast; + else + local_node = makeNode(RowCompareExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rargs"); + var_key.val.string.val = strdup("rargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->rargs = NULL; + else + local_node->rargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollids"); + var_key.val.string.val = strdup("inputcollids"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->inputcollids = NULL; + else + local_node->inputcollids = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rctype"); + var_key.val.string.val = strdup("rctype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rctype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("largs"); + var_key.val.string.val = strdup("largs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->largs = NULL; + else + local_node->largs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opnos"); + var_key.val.string.val = strdup("opnos"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opnos = NULL; + else + local_node->opnos = list_deser(var_value->val.binary.data, false); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opfamilies"); + var_key.val.string.val = strdup("opfamilies"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opfamilies = NULL; + else + local_node->opfamilies = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CaseWhen_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CaseWhen *local_node; + if (node_cast != NULL) + local_node = (CaseWhen *) node_cast; + else + local_node = makeNode(CaseWhen); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("result"); + var_key.val.string.val = strdup("result"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->result = NULL; + } else { + local_node->result = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("expr"); + var_key.val.string.val = strdup("expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->expr = NULL; + } else { + local_node->expr = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ColumnDef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ColumnDef *local_node; + if (node_cast != NULL) + local_node = (ColumnDef *) node_cast; + else + local_node = makeNode(ColumnDef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inhcount"); + var_key.val.string.val = strdup("inhcount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inhcount = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collClause"); + var_key.val.string.val = strdup("collClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->collClause = NULL; + } else { + local_node->collClause = (CollateClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_local"); + var_key.val.string.val = strdup("is_local"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_local = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("raw_default"); + var_key.val.string.val = strdup("raw_default"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->raw_default = NULL; + } else { + local_node->raw_default = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colname"); + var_key.val.string.val = strdup("colname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->colname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->colname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->typeName = NULL; + } else { + local_node->typeName = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cooked_default"); + var_key.val.string.val = strdup("cooked_default"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->cooked_default = NULL; + } else { + local_node->cooked_default = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_not_null"); + var_key.val.string.val = strdup("is_not_null"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_not_null = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdwoptions"); + var_key.val.string.val = strdup("fdwoptions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdwoptions = NULL; + else + local_node->fdwoptions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_from_type"); + var_key.val.string.val = strdup("is_from_type"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_from_type = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("storage"); + var_key.val.string.val = strdup("storage"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->storage = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraints"); + var_key.val.string.val = strdup("constraints"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->constraints = NULL; + else + local_node->constraints = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collOid"); + var_key.val.string.val = strdup("collOid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->collOid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *A_Const_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + A_Const *local_node; + if (node_cast != NULL) + local_node = (A_Const *) node_cast; + else + local_node = makeNode(A_Const); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("val"); + var_key.val.string.val = strdup("val"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvString) { + char *result = palloc(var_value->val.string.len + 1); + result[var_value->val.string.len] = '\0'; + memcpy(result, var_value->val.string.val, var_value->val.string.len); + local_node->val = *makeString(result); + } else if (var_value->type == jbvNumeric) { + local_node->val = *makeInteger(DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric)))); + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ValuesScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ValuesScan *local_node; + if (node_cast != NULL) + local_node = (ValuesScan *) node_cast; + else + local_node = makeNode(ValuesScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("values_lists"); + var_key.val.string.val = strdup("values_lists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->values_lists = NULL; + else + local_node->values_lists = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *PlanInvalItem_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + PlanInvalItem *local_node; + if (node_cast != NULL) + local_node = (PlanInvalItem *) node_cast; + else + local_node = makeNode(PlanInvalItem); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hashValue"); + var_key.val.string.val = strdup("hashValue"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hashValue = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cacheId"); + var_key.val.string.val = strdup("cacheId"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cacheId = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ListenStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ListenStmt *local_node; + if (node_cast != NULL) + local_node = (ListenStmt *) node_cast; + else + local_node = makeNode(ListenStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conditionname"); + var_key.val.string.val = strdup("conditionname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->conditionname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->conditionname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Gather_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Gather *local_node; + if (node_cast != NULL) + local_node = (Gather *) node_cast; + else + local_node = makeNode(Gather); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("num_workers"); + var_key.val.string.val = strdup("num_workers"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->num_workers = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("invisible"); + var_key.val.string.val = strdup("invisible"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->invisible = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("single_copy"); + var_key.val.string.val = strdup("single_copy"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->single_copy = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateTableAsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateTableAsStmt *local_node; + if (node_cast != NULL) + local_node = (CreateTableAsStmt *) node_cast; + else + local_node = makeNode(CreateTableAsStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("if_not_exists"); + var_key.val.string.val = strdup("if_not_exists"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->if_not_exists = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("query"); + var_key.val.string.val = strdup("query"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->query = NULL; + } else { + local_node->query = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relkind"); + var_key.val.string.val = strdup("relkind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relkind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_select_into"); + var_key.val.string.val = strdup("is_select_into"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_select_into = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("into"); + var_key.val.string.val = strdup("into"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->into = NULL; + } else { + local_node->into = (IntoClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *UnlistenStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + UnlistenStmt *local_node; + if (node_cast != NULL) + local_node = (UnlistenStmt *) node_cast; + else + local_node = makeNode(UnlistenStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conditionname"); + var_key.val.string.val = strdup("conditionname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->conditionname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->conditionname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateConversionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateConversionStmt *local_node; + if (node_cast != NULL) + local_node = (CreateConversionStmt *) node_cast; + else + local_node = makeNode(CreateConversionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("def"); + var_key.val.string.val = strdup("def"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->def = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conversion_name"); + var_key.val.string.val = strdup("conversion_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->conversion_name = NULL; + else + local_node->conversion_name = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("to_encoding_name"); + var_key.val.string.val = strdup("to_encoding_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->to_encoding_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->to_encoding_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func_name"); + var_key.val.string.val = strdup("func_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->func_name = NULL; + else + local_node->func_name = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("for_encoding_name"); + var_key.val.string.val = strdup("for_encoding_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->for_encoding_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->for_encoding_name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterFunctionStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterFunctionStmt *local_node; + if (node_cast != NULL) + local_node = (AlterFunctionStmt *) node_cast; + else + local_node = makeNode(AlterFunctionStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("func"); + var_key.val.string.val = strdup("func"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->func = NULL; + } else { + local_node->func = (FuncWithArgs *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("actions"); + var_key.val.string.val = strdup("actions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->actions = NULL; + else + local_node->actions = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TruncateStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TruncateStmt *local_node; + if (node_cast != NULL) + local_node = (TruncateStmt *) node_cast; + else + local_node = makeNode(TruncateStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("restart_seqs"); + var_key.val.string.val = strdup("restart_seqs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->restart_seqs = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relations"); + var_key.val.string.val = strdup("relations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->relations = NULL; + else + local_node->relations = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ResTarget_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ResTarget *local_node; + if (node_cast != NULL) + local_node = (ResTarget *) node_cast; + else + local_node = makeNode(ResTarget); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indirection"); + var_key.val.string.val = strdup("indirection"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indirection = NULL; + else + local_node->indirection = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("val"); + var_key.val.string.val = strdup("val"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->val = NULL; + } else { + local_node->val = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CoerceViaIO_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CoerceViaIO *local_node; + if (node_cast != NULL) + local_node = (CoerceViaIO *) node_cast; + else + local_node = makeNode(CoerceViaIO); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coerceformat"); + var_key.val.string.val = strdup("coerceformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->coerceformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultcollid"); + var_key.val.string.val = strdup("resultcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CaseExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CaseExpr *local_node; + if (node_cast != NULL) + local_node = (CaseExpr *) node_cast; + else + local_node = makeNode(CaseExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("casecollid"); + var_key.val.string.val = strdup("casecollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->casecollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("casetype"); + var_key.val.string.val = strdup("casetype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->casetype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defresult"); + var_key.val.string.val = strdup("defresult"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->defresult = NULL; + } else { + local_node->defresult = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateEnumStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateEnumStmt *local_node; + if (node_cast != NULL) + local_node = (CreateEnumStmt *) node_cast; + else + local_node = makeNode(CreateEnumStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->typeName = NULL; + else + local_node->typeName = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("vals"); + var_key.val.string.val = strdup("vals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->vals = NULL; + else + local_node->vals = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeSubselect_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeSubselect *local_node; + if (node_cast != NULL) + local_node = (RangeSubselect *) node_cast; + else + local_node = makeNode(RangeSubselect); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lateral"); + var_key.val.string.val = strdup("lateral"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->lateral = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subquery"); + var_key.val.string.val = strdup("subquery"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->subquery = NULL; + } else { + local_node->subquery = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("alias"); + var_key.val.string.val = strdup("alias"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->alias = NULL; + } else { + local_node->alias = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DropUserMappingStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DropUserMappingStmt *local_node; + if (node_cast != NULL) + local_node = (DropUserMappingStmt *) node_cast; + else + local_node = makeNode(DropUserMappingStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("user"); + var_key.val.string.val = strdup("user"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->user = NULL; + } else { + local_node->user = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *JoinExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + JoinExpr *local_node; + if (node_cast != NULL) + local_node = (JoinExpr *) node_cast; + else + local_node = makeNode(JoinExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isNatural"); + var_key.val.string.val = strdup("isNatural"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isNatural = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("alias"); + var_key.val.string.val = strdup("alias"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->alias = NULL; + } else { + local_node->alias = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("quals"); + var_key.val.string.val = strdup("quals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->quals = NULL; + } else { + local_node->quals = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rarg"); + var_key.val.string.val = strdup("rarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->rarg = NULL; + } else { + local_node->rarg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("jointype"); + var_key.val.string.val = strdup("jointype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->jointype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("larg"); + var_key.val.string.val = strdup("larg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->larg = NULL; + } else { + local_node->larg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rtindex"); + var_key.val.string.val = strdup("rtindex"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->rtindex = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("usingClause"); + var_key.val.string.val = strdup("usingClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->usingClause = NULL; + else + local_node->usingClause = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *IndexScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + IndexScan *local_node; + if (node_cast != NULL) + local_node = (IndexScan *) node_cast; + else + local_node = makeNode(IndexScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexid"); + var_key.val.string.val = strdup("indexid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderbyorig"); + var_key.val.string.val = strdup("indexorderbyorig"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexorderbyorig = NULL; + else + local_node->indexorderbyorig = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexqual"); + var_key.val.string.val = strdup("indexqual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexqual = NULL; + else + local_node->indexqual = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderby"); + var_key.val.string.val = strdup("indexorderby"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexorderby = NULL; + else + local_node->indexorderby = list_deser(var_value->val.binary.data, false); + + } + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderbyops"); + var_key.val.string.val = strdup("indexorderbyops"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexorderbyops = NULL; + else + local_node->indexorderbyops = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexqualorig"); + var_key.val.string.val = strdup("indexqualorig"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->indexqualorig = NULL; + else + local_node->indexqualorig = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexorderdir"); + var_key.val.string.val = strdup("indexorderdir"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->indexorderdir = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Group_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Group *local_node; + if (node_cast != NULL) + local_node = (Group *) node_cast; + else + local_node = makeNode(Group); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grpColIdx"); + var_key.val.string.val = strdup("grpColIdx"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->grpColIdx = (AttrNumber*) palloc(sizeof(AttrNumber)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->grpColIdx[i] = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("numCols"); + var_key.val.string.val = strdup("numCols"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->numCols = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("grpOperators"); + var_key.val.string.val = strdup("grpOperators"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + { + int type; + int i = 0; + JsonbValue v; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + local_node->numCols = it->nElems; + local_node->grpOperators = (Oid*) palloc(sizeof(Oid)*it->nElems); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + { + + local_node->grpOperators[i] = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(v.val.numeric))); + + i++; + } + } + } + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *IndexElem_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + IndexElem *local_node; + if (node_cast != NULL) + local_node = (IndexElem *) node_cast; + else + local_node = makeNode(IndexElem); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collation"); + var_key.val.string.val = strdup("collation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->collation = NULL; + else + local_node->collation = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("opclass"); + var_key.val.string.val = strdup("opclass"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->opclass = NULL; + else + local_node->opclass = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nulls_ordering"); + var_key.val.string.val = strdup("nulls_ordering"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nulls_ordering = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("expr"); + var_key.val.string.val = strdup("expr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->expr = NULL; + } else { + local_node->expr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ordering"); + var_key.val.string.val = strdup("ordering"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ordering = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("indexcolname"); + var_key.val.string.val = strdup("indexcolname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->indexcolname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->indexcolname = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SortBy_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SortBy *local_node; + if (node_cast != NULL) + local_node = (SortBy *) node_cast; + else + local_node = makeNode(SortBy); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("useOp"); + var_key.val.string.val = strdup("useOp"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->useOp = NULL; + else + local_node->useOp = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("node"); + var_key.val.string.val = strdup("node"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->node = NULL; + } else { + local_node->node = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortby_nulls"); + var_key.val.string.val = strdup("sortby_nulls"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->sortby_nulls = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortby_dir"); + var_key.val.string.val = strdup("sortby_dir"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->sortby_dir = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Join_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Join *local_node; + if (node_cast != NULL) + local_node = (Join *) node_cast; + else + local_node = makeNode(Join); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("jointype"); + var_key.val.string.val = strdup("jointype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->jointype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("joinqual"); + var_key.val.string.val = strdup("joinqual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->joinqual = NULL; + else + local_node->joinqual = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DoStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DoStmt *local_node; + if (node_cast != NULL) + local_node = (DoStmt *) node_cast; + else + local_node = makeNode(DoStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FieldStore_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FieldStore *local_node; + if (node_cast != NULL) + local_node = (FieldStore *) node_cast; + else + local_node = makeNode(FieldStore); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newvals"); + var_key.val.string.val = strdup("newvals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->newvals = NULL; + else + local_node->newvals = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fieldnums"); + var_key.val.string.val = strdup("fieldnums"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fieldnums = NULL; + else + local_node->fieldnums = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Hash_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Hash *local_node; + if (node_cast != NULL) + local_node = (Hash *) node_cast; + else + local_node = makeNode(Hash); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skewColumn"); + var_key.val.string.val = strdup("skewColumn"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skewColumn = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skewInherit"); + var_key.val.string.val = strdup("skewInherit"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skewInherit = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skewTable"); + var_key.val.string.val = strdup("skewTable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skewTable = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skewColType"); + var_key.val.string.val = strdup("skewColType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skewColType = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("skewColTypmod"); + var_key.val.string.val = strdup("skewColTypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->skewColTypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTableCmd_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTableCmd *local_node; + if (node_cast != NULL) + local_node = (AlterTableCmd *) node_cast; + else + local_node = makeNode(AlterTableCmd); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subtype"); + var_key.val.string.val = strdup("subtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->subtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("def"); + var_key.val.string.val = strdup("def"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->def = NULL; + } else { + local_node->def = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newowner"); + var_key.val.string.val = strdup("newowner"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->newowner = NULL; + } else { + local_node->newowner = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("behavior"); + var_key.val.string.val = strdup("behavior"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->behavior = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WorkTableScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WorkTableScan *local_node; + if (node_cast != NULL) + local_node = (WorkTableScan *) node_cast; + else + local_node = makeNode(WorkTableScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("wtParam"); + var_key.val.string.val = strdup("wtParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->wtParam = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WindowDef_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WindowDef *local_node; + if (node_cast != NULL) + local_node = (WindowDef *) node_cast; + else + local_node = makeNode(WindowDef); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("refname"); + var_key.val.string.val = strdup("refname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->refname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->refname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("orderClause"); + var_key.val.string.val = strdup("orderClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->orderClause = NULL; + else + local_node->orderClause = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("startOffset"); + var_key.val.string.val = strdup("startOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->startOffset = NULL; + } else { + local_node->startOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("endOffset"); + var_key.val.string.val = strdup("endOffset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->endOffset = NULL; + } else { + local_node->endOffset = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("frameOptions"); + var_key.val.string.val = strdup("frameOptions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->frameOptions = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("partitionClause"); + var_key.val.string.val = strdup("partitionClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->partitionClause = NULL; + else + local_node->partitionClause = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateTrigStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateTrigStmt *local_node; + if (node_cast != NULL) + local_node = (CreateTrigStmt *) node_cast; + else + local_node = makeNode(CreateTrigStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("columns"); + var_key.val.string.val = strdup("columns"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->columns = NULL; + else + local_node->columns = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("timing"); + var_key.val.string.val = strdup("timing"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->timing = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("row"); + var_key.val.string.val = strdup("row"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->row = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("initdeferred"); + var_key.val.string.val = strdup("initdeferred"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->initdeferred = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("deferrable"); + var_key.val.string.val = strdup("deferrable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->deferrable = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("isconstraint"); + var_key.val.string.val = strdup("isconstraint"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->isconstraint = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcname"); + var_key.val.string.val = strdup("funcname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcname = NULL; + else + local_node->funcname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("trigname"); + var_key.val.string.val = strdup("trigname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->trigname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->trigname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constrrel"); + var_key.val.string.val = strdup("constrrel"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->constrrel = NULL; + } else { + local_node->constrrel = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("events"); + var_key.val.string.val = strdup("events"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->events = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("whenClause"); + var_key.val.string.val = strdup("whenClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->whenClause = NULL; + } else { + local_node->whenClause = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FieldSelect_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FieldSelect *local_node; + if (node_cast != NULL) + local_node = (FieldSelect *) node_cast; + else + local_node = makeNode(FieldSelect); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fieldnum"); + var_key.val.string.val = strdup("fieldnum"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fieldnum = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttype"); + var_key.val.string.val = strdup("resulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resultcollid"); + var_key.val.string.val = strdup("resultcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resultcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resulttypmod"); + var_key.val.string.val = strdup("resulttypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->resulttypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeFunction_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeFunction *local_node; + if (node_cast != NULL) + local_node = (RangeFunction *) node_cast; + else + local_node = makeNode(RangeFunction); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coldeflist"); + var_key.val.string.val = strdup("coldeflist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->coldeflist = NULL; + else + local_node->coldeflist = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("is_rowsfrom"); + var_key.val.string.val = strdup("is_rowsfrom"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->is_rowsfrom = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("alias"); + var_key.val.string.val = strdup("alias"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->alias = NULL; + } else { + local_node->alias = (Alias *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("functions"); + var_key.val.string.val = strdup("functions"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->functions = NULL; + else + local_node->functions = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("lateral"); + var_key.val.string.val = strdup("lateral"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->lateral = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ordinality"); + var_key.val.string.val = strdup("ordinality"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->ordinality = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterSystemStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterSystemStmt *local_node; + if (node_cast != NULL) + local_node = (AlterSystemStmt *) node_cast; + else + local_node = makeNode(AlterSystemStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setstmt"); + var_key.val.string.val = strdup("setstmt"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->setstmt = NULL; + } else { + local_node->setstmt = (VariableSetStmt *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterObjectDependsStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterObjectDependsStmt *local_node; + if (node_cast != NULL) + local_node = (AlterObjectDependsStmt *) node_cast; + else + local_node = makeNode(AlterObjectDependsStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("extname"); + var_key.val.string.val = strdup("extname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->extname = NULL; + } else { + local_node->extname = (Value *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objname"); + var_key.val.string.val = strdup("objname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objname = NULL; + else + local_node->objname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objargs"); + var_key.val.string.val = strdup("objargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objargs = NULL; + else + local_node->objargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objectType"); + var_key.val.string.val = strdup("objectType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objectType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *GroupingSet_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + GroupingSet *local_node; + if (node_cast != NULL) + local_node = (GroupingSet *) node_cast; + else + local_node = makeNode(GroupingSet); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("content"); + var_key.val.string.val = strdup("content"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->content = NULL; + else + local_node->content = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateRoleStmt *local_node; + if (node_cast != NULL) + local_node = (CreateRoleStmt *) node_cast; + else + local_node = makeNode(CreateRoleStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("stmt_type"); + var_key.val.string.val = strdup("stmt_type"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->stmt_type = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("role"); + var_key.val.string.val = strdup("role"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->role = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->role = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FuncExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FuncExpr *local_node; + if (node_cast != NULL) + local_node = (FuncExpr *) node_cast; + else + local_node = makeNode(FuncExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcretset"); + var_key.val.string.val = strdup("funcretset"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcretset = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcvariadic"); + var_key.val.string.val = strdup("funcvariadic"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcvariadic = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccollid"); + var_key.val.string.val = strdup("funccollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funccollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcid"); + var_key.val.string.val = strdup("funcid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcresulttype"); + var_key.val.string.val = strdup("funcresulttype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcresulttype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcformat"); + var_key.val.string.val = strdup("funcformat"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funcformat = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("inputcollid"); + var_key.val.string.val = strdup("inputcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->inputcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CommentStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CommentStmt *local_node; + if (node_cast != NULL) + local_node = (CommentStmt *) node_cast; + else + local_node = makeNode(CommentStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objargs"); + var_key.val.string.val = strdup("objargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objargs = NULL; + else + local_node->objargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objname"); + var_key.val.string.val = strdup("objname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objname = NULL; + else + local_node->objname = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objtype"); + var_key.val.string.val = strdup("objtype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objtype = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("comment"); + var_key.val.string.val = strdup("comment"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->comment = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->comment = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *NotifyStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + NotifyStmt *local_node; + if (node_cast != NULL) + local_node = (NotifyStmt *) node_cast; + else + local_node = makeNode(NotifyStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("conditionname"); + var_key.val.string.val = strdup("conditionname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->conditionname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->conditionname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("payload"); + var_key.val.string.val = strdup("payload"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->payload = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->payload = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TypeCast_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TypeCast *local_node; + if (node_cast != NULL) + local_node = (TypeCast *) node_cast; + else + local_node = makeNode(TypeCast); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->typeName = NULL; + } else { + local_node->typeName = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WithCheckOption_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WithCheckOption *local_node; + if (node_cast != NULL) + local_node = (WithCheckOption *) node_cast; + else + local_node = makeNode(WithCheckOption); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("polname"); + var_key.val.string.val = strdup("polname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->polname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->polname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relname"); + var_key.val.string.val = strdup("relname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->relname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->relname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cascaded"); + var_key.val.string.val = strdup("cascaded"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cascaded = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("qual"); + var_key.val.string.val = strdup("qual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->qual = NULL; + } else { + local_node->qual = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SubPlan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SubPlan *local_node; + if (node_cast != NULL) + local_node = (SubPlan *) node_cast; + else + local_node = makeNode(SubPlan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plan_id"); + var_key.val.string.val = strdup("plan_id"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->plan_id = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("useHashTable"); + var_key.val.string.val = strdup("useHashTable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->useHashTable = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("plan_name"); + var_key.val.string.val = strdup("plan_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->plan_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->plan_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("unknownEqFalse"); + var_key.val.string.val = strdup("unknownEqFalse"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->unknownEqFalse = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("parParam"); + var_key.val.string.val = strdup("parParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->parParam = NULL; + else + local_node->parParam = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("firstColCollation"); + var_key.val.string.val = strdup("firstColCollation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->firstColCollation = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("testexpr"); + var_key.val.string.val = strdup("testexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->testexpr = NULL; + } else { + local_node->testexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("startup_cost"); + var_key.val.string.val = strdup("startup_cost"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->startup_cost = DatumGetFloat8(DirectFunctionCall1(numeric_float8, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("firstColTypmod"); + var_key.val.string.val = strdup("firstColTypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->firstColTypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("subLinkType"); + var_key.val.string.val = strdup("subLinkType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->subLinkType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("paramIds"); + var_key.val.string.val = strdup("paramIds"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->paramIds = NULL; + else + local_node->paramIds = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("setParam"); + var_key.val.string.val = strdup("setParam"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->setParam = NULL; + else + local_node->setParam = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("per_call_cost"); + var_key.val.string.val = strdup("per_call_cost"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->per_call_cost = DatumGetFloat8(DirectFunctionCall1(numeric_float8, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("firstColType"); + var_key.val.string.val = strdup("firstColType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->firstColType = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Result_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Result *local_node; + if (node_cast != NULL) + local_node = (Result *) node_cast; + else + local_node = makeNode(Result); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + Plan_deser(container, (void *)&local_node->plan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("resconstantqual"); + var_key.val.string.val = strdup("resconstantqual"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->resconstantqual = NULL; + } else { + local_node->resconstantqual = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SetOperationStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SetOperationStmt *local_node; + if (node_cast != NULL) + local_node = (SetOperationStmt *) node_cast; + else + local_node = makeNode(SetOperationStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colCollations"); + var_key.val.string.val = strdup("colCollations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colCollations = NULL; + else + local_node->colCollations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("groupClauses"); + var_key.val.string.val = strdup("groupClauses"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->groupClauses = NULL; + else + local_node->groupClauses = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colTypmods"); + var_key.val.string.val = strdup("colTypmods"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colTypmods = NULL; + else + local_node->colTypmods = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("rarg"); + var_key.val.string.val = strdup("rarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->rarg = NULL; + } else { + local_node->rarg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("larg"); + var_key.val.string.val = strdup("larg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->larg = NULL; + } else { + local_node->larg = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("all"); + var_key.val.string.val = strdup("all"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->all = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colTypes"); + var_key.val.string.val = strdup("colTypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colTypes = NULL; + else + local_node->colTypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("op"); + var_key.val.string.val = strdup("op"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->op = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ReplicaIdentityStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ReplicaIdentityStmt *local_node; + if (node_cast != NULL) + local_node = (ReplicaIdentityStmt *) node_cast; + else + local_node = makeNode(ReplicaIdentityStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("identity_type"); + var_key.val.string.val = strdup("identity_type"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->identity_type = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Alias_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Alias *local_node; + if (node_cast != NULL) + local_node = (Alias *) node_cast; + else + local_node = makeNode(Alias); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aliasname"); + var_key.val.string.val = strdup("aliasname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->aliasname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->aliasname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("colnames"); + var_key.val.string.val = strdup("colnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->colnames = NULL; + else + local_node->colnames = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CommonTableExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CommonTableExpr *local_node; + if (node_cast != NULL) + local_node = (CommonTableExpr *) node_cast; + else + local_node = makeNode(CommonTableExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecolnames"); + var_key.val.string.val = strdup("ctecolnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecolnames = NULL; + else + local_node->ctecolnames = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecolcollations"); + var_key.val.string.val = strdup("ctecolcollations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecolcollations = NULL; + else + local_node->ctecolcollations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecoltypmods"); + var_key.val.string.val = strdup("ctecoltypmods"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecoltypmods = NULL; + else + local_node->ctecoltypmods = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctecoltypes"); + var_key.val.string.val = strdup("ctecoltypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctecoltypes = NULL; + else + local_node->ctecoltypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("aliascolnames"); + var_key.val.string.val = strdup("aliascolnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->aliascolnames = NULL; + else + local_node->aliascolnames = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cterefcount"); + var_key.val.string.val = strdup("cterefcount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cterefcount = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctename"); + var_key.val.string.val = strdup("ctename"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->ctename = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->ctename = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cterecursive"); + var_key.val.string.val = strdup("cterecursive"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->cterecursive = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctequery"); + var_key.val.string.val = strdup("ctequery"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->ctequery = NULL; + } else { + local_node->ctequery = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreatedbStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreatedbStmt *local_node; + if (node_cast != NULL) + local_node = (CreatedbStmt *) node_cast; + else + local_node = makeNode(CreatedbStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("dbname"); + var_key.val.string.val = strdup("dbname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->dbname = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->dbname = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterRoleStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterRoleStmt *local_node; + if (node_cast != NULL) + local_node = (AlterRoleStmt *) node_cast; + else + local_node = makeNode(AlterRoleStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("action"); + var_key.val.string.val = strdup("action"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->action = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("role"); + var_key.val.string.val = strdup("role"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->role = NULL; + } else { + local_node->role = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *WithClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + WithClause *local_node; + if (node_cast != NULL) + local_node = (WithClause *) node_cast; + else + local_node = makeNode(WithClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("ctes"); + var_key.val.string.val = strdup("ctes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->ctes = NULL; + else + local_node->ctes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("recursive"); + var_key.val.string.val = strdup("recursive"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->recursive = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ForeignScan_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ForeignScan *local_node; + if (node_cast != NULL) + local_node = (ForeignScan *) node_cast; + else + local_node = makeNode(ForeignScan); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fs_server"); + var_key.val.string.val = strdup("fs_server"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fs_server = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdw_private"); + var_key.val.string.val = strdup("fdw_private"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdw_private = NULL; + else + local_node->fdw_private = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("operation"); + var_key.val.string.val = strdup("operation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->operation = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fs_relids"); + var_key.val.string.val = strdup("fs_relids"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->fs_relids = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->fs_relids = result; + } + + + } + { + + Scan_deser(container, (void *)&local_node->scan, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdw_exprs"); + var_key.val.string.val = strdup("fdw_exprs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdw_exprs = NULL; + else + local_node->fdw_exprs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fsSystemCol"); + var_key.val.string.val = strdup("fsSystemCol"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->fsSystemCol = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdw_recheck_quals"); + var_key.val.string.val = strdup("fdw_recheck_quals"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdw_recheck_quals = NULL; + else + local_node->fdw_recheck_quals = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("fdw_scan_tlist"); + var_key.val.string.val = strdup("fdw_scan_tlist"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->fdw_scan_tlist = NULL; + else + local_node->fdw_scan_tlist = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *FuncWithArgs_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + FuncWithArgs *local_node; + if (node_cast != NULL) + local_node = (FuncWithArgs *) node_cast; + else + local_node = makeNode(FuncWithArgs); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcargs"); + var_key.val.string.val = strdup("funcargs"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcargs = NULL; + else + local_node->funcargs = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcname"); + var_key.val.string.val = strdup("funcname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funcname = NULL; + else + local_node->funcname = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterForeignServerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterForeignServerStmt *local_node; + if (node_cast != NULL) + local_node = (AlterForeignServerStmt *) node_cast; + else + local_node = makeNode(AlterForeignServerStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("version"); + var_key.val.string.val = strdup("version"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->version = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->version = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("has_version"); + var_key.val.string.val = strdup("has_version"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->has_version = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("servername"); + var_key.val.string.val = strdup("servername"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->servername = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->servername = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *DefineStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + DefineStmt *local_node; + if (node_cast != NULL) + local_node = (DefineStmt *) node_cast; + else + local_node = makeNode(DefineStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("kind"); + var_key.val.string.val = strdup("kind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->kind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("oldstyle"); + var_key.val.string.val = strdup("oldstyle"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->oldstyle = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("defnames"); + var_key.val.string.val = strdup("defnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->defnames = NULL; + else + local_node->defnames = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("definition"); + var_key.val.string.val = strdup("definition"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->definition = NULL; + else + local_node->definition = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterTableStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterTableStmt *local_node; + if (node_cast != NULL) + local_node = (AlterTableStmt *) node_cast; + else + local_node = makeNode(AlterTableStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("cmds"); + var_key.val.string.val = strdup("cmds"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->cmds = NULL; + else + local_node->cmds = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("missing_ok"); + var_key.val.string.val = strdup("missing_ok"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->missing_ok = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relkind"); + var_key.val.string.val = strdup("relkind"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->relkind = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *ImportForeignSchemaStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + ImportForeignSchemaStmt *local_node; + if (node_cast != NULL) + local_node = (ImportForeignSchemaStmt *) node_cast; + else + local_node = makeNode(ImportForeignSchemaStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("remote_schema"); + var_key.val.string.val = strdup("remote_schema"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->remote_schema = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->remote_schema = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("server_name"); + var_key.val.string.val = strdup("server_name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->server_name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->server_name = result; + } + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("table_list"); + var_key.val.string.val = strdup("table_list"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->table_list = NULL; + else + local_node->table_list = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("options"); + var_key.val.string.val = strdup("options"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->options = NULL; + else + local_node->options = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("list_type"); + var_key.val.string.val = strdup("list_type"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->list_type = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("local_schema"); + var_key.val.string.val = strdup("local_schema"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->local_schema = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->local_schema = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Var_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Var *local_node; + if (node_cast != NULL) + local_node = (Var *) node_cast; + else + local_node = makeNode(Var); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varattno"); + var_key.val.string.val = strdup("varattno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varattno = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("vartypmod"); + var_key.val.string.val = strdup("vartypmod"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->vartypmod = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("vartype"); + var_key.val.string.val = strdup("vartype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->vartype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varcollid"); + var_key.val.string.val = strdup("varcollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varcollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varnoold"); + var_key.val.string.val = strdup("varnoold"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varnoold = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varno"); + var_key.val.string.val = strdup("varno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varno = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varlevelsup"); + var_key.val.string.val = strdup("varlevelsup"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varlevelsup = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("varoattno"); + var_key.val.string.val = strdup("varoattno"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->varoattno = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *SortGroupClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + SortGroupClause *local_node; + if (node_cast != NULL) + local_node = (SortGroupClause *) node_cast; + else + local_node = makeNode(SortGroupClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("nulls_first"); + var_key.val.string.val = strdup("nulls_first"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->nulls_first = var_value->val.boolean; + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("sortop"); + var_key.val.string.val = strdup("sortop"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->sortop = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tleSortGroupRef"); + var_key.val.string.val = strdup("tleSortGroupRef"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->tleSortGroupRef = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("eqop"); + var_key.val.string.val = strdup("eqop"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->eqop = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("hashable"); + var_key.val.string.val = strdup("hashable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->hashable = var_value->val.boolean; + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CreateDomainStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CreateDomainStmt *local_node; + if (node_cast != NULL) + local_node = (CreateDomainStmt *) node_cast; + else + local_node = makeNode(CreateDomainStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("collClause"); + var_key.val.string.val = strdup("collClause"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->collClause = NULL; + } else { + local_node->collClause = (CollateClause *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("typeName"); + var_key.val.string.val = strdup("typeName"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->typeName = NULL; + } else { + local_node->typeName = (TypeName *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("constraints"); + var_key.val.string.val = strdup("constraints"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->constraints = NULL; + else + local_node->constraints = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("domainname"); + var_key.val.string.val = strdup("domainname"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->domainname = NULL; + else + local_node->domainname = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *TableSampleClause_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + TableSampleClause *local_node; + if (node_cast != NULL) + local_node = (TableSampleClause *) node_cast; + else + local_node = makeNode(TableSampleClause); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("tsmhandler"); + var_key.val.string.val = strdup("tsmhandler"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->tsmhandler = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("repeatable"); + var_key.val.string.val = strdup("repeatable"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->repeatable = NULL; + } else { + local_node->repeatable = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *CoalesceExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + CoalesceExpr *local_node; + if (node_cast != NULL) + local_node = (CoalesceExpr *) node_cast; + else + local_node = makeNode(CoalesceExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coalescetype"); + var_key.val.string.val = strdup("coalescetype"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->coalescetype = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("coalescecollid"); + var_key.val.string.val = strdup("coalescecollid"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->coalescecollid = DatumGetUInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("args"); + var_key.val.string.val = strdup("args"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->args = NULL; + else + local_node->args = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *RangeTblFunction_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + RangeTblFunction *local_node; + if (node_cast != NULL) + local_node = (RangeTblFunction *) node_cast; + else + local_node = makeNode(RangeTblFunction); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccoltypes"); + var_key.val.string.val = strdup("funccoltypes"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funccoltypes = NULL; + else + local_node->funccoltypes = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccolcollations"); + var_key.val.string.val = strdup("funccolcollations"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funccolcollations = NULL; + else + local_node->funccolcollations = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccoltypmods"); + var_key.val.string.val = strdup("funccoltypmods"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funccoltypmods = NULL; + else + local_node->funccoltypmods = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcexpr"); + var_key.val.string.val = strdup("funcexpr"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->funcexpr = NULL; + } else { + local_node->funcexpr = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funcparams"); + var_key.val.string.val = strdup("funcparams"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->funcparams = NULL; + else + + { + Bitmapset *result = NULL; + JsonbValue v; + int type; + JsonbIterator *it = JsonbIteratorInit(var_value->val.binary.data); + while ((type = JsonbIteratorNext(&it, &v, true)) != WJB_DONE) + { + if (type == WJB_ELEM) + result = bms_add_member(result, + DatumGetUInt32(DirectFunctionCall1(numeric_int4, + NumericGetDatum(v.val.numeric)))); + } + local_node->funcparams = result; + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccolcount"); + var_key.val.string.val = strdup("funccolcount"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->funccolcount = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("funccolnames"); + var_key.val.string.val = strdup("funccolnames"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->funccolnames = NULL; + else + local_node->funccolnames = list_deser(var_value->val.binary.data, false); + + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *NamedArgExpr_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + NamedArgExpr *local_node; + if (node_cast != NULL) + local_node = (NamedArgExpr *) node_cast; + else + local_node = makeNode(NamedArgExpr); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("location"); + var_key.val.string.val = strdup("location"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->location = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("argnumber"); + var_key.val.string.val = strdup("argnumber"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->argnumber = DatumGetInt32(DirectFunctionCall1(numeric_int4, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("arg"); + var_key.val.string.val = strdup("arg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->arg = NULL; + } else { + local_node->arg = (Expr *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + Expr_deser(container, (void *)&local_node->xpr, -1); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("name"); + var_key.val.string.val = strdup("name"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + if (var_value->type == jbvNull) + local_node->name = NULL; + else + { + char *result = palloc(var_value->val.string.len + 1); + memcpy(result, var_value->val.string.val, var_value->val.string.len); + result[var_value->val.string.len] = '\0'; + local_node->name = result; + } + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *Value_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + Value *local_node; + if (node_cast != NULL) + local_node = (Value *) node_cast; + else + local_node = makeNode(Value); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + /* NOT FOUND TYPE: NotFound */ + } + if (hook) + return hook(local_node); + else + return local_node; + } + static + void *AlterOwnerStmt_deser(JsonbContainer *container, void *node_cast, int replace_type) + { + AlterOwnerStmt *local_node; + if (node_cast != NULL) + local_node = (AlterOwnerStmt *) node_cast; + else + local_node = makeNode(AlterOwnerStmt); + + if (replace_type >= 0) + ((Node *)local_node)->type = replace_type; + + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("object"); + var_key.val.string.val = strdup("object"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->object = NULL; + else + local_node->object = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("newowner"); + var_key.val.string.val = strdup("newowner"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->newowner = NULL; + } else { + local_node->newowner = (Node *) jsonb_to_node(var_value->val.binary.data); + } + + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objarg"); + var_key.val.string.val = strdup("objarg"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + + if (var_value == NULL || var_value->type == jbvNull) + local_node->objarg = NULL; + else + local_node->objarg = list_deser(var_value->val.binary.data, false); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("objectType"); + var_key.val.string.val = strdup("objectType"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + local_node->objectType = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(var_value->val.numeric))); + + } + { + + JsonbValue *var_value; + + JsonbValue var_key; + var_key.type = jbvString; + var_key.val.string.len = strlen("relation"); + var_key.val.string.val = strdup("relation"); + + var_value = findJsonbValueFromContainer(container, + JB_FOBJECT, + &var_key); + + + if (var_value->type == jbvNull) + { + local_node->relation = NULL; + } else { + local_node->relation = (RangeVar *) jsonb_to_node(var_value->val.binary.data); + } + + + } + if (hook) + return hook(local_node); + else + return local_node; + } + + +static +void *jsonb_to_node(JsonbContainer *container) +{ + JsonbValue *node_type; + int16 node_type_value; + + + JsonbValue node_type_key; + node_type_key.type = jbvString; + node_type_key.val.string.len = strlen("type"); + node_type_key.val.string.val = strdup("type"); + + + if (container == NULL) + { + return NULL; + } + else if ((container->header & JB_CMASK) == 0) + { + return NULL; + } + else if ((container->header & (JB_FARRAY | JB_FOBJECT)) == JB_FARRAY) + { + return list_deser(container, false); + } + + node_type = findJsonbValueFromContainer(container, + JB_FOBJECT, + &node_type_key); + node_type_value = DatumGetInt16(DirectFunctionCall1(numeric_int2, NumericGetDatum(node_type->val.numeric))); + + switch (node_type_value) + { + case T_RelabelType: + return RelabelType_deser(container, NULL, -1); + case T_VariableSetStmt: + return VariableSetStmt_deser(container, NULL, -1); + case T_CreateOpClassStmt: + return CreateOpClassStmt_deser(container, NULL, -1); + case T_CompositeTypeStmt: + return CompositeTypeStmt_deser(container, NULL, -1); + case T_ArrayRef: + return ArrayRef_deser(container, NULL, -1); + case T_RangeTblRef: + return RangeTblRef_deser(container, NULL, -1); + case T_ScalarArrayOpExpr: + return ScalarArrayOpExpr_deser(container, NULL, -1); + case T_AlterEnumStmt: + return AlterEnumStmt_deser(container, NULL, -1); + case T_OnConflictExpr: + return OnConflictExpr_deser(container, NULL, -1); + case T_AlterObjectSchemaStmt: + return AlterObjectSchemaStmt_deser(container, NULL, -1); + case T_Query: + return Query_deser(container, NULL, -1); + case T_AlterDefaultPrivilegesStmt: + return AlterDefaultPrivilegesStmt_deser(container, NULL, -1); + case T_CreateEventTrigStmt: + return CreateEventTrigStmt_deser(container, NULL, -1); + case T_BitmapIndexScan: + return BitmapIndexScan_deser(container, NULL, -1); + case T_CreateRangeStmt: + return CreateRangeStmt_deser(container, NULL, -1); + case T_CreateSeqStmt: + return CreateSeqStmt_deser(container, NULL, -1); + case T_GroupingFunc: + return GroupingFunc_deser(container, NULL, -1); + case T_RangeTableSample: + return RangeTableSample_deser(container, NULL, -1); + case T_BitmapOr: + return BitmapOr_deser(container, NULL, -1); + case T_ReindexStmt: + return ReindexStmt_deser(container, NULL, -1); + case T_DropStmt: + return DropStmt_deser(container, NULL, -1); + case T_WindowFunc: + return WindowFunc_deser(container, NULL, -1); + case T_NullTest: + return NullTest_deser(container, NULL, -1); + case T_ConvertRowtypeExpr: + return ConvertRowtypeExpr_deser(container, NULL, -1); + case T_DeallocateStmt: + return DeallocateStmt_deser(container, NULL, -1); + case T_AlterDatabaseSetStmt: + return AlterDatabaseSetStmt_deser(container, NULL, -1); + case T_CreateOpFamilyStmt: + return CreateOpFamilyStmt_deser(container, NULL, -1); + case T_CustomScan: + return CustomScan_deser(container, NULL, -1); + case T_WindowAgg: + return WindowAgg_deser(container, NULL, -1); + case T_MergeAppend: + return MergeAppend_deser(container, NULL, -1); + case T_AlterSeqStmt: + return AlterSeqStmt_deser(container, NULL, -1); + case T_BooleanTest: + return BooleanTest_deser(container, NULL, -1); + case T_RoleSpec: + return RoleSpec_deser(container, NULL, -1); + case T_RecursiveUnion: + return RecursiveUnion_deser(container, NULL, -1); + case T_MergeJoin: + return MergeJoin_deser(container, NULL, -1); + case T_AlterEventTrigStmt: + return AlterEventTrigStmt_deser(container, NULL, -1); + case T_CoerceToDomainValue: + return CoerceToDomainValue_deser(container, NULL, -1); + case T_Append: + return Append_deser(container, NULL, -1); + case T_Scan: + return Scan_deser(container, NULL, -1); + case T_ModifyTable: + return ModifyTable_deser(container, NULL, -1); + case T_DropRoleStmt: + return DropRoleStmt_deser(container, NULL, -1); + case T_DropOwnedStmt: + return DropOwnedStmt_deser(container, NULL, -1); + case T_AlterTableMoveAllStmt: + return AlterTableMoveAllStmt_deser(container, NULL, -1); + case T_NestLoop: + return NestLoop_deser(container, NULL, -1); + case T_InlineCodeBlock: + return InlineCodeBlock_deser(container, NULL, -1); + case T_DropTableSpaceStmt: + return DropTableSpaceStmt_deser(container, NULL, -1); + case T_CreateExtensionStmt: + return CreateExtensionStmt_deser(container, NULL, -1); + case T_ViewStmt: + return ViewStmt_deser(container, NULL, -1); + case T_AlternativeSubPlan: + return AlternativeSubPlan_deser(container, NULL, -1); + case T_IntoClause: + return IntoClause_deser(container, NULL, -1); + case T_GrantStmt: + return GrantStmt_deser(container, NULL, -1); + case T_DropdbStmt: + return DropdbStmt_deser(container, NULL, -1); + case T_OnConflictClause: + return OnConflictClause_deser(container, NULL, -1); + case T_IndexOnlyScan: + return IndexOnlyScan_deser(container, NULL, -1); + case T_A_Star: + return A_Star_deser(container, NULL, -1); + case T_Constraint: + return Constraint_deser(container, NULL, -1); + case T_AlterPolicyStmt: + return AlterPolicyStmt_deser(container, NULL, -1); + case T_LockingClause: + return LockingClause_deser(container, NULL, -1); + case T_FuncCall: + return FuncCall_deser(container, NULL, -1); + case T_CreateTransformStmt: + return CreateTransformStmt_deser(container, NULL, -1); + case T_NestLoopParam: + return NestLoopParam_deser(container, NULL, -1); + case T_MinMaxExpr: + return MinMaxExpr_deser(container, NULL, -1); + case T_UpdateStmt: + return UpdateStmt_deser(container, NULL, -1); + case T_Agg: + return Agg_deser(container, NULL, -1); + case T_SetToDefault: + return SetToDefault_deser(container, NULL, -1); + case T_AlterTSConfigurationStmt: + return AlterTSConfigurationStmt_deser(container, NULL, -1); + case T_A_Expr: + return A_Expr_deser(container, NULL, -1); + case T_SubLink: + return SubLink_deser(container, NULL, -1); + case T_AlterOperatorStmt: + return AlterOperatorStmt_deser(container, NULL, -1); + case T_IndexStmt: + return IndexStmt_deser(container, NULL, -1); + case T_AlterDomainStmt: + return AlterDomainStmt_deser(container, NULL, -1); + case T_TidScan: + return TidScan_deser(container, NULL, -1); + case T_PlanRowMark: + return PlanRowMark_deser(container, NULL, -1); + case T_PrepareStmt: + return PrepareStmt_deser(container, NULL, -1); + case T_AlterDatabaseStmt: + return AlterDatabaseStmt_deser(container, NULL, -1); + case T_SelectStmt: + return SelectStmt_deser(container, NULL, -1); + case T_FromExpr: + return FromExpr_deser(container, NULL, -1); + case T_Param: + return Param_deser(container, NULL, -1); + case T_AlterTSDictionaryStmt: + return AlterTSDictionaryStmt_deser(container, NULL, -1); + case T_ReassignOwnedStmt: + return ReassignOwnedStmt_deser(container, NULL, -1); + case T_MultiAssignRef: + return MultiAssignRef_deser(container, NULL, -1); + case T_LoadStmt: + return LoadStmt_deser(container, NULL, -1); + case T_CreateStmt: + return CreateStmt_deser(container, NULL, -1); + case T_RefreshMatViewStmt: + return RefreshMatViewStmt_deser(container, NULL, -1); + case T_DeleteStmt: + return DeleteStmt_deser(container, NULL, -1); + case T_SubqueryScan: + return SubqueryScan_deser(container, NULL, -1); + case T_CreateCastStmt: + return CreateCastStmt_deser(container, NULL, -1); + case T_ConstraintsSetStmt: + return ConstraintsSetStmt_deser(container, NULL, -1); + case T_WindowClause: + return WindowClause_deser(container, NULL, -1); + case T_ArrayExpr: + return ArrayExpr_deser(container, NULL, -1); + case T_InferClause: + return InferClause_deser(container, NULL, -1); + case T_BitmapHeapScan: + return BitmapHeapScan_deser(container, NULL, -1); + case T_CaseTestExpr: + return CaseTestExpr_deser(container, NULL, -1); + case T_VariableShowStmt: + return VariableShowStmt_deser(container, NULL, -1); + case T_Expr: + return Expr_deser(container, NULL, -1); + case T_CreateAmStmt: + return CreateAmStmt_deser(container, NULL, -1); + case T_FetchStmt: + return FetchStmt_deser(container, NULL, -1); + case T_Sort: + return Sort_deser(container, NULL, -1); + case T_Const: + return Const_deser(container, NULL, -1); + case T_CoerceToDomain: + return CoerceToDomain_deser(container, NULL, -1); + case T_ExplainStmt: + return ExplainStmt_deser(container, NULL, -1); + case T_TransactionStmt: + return TransactionStmt_deser(container, NULL, -1); + case T_BoolExpr: + return BoolExpr_deser(container, NULL, -1); + case T_GrantRoleStmt: + return GrantRoleStmt_deser(container, NULL, -1); + case T_ParamRef: + return ParamRef_deser(container, NULL, -1); + case T_HashJoin: + return HashJoin_deser(container, NULL, -1); + case T_ClosePortalStmt: + return ClosePortalStmt_deser(container, NULL, -1); + case T_Plan: + return Plan_deser(container, NULL, -1); + case T_CopyStmt: + return CopyStmt_deser(container, NULL, -1); + case T_CreateForeignServerStmt: + return CreateForeignServerStmt_deser(container, NULL, -1); + case T_SetOp: + return SetOp_deser(container, NULL, -1); + case T_CollateExpr: + return CollateExpr_deser(container, NULL, -1); + case T_A_ArrayExpr: + return A_ArrayExpr_deser(container, NULL, -1); + case T_LockStmt: + return LockStmt_deser(container, NULL, -1); + case T_CreateTableSpaceStmt: + return CreateTableSpaceStmt_deser(container, NULL, -1); + case T_TargetEntry: + return TargetEntry_deser(container, NULL, -1); + case T_XmlSerialize: + return XmlSerialize_deser(container, NULL, -1); + case T_TypeName: + return TypeName_deser(container, NULL, -1); + case T_VacuumStmt: + return VacuumStmt_deser(container, NULL, -1); + case T_SampleScan: + return SampleScan_deser(container, NULL, -1); + case T_RangeVar: + return RangeVar_deser(container, NULL, -1); + case T_A_Indices: + return A_Indices_deser(container, NULL, -1); + case T_CreateFdwStmt: + return CreateFdwStmt_deser(container, NULL, -1); + case T_A_Indirection: + return A_Indirection_deser(container, NULL, -1); + case T_CurrentOfExpr: + return CurrentOfExpr_deser(container, NULL, -1); + case T_TableLikeClause: + return TableLikeClause_deser(container, NULL, -1); + case T_CreateForeignTableStmt: + return CreateForeignTableStmt_deser(container, NULL, -1); + case T_RangeTblEntry: + return RangeTblEntry_deser(container, NULL, -1); + case T_FunctionParameter: + return FunctionParameter_deser(container, NULL, -1); + case T_OpExpr: + return OpExpr_deser(container, NULL, -1); + case T_AlterFdwStmt: + return AlterFdwStmt_deser(container, NULL, -1); + case T_BitmapAnd: + return BitmapAnd_deser(container, NULL, -1); + case T_CreateUserMappingStmt: + return CreateUserMappingStmt_deser(container, NULL, -1); + case T_CreatePolicyStmt: + return CreatePolicyStmt_deser(container, NULL, -1); + case T_AlterUserMappingStmt: + return AlterUserMappingStmt_deser(container, NULL, -1); + case T_InferenceElem: + return InferenceElem_deser(container, NULL, -1); + case T_ExecuteStmt: + return ExecuteStmt_deser(container, NULL, -1); + case T_XmlExpr: + return XmlExpr_deser(container, NULL, -1); + case T_SecLabelStmt: + return SecLabelStmt_deser(container, NULL, -1); + case T_CreatePLangStmt: + return CreatePLangStmt_deser(container, NULL, -1); + case T_DeclareCursorStmt: + return DeclareCursorStmt_deser(container, NULL, -1); + case T_AlterExtensionContentsStmt: + return AlterExtensionContentsStmt_deser(container, NULL, -1); + case T_CreateOpClassItem: + return CreateOpClassItem_deser(container, NULL, -1); + case T_RowMarkClause: + return RowMarkClause_deser(container, NULL, -1); + case T_RowExpr: + return RowExpr_deser(container, NULL, -1); + case T_RenameStmt: + return RenameStmt_deser(container, NULL, -1); + case T_AlterExtensionStmt: + return AlterExtensionStmt_deser(container, NULL, -1); + case T_Unique: + return Unique_deser(container, NULL, -1); + case T_FunctionScan: + return FunctionScan_deser(container, NULL, -1); + case T_LockRows: + return LockRows_deser(container, NULL, -1); + case T_InsertStmt: + return InsertStmt_deser(container, NULL, -1); + case T_AlterRoleSetStmt: + return AlterRoleSetStmt_deser(container, NULL, -1); + case T_CollateClause: + return CollateClause_deser(container, NULL, -1); + case T_AlterTableSpaceOptionsStmt: + return AlterTableSpaceOptionsStmt_deser(container, NULL, -1); + case T_DefElem: + return DefElem_deser(container, NULL, -1); + case T_DiscardStmt: + return DiscardStmt_deser(container, NULL, -1); + case T_RuleStmt: + return RuleStmt_deser(container, NULL, -1); + case T_ArrayCoerceExpr: + return ArrayCoerceExpr_deser(container, NULL, -1); + case T_Limit: + return Limit_deser(container, NULL, -1); + case T_Material: + return Material_deser(container, NULL, -1); + case T_AccessPriv: + return AccessPriv_deser(container, NULL, -1); + case T_ColumnRef: + return ColumnRef_deser(container, NULL, -1); + case T_AlterOpFamilyStmt: + return AlterOpFamilyStmt_deser(container, NULL, -1); + case T_Aggref: + return Aggref_deser(container, NULL, -1); + case T_CreateSchemaStmt: + return CreateSchemaStmt_deser(container, NULL, -1); + case T_CreateFunctionStmt: + return CreateFunctionStmt_deser(container, NULL, -1); + case T_ClusterStmt: + return ClusterStmt_deser(container, NULL, -1); + case T_PlannedStmt: + return PlannedStmt_deser(container, NULL, -1); + case T_CheckPointStmt: + return CheckPointStmt_deser(container, NULL, -1); + case T_CteScan: + return CteScan_deser(container, NULL, -1); + case T_RowCompareExpr: + return RowCompareExpr_deser(container, NULL, -1); + case T_CaseWhen: + return CaseWhen_deser(container, NULL, -1); + case T_ColumnDef: + return ColumnDef_deser(container, NULL, -1); + case T_A_Const: + return A_Const_deser(container, NULL, -1); + case T_ValuesScan: + return ValuesScan_deser(container, NULL, -1); + case T_PlanInvalItem: + return PlanInvalItem_deser(container, NULL, -1); + case T_ListenStmt: + return ListenStmt_deser(container, NULL, -1); + case T_Gather: + return Gather_deser(container, NULL, -1); + case T_CreateTableAsStmt: + return CreateTableAsStmt_deser(container, NULL, -1); + case T_UnlistenStmt: + return UnlistenStmt_deser(container, NULL, -1); + case T_CreateConversionStmt: + return CreateConversionStmt_deser(container, NULL, -1); + case T_AlterFunctionStmt: + return AlterFunctionStmt_deser(container, NULL, -1); + case T_TruncateStmt: + return TruncateStmt_deser(container, NULL, -1); + case T_ResTarget: + return ResTarget_deser(container, NULL, -1); + case T_CoerceViaIO: + return CoerceViaIO_deser(container, NULL, -1); + case T_CaseExpr: + return CaseExpr_deser(container, NULL, -1); + case T_CreateEnumStmt: + return CreateEnumStmt_deser(container, NULL, -1); + case T_RangeSubselect: + return RangeSubselect_deser(container, NULL, -1); + case T_DropUserMappingStmt: + return DropUserMappingStmt_deser(container, NULL, -1); + case T_JoinExpr: + return JoinExpr_deser(container, NULL, -1); + case T_IndexScan: + return IndexScan_deser(container, NULL, -1); + case T_Group: + return Group_deser(container, NULL, -1); + case T_IndexElem: + return IndexElem_deser(container, NULL, -1); + case T_SortBy: + return SortBy_deser(container, NULL, -1); + case T_Join: + return Join_deser(container, NULL, -1); + case T_DoStmt: + return DoStmt_deser(container, NULL, -1); + case T_FieldStore: + return FieldStore_deser(container, NULL, -1); + case T_Hash: + return Hash_deser(container, NULL, -1); + case T_AlterTableCmd: + return AlterTableCmd_deser(container, NULL, -1); + case T_WorkTableScan: + return WorkTableScan_deser(container, NULL, -1); + case T_WindowDef: + return WindowDef_deser(container, NULL, -1); + case T_CreateTrigStmt: + return CreateTrigStmt_deser(container, NULL, -1); + case T_FieldSelect: + return FieldSelect_deser(container, NULL, -1); + case T_RangeFunction: + return RangeFunction_deser(container, NULL, -1); + case T_AlterSystemStmt: + return AlterSystemStmt_deser(container, NULL, -1); + case T_AlterObjectDependsStmt: + return AlterObjectDependsStmt_deser(container, NULL, -1); + case T_GroupingSet: + return GroupingSet_deser(container, NULL, -1); + case T_CreateRoleStmt: + return CreateRoleStmt_deser(container, NULL, -1); + case T_FuncExpr: + return FuncExpr_deser(container, NULL, -1); + case T_CommentStmt: + return CommentStmt_deser(container, NULL, -1); + case T_NotifyStmt: + return NotifyStmt_deser(container, NULL, -1); + case T_TypeCast: + return TypeCast_deser(container, NULL, -1); + case T_WithCheckOption: + return WithCheckOption_deser(container, NULL, -1); + case T_SubPlan: + return SubPlan_deser(container, NULL, -1); + case T_Result: + return Result_deser(container, NULL, -1); + case T_SetOperationStmt: + return SetOperationStmt_deser(container, NULL, -1); + case T_ReplicaIdentityStmt: + return ReplicaIdentityStmt_deser(container, NULL, -1); + case T_Alias: + return Alias_deser(container, NULL, -1); + case T_CommonTableExpr: + return CommonTableExpr_deser(container, NULL, -1); + case T_CreatedbStmt: + return CreatedbStmt_deser(container, NULL, -1); + case T_AlterRoleStmt: + return AlterRoleStmt_deser(container, NULL, -1); + case T_WithClause: + return WithClause_deser(container, NULL, -1); + case T_ForeignScan: + return ForeignScan_deser(container, NULL, -1); + case T_FuncWithArgs: + return FuncWithArgs_deser(container, NULL, -1); + case T_AlterForeignServerStmt: + return AlterForeignServerStmt_deser(container, NULL, -1); + case T_DefineStmt: + return DefineStmt_deser(container, NULL, -1); + case T_AlterTableStmt: + return AlterTableStmt_deser(container, NULL, -1); + case T_ImportForeignSchemaStmt: + return ImportForeignSchemaStmt_deser(container, NULL, -1); + case T_Var: + return Var_deser(container, NULL, -1); + case T_SortGroupClause: + return SortGroupClause_deser(container, NULL, -1); + case T_CreateDomainStmt: + return CreateDomainStmt_deser(container, NULL, -1); + case T_TableSampleClause: + return TableSampleClause_deser(container, NULL, -1); + case T_CoalesceExpr: + return CoalesceExpr_deser(container, NULL, -1); + case T_RangeTblFunction: + return RangeTblFunction_deser(container, NULL, -1); + case T_NamedArgExpr: + return NamedArgExpr_deser(container, NULL, -1); + case T_Value: + return Value_deser(container, NULL, -1); + case T_AlterOwnerStmt: + return AlterOwnerStmt_deser(container, NULL, -1); + case T_SeqScan: + return Scan_deser(container, NULL, T_SeqScan); + case T_DistinctExpr: + return OpExpr_deser(container, NULL, T_DistinctExpr); + case T_NullIfExpr: + return OpExpr_deser(container, NULL, T_NullIfExpr); + } + elog(WARNING, "could not read unrecognized node type:%d", node_type_value); + return NULL; +} + +void *jsonb_to_node_tree(Jsonb *json, void *(*hookPtr) (void *)) +{ + void *node; + hook = hookPtr; + node = jsonb_to_node(&json->root); + hook = NULL; + return node; +} \ No newline at end of file diff --git a/serialize.c b/serialize.c new file mode 100644 index 0000000..49c5f3d --- /dev/null +++ b/serialize.c @@ -0,0 +1,23781 @@ +#include "sr_plan.h" + +static +JsonbValue *node_to_jsonb(const void *obj, JsonbParseState *state); + +static Oid remove_fake_func = 0; +static bool skip_location = false; + + + + + + + + + + + + + + + + + + + + + + static + JsonbValue *RelabelType_ser(const RelabelType *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *VariableSetStmt_ser(const VariableSetStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateOpClassStmt_ser(const CreateOpClassStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CompositeTypeStmt_ser(const CompositeTypeStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ArrayRef_ser(const ArrayRef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeTblRef_ser(const RangeTblRef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ScalarArrayOpExpr_ser(const ScalarArrayOpExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterEnumStmt_ser(const AlterEnumStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *OnConflictExpr_ser(const OnConflictExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterObjectSchemaStmt_ser(const AlterObjectSchemaStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Query_ser(const Query *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterDefaultPrivilegesStmt_ser(const AlterDefaultPrivilegesStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateEventTrigStmt_ser(const CreateEventTrigStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BitmapIndexScan_ser(const BitmapIndexScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateRangeStmt_ser(const CreateRangeStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateSeqStmt_ser(const CreateSeqStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *GroupingFunc_ser(const GroupingFunc *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeTableSample_ser(const RangeTableSample *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BitmapOr_ser(const BitmapOr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ReindexStmt_ser(const ReindexStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropStmt_ser(const DropStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WindowFunc_ser(const WindowFunc *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *NullTest_ser(const NullTest *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ConvertRowtypeExpr_ser(const ConvertRowtypeExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DeallocateStmt_ser(const DeallocateStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterDatabaseSetStmt_ser(const AlterDatabaseSetStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateOpFamilyStmt_ser(const CreateOpFamilyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CustomScan_ser(const CustomScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WindowAgg_ser(const WindowAgg *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *MergeAppend_ser(const MergeAppend *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterSeqStmt_ser(const AlterSeqStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BooleanTest_ser(const BooleanTest *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RoleSpec_ser(const RoleSpec *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RecursiveUnion_ser(const RecursiveUnion *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *MergeJoin_ser(const MergeJoin *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterEventTrigStmt_ser(const AlterEventTrigStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CoerceToDomainValue_ser(const CoerceToDomainValue *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Append_ser(const Append *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Scan_ser(const Scan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ModifyTable_ser(const ModifyTable *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropRoleStmt_ser(const DropRoleStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropOwnedStmt_ser(const DropOwnedStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTableMoveAllStmt_ser(const AlterTableMoveAllStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *NestLoop_ser(const NestLoop *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *InlineCodeBlock_ser(const InlineCodeBlock *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropTableSpaceStmt_ser(const DropTableSpaceStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateExtensionStmt_ser(const CreateExtensionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ViewStmt_ser(const ViewStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlternativeSubPlan_ser(const AlternativeSubPlan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *IntoClause_ser(const IntoClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *GrantStmt_ser(const GrantStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropdbStmt_ser(const DropdbStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *OnConflictClause_ser(const OnConflictClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *IndexOnlyScan_ser(const IndexOnlyScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_Star_ser(const A_Star *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Constraint_ser(const Constraint *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterPolicyStmt_ser(const AlterPolicyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *LockingClause_ser(const LockingClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FuncCall_ser(const FuncCall *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateTransformStmt_ser(const CreateTransformStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *NestLoopParam_ser(const NestLoopParam *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *MinMaxExpr_ser(const MinMaxExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *UpdateStmt_ser(const UpdateStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Agg_ser(const Agg *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SetToDefault_ser(const SetToDefault *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTSConfigurationStmt_ser(const AlterTSConfigurationStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_Expr_ser(const A_Expr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SubLink_ser(const SubLink *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterOperatorStmt_ser(const AlterOperatorStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *IndexStmt_ser(const IndexStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterDomainStmt_ser(const AlterDomainStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TidScan_ser(const TidScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *PlanRowMark_ser(const PlanRowMark *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *PrepareStmt_ser(const PrepareStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterDatabaseStmt_ser(const AlterDatabaseStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SelectStmt_ser(const SelectStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FromExpr_ser(const FromExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Param_ser(const Param *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTSDictionaryStmt_ser(const AlterTSDictionaryStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ReassignOwnedStmt_ser(const ReassignOwnedStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *MultiAssignRef_ser(const MultiAssignRef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *LoadStmt_ser(const LoadStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateStmt_ser(const CreateStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RefreshMatViewStmt_ser(const RefreshMatViewStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DeleteStmt_ser(const DeleteStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SubqueryScan_ser(const SubqueryScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateCastStmt_ser(const CreateCastStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ConstraintsSetStmt_ser(const ConstraintsSetStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WindowClause_ser(const WindowClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ArrayExpr_ser(const ArrayExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *InferClause_ser(const InferClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BitmapHeapScan_ser(const BitmapHeapScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CaseTestExpr_ser(const CaseTestExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *VariableShowStmt_ser(const VariableShowStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Expr_ser(const Expr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateAmStmt_ser(const CreateAmStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FetchStmt_ser(const FetchStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Sort_ser(const Sort *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Const_ser(const Const *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CoerceToDomain_ser(const CoerceToDomain *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ExplainStmt_ser(const ExplainStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TransactionStmt_ser(const TransactionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BoolExpr_ser(const BoolExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *GrantRoleStmt_ser(const GrantRoleStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ParamRef_ser(const ParamRef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *HashJoin_ser(const HashJoin *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ClosePortalStmt_ser(const ClosePortalStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Plan_ser(const Plan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CopyStmt_ser(const CopyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateForeignServerStmt_ser(const CreateForeignServerStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SetOp_ser(const SetOp *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CollateExpr_ser(const CollateExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_ArrayExpr_ser(const A_ArrayExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *LockStmt_ser(const LockStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateTableSpaceStmt_ser(const CreateTableSpaceStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TargetEntry_ser(const TargetEntry *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *XmlSerialize_ser(const XmlSerialize *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TypeName_ser(const TypeName *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *VacuumStmt_ser(const VacuumStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SampleScan_ser(const SampleScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeVar_ser(const RangeVar *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_Indices_ser(const A_Indices *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateFdwStmt_ser(const CreateFdwStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_Indirection_ser(const A_Indirection *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CurrentOfExpr_ser(const CurrentOfExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TableLikeClause_ser(const TableLikeClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateForeignTableStmt_ser(const CreateForeignTableStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeTblEntry_ser(const RangeTblEntry *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FunctionParameter_ser(const FunctionParameter *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *OpExpr_ser(const OpExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterFdwStmt_ser(const AlterFdwStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *BitmapAnd_ser(const BitmapAnd *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateUserMappingStmt_ser(const CreateUserMappingStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreatePolicyStmt_ser(const CreatePolicyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterUserMappingStmt_ser(const AlterUserMappingStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *InferenceElem_ser(const InferenceElem *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ExecuteStmt_ser(const ExecuteStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *XmlExpr_ser(const XmlExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SecLabelStmt_ser(const SecLabelStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreatePLangStmt_ser(const CreatePLangStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DeclareCursorStmt_ser(const DeclareCursorStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterExtensionContentsStmt_ser(const AlterExtensionContentsStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateOpClassItem_ser(const CreateOpClassItem *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RowMarkClause_ser(const RowMarkClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RowExpr_ser(const RowExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RenameStmt_ser(const RenameStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterExtensionStmt_ser(const AlterExtensionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Unique_ser(const Unique *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FunctionScan_ser(const FunctionScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *LockRows_ser(const LockRows *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *InsertStmt_ser(const InsertStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterRoleSetStmt_ser(const AlterRoleSetStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CollateClause_ser(const CollateClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTableSpaceOptionsStmt_ser(const AlterTableSpaceOptionsStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DefElem_ser(const DefElem *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DiscardStmt_ser(const DiscardStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RuleStmt_ser(const RuleStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ArrayCoerceExpr_ser(const ArrayCoerceExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Limit_ser(const Limit *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Material_ser(const Material *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AccessPriv_ser(const AccessPriv *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ColumnRef_ser(const ColumnRef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterOpFamilyStmt_ser(const AlterOpFamilyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Aggref_ser(const Aggref *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateSchemaStmt_ser(const CreateSchemaStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateFunctionStmt_ser(const CreateFunctionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ClusterStmt_ser(const ClusterStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *PlannedStmt_ser(const PlannedStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CheckPointStmt_ser(const CheckPointStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CteScan_ser(const CteScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RowCompareExpr_ser(const RowCompareExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CaseWhen_ser(const CaseWhen *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ColumnDef_ser(const ColumnDef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *A_Const_ser(const A_Const *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ValuesScan_ser(const ValuesScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *PlanInvalItem_ser(const PlanInvalItem *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ListenStmt_ser(const ListenStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Gather_ser(const Gather *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateTableAsStmt_ser(const CreateTableAsStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *UnlistenStmt_ser(const UnlistenStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateConversionStmt_ser(const CreateConversionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterFunctionStmt_ser(const AlterFunctionStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TruncateStmt_ser(const TruncateStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ResTarget_ser(const ResTarget *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CoerceViaIO_ser(const CoerceViaIO *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CaseExpr_ser(const CaseExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateEnumStmt_ser(const CreateEnumStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeSubselect_ser(const RangeSubselect *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DropUserMappingStmt_ser(const DropUserMappingStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *JoinExpr_ser(const JoinExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *IndexScan_ser(const IndexScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Group_ser(const Group *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *IndexElem_ser(const IndexElem *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SortBy_ser(const SortBy *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Join_ser(const Join *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DoStmt_ser(const DoStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FieldStore_ser(const FieldStore *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Hash_ser(const Hash *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTableCmd_ser(const AlterTableCmd *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WorkTableScan_ser(const WorkTableScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WindowDef_ser(const WindowDef *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateTrigStmt_ser(const CreateTrigStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FieldSelect_ser(const FieldSelect *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeFunction_ser(const RangeFunction *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterSystemStmt_ser(const AlterSystemStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterObjectDependsStmt_ser(const AlterObjectDependsStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *GroupingSet_ser(const GroupingSet *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateRoleStmt_ser(const CreateRoleStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FuncExpr_ser(const FuncExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CommentStmt_ser(const CommentStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *NotifyStmt_ser(const NotifyStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TypeCast_ser(const TypeCast *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WithCheckOption_ser(const WithCheckOption *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SubPlan_ser(const SubPlan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Result_ser(const Result *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SetOperationStmt_ser(const SetOperationStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ReplicaIdentityStmt_ser(const ReplicaIdentityStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Alias_ser(const Alias *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CommonTableExpr_ser(const CommonTableExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreatedbStmt_ser(const CreatedbStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterRoleStmt_ser(const AlterRoleStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *WithClause_ser(const WithClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ForeignScan_ser(const ForeignScan *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *FuncWithArgs_ser(const FuncWithArgs *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterForeignServerStmt_ser(const AlterForeignServerStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *DefineStmt_ser(const DefineStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterTableStmt_ser(const AlterTableStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *ImportForeignSchemaStmt_ser(const ImportForeignSchemaStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Var_ser(const Var *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *SortGroupClause_ser(const SortGroupClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CreateDomainStmt_ser(const CreateDomainStmt *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *TableSampleClause_ser(const TableSampleClause *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *CoalesceExpr_ser(const CoalesceExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *RangeTblFunction_ser(const RangeTblFunction *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *NamedArgExpr_ser(const NamedArgExpr *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *Value_ser(const Value *node, JsonbParseState *state, bool sub_object); + static + JsonbValue *AlterOwnerStmt_ser(const AlterOwnerStmt *node, JsonbParseState *state, bool sub_object); + + +static +JsonbValue *datum_ser(JsonbParseState *state, Datum value, int typlen, bool typbyval) +{ + Size length, + i; + char *s; + + length = datumGetSize(value, typbyval, typlen); + if (typbyval) + { + JsonbValue val; + s = (char *) (&value); + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < (Size) sizeof(Datum); i++) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum((int) (s[i])))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + return pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + else + { + JsonbValue val; + s = (char *) DatumGetPointer(value); + if (!PointerIsValid(s)) + { + val.type = jbvNull; + return pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < length; i++) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum((int) (s[i])))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + return pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + } + +} + + static + JsonbValue *RelabelType_ser(const RelabelType *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relabelformat"); + key.val.string.val = strdup("relabelformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relabelformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultcollid"); + key.val.string.val = strdup("resultcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resultcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttypmod"); + key.val.string.val = strdup("resulttypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resulttypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *VariableSetStmt_ser(const VariableSetStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_local"); + key.val.string.val = strdup("is_local"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_local; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateOpClassStmt_ser(const CreateOpClassStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("amname"); + key.val.string.val = strdup("amname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->amname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->amname); + val.val.string.val = (char *)node->amname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("datatype"); + key.val.string.val = strdup("datatype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->datatype, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isDefault"); + key.val.string.val = strdup("isDefault"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isDefault; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("items"); + key.val.string.val = strdup("items"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->items, state); + + + key.type = jbvString; + key.val.string.len = strlen("opclassname"); + key.val.string.val = strdup("opclassname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opclassname, state); + + + key.type = jbvString; + key.val.string.len = strlen("opfamilyname"); + key.val.string.val = strdup("opfamilyname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opfamilyname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CompositeTypeStmt_ser(const CompositeTypeStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("coldeflist"); + key.val.string.val = strdup("coldeflist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->coldeflist, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typevar"); + key.val.string.val = strdup("typevar"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typevar, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ArrayRef_ser(const ArrayRef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("refarraytype"); + key.val.string.val = strdup("refarraytype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->refarraytype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("refassgnexpr"); + key.val.string.val = strdup("refassgnexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->refassgnexpr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("refcollid"); + key.val.string.val = strdup("refcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->refcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("refelemtype"); + key.val.string.val = strdup("refelemtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->refelemtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("refexpr"); + key.val.string.val = strdup("refexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->refexpr, state); + + + key.type = jbvString; + key.val.string.len = strlen("reflowerindexpr"); + key.val.string.val = strdup("reflowerindexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->reflowerindexpr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("reftypmod"); + key.val.string.val = strdup("reftypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->reftypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("refupperindexpr"); + key.val.string.val = strdup("refupperindexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->refupperindexpr, state); + + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeTblRef_ser(const RangeTblRef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rtindex"); + key.val.string.val = strdup("rtindex"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->rtindex))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ScalarArrayOpExpr_ser(const ScalarArrayOpExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opfuncid"); + key.val.string.val = strdup("opfuncid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opfuncid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opno"); + key.val.string.val = strdup("opno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("useOr"); + key.val.string.val = strdup("useOr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->useOr; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterEnumStmt_ser(const AlterEnumStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("newVal"); + key.val.string.val = strdup("newVal"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->newVal == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->newVal); + val.val.string.val = (char *)node->newVal; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("newValIsAfter"); + key.val.string.val = strdup("newValIsAfter"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->newValIsAfter; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("newValNeighbor"); + key.val.string.val = strdup("newValNeighbor"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->newValNeighbor == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->newValNeighbor); + val.val.string.val = (char *)node->newValNeighbor; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skipIfExists"); + key.val.string.val = strdup("skipIfExists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->skipIfExists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *OnConflictExpr_ser(const OnConflictExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("action"); + key.val.string.val = strdup("action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("arbiterElems"); + key.val.string.val = strdup("arbiterElems"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arbiterElems, state); + + + key.type = jbvString; + key.val.string.len = strlen("arbiterWhere"); + key.val.string.val = strdup("arbiterWhere"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arbiterWhere, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("constraint"); + key.val.string.val = strdup("constraint"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->constraint))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("exclRelIndex"); + key.val.string.val = strdup("exclRelIndex"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->exclRelIndex))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("exclRelTlist"); + key.val.string.val = strdup("exclRelTlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->exclRelTlist, state); + + + key.type = jbvString; + key.val.string.len = strlen("onConflictSet"); + key.val.string.val = strdup("onConflictSet"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflictSet, state); + + + key.type = jbvString; + key.val.string.len = strlen("onConflictWhere"); + key.val.string.val = strdup("onConflictWhere"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflictWhere, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterObjectSchemaStmt_ser(const AlterObjectSchemaStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("newschema"); + key.val.string.val = strdup("newschema"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->newschema == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->newschema); + val.val.string.val = (char *)node->newschema; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("objarg"); + key.val.string.val = strdup("objarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objarg, state); + + + key.type = jbvString; + key.val.string.len = strlen("object"); + key.val.string.val = strdup("object"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->object, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objectType"); + key.val.string.val = strdup("objectType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objectType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Query_ser(const Query *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("canSetTag"); + key.val.string.val = strdup("canSetTag"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->canSetTag; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("commandType"); + key.val.string.val = strdup("commandType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->commandType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("constraintDeps"); + key.val.string.val = strdup("constraintDeps"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constraintDeps, state); + + + key.type = jbvString; + key.val.string.len = strlen("cteList"); + key.val.string.val = strdup("cteList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cteList, state); + + + key.type = jbvString; + key.val.string.len = strlen("distinctClause"); + key.val.string.val = strdup("distinctClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->distinctClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("groupClause"); + key.val.string.val = strdup("groupClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->groupClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("groupingSets"); + key.val.string.val = strdup("groupingSets"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->groupingSets, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasAggs"); + key.val.string.val = strdup("hasAggs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasAggs; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasDistinctOn"); + key.val.string.val = strdup("hasDistinctOn"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasDistinctOn; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasForUpdate"); + key.val.string.val = strdup("hasForUpdate"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasForUpdate; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasModifyingCTE"); + key.val.string.val = strdup("hasModifyingCTE"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasModifyingCTE; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasRecursive"); + key.val.string.val = strdup("hasRecursive"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasRecursive; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasRowSecurity"); + key.val.string.val = strdup("hasRowSecurity"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasRowSecurity; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasSubLinks"); + key.val.string.val = strdup("hasSubLinks"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasSubLinks; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasWindowFuncs"); + key.val.string.val = strdup("hasWindowFuncs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasWindowFuncs; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("havingQual"); + key.val.string.val = strdup("havingQual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->havingQual, state); + + + key.type = jbvString; + key.val.string.len = strlen("jointree"); + key.val.string.val = strdup("jointree"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->jointree, state); + + + key.type = jbvString; + key.val.string.len = strlen("limitCount"); + key.val.string.val = strdup("limitCount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitCount, state); + + + key.type = jbvString; + key.val.string.len = strlen("limitOffset"); + key.val.string.val = strdup("limitOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitOffset, state); + + + key.type = jbvString; + key.val.string.len = strlen("onConflict"); + key.val.string.val = strdup("onConflict"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflict, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("queryId"); + key.val.string.val = strdup("queryId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->queryId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("querySource"); + key.val.string.val = strdup("querySource"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->querySource))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultRelation"); + key.val.string.val = strdup("resultRelation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resultRelation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("returningList"); + key.val.string.val = strdup("returningList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returningList, state); + + + key.type = jbvString; + key.val.string.len = strlen("rowMarks"); + key.val.string.val = strdup("rowMarks"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rowMarks, state); + + + key.type = jbvString; + key.val.string.len = strlen("rtable"); + key.val.string.val = strdup("rtable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rtable, state); + + + key.type = jbvString; + key.val.string.len = strlen("setOperations"); + key.val.string.val = strdup("setOperations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->setOperations, state); + + + key.type = jbvString; + key.val.string.len = strlen("sortClause"); + key.val.string.val = strdup("sortClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->sortClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("targetList"); + key.val.string.val = strdup("targetList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targetList, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("utilityStmt"); + key.val.string.val = strdup("utilityStmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->utilityStmt, state); + + + key.type = jbvString; + key.val.string.len = strlen("windowClause"); + key.val.string.val = strdup("windowClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->windowClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("withCheckOptions"); + key.val.string.val = strdup("withCheckOptions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withCheckOptions, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterDefaultPrivilegesStmt_ser(const AlterDefaultPrivilegesStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("action"); + key.val.string.val = strdup("action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->action, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateEventTrigStmt_ser(const CreateEventTrigStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("eventname"); + key.val.string.val = strdup("eventname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->eventname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->eventname); + val.val.string.val = (char *)node->eventname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("funcname"); + key.val.string.val = strdup("funcname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("trigname"); + key.val.string.val = strdup("trigname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->trigname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->trigname); + val.val.string.val = (char *)node->trigname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whenclause"); + key.val.string.val = strdup("whenclause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whenclause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BitmapIndexScan_ser(const BitmapIndexScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexid"); + key.val.string.val = strdup("indexid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->indexid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexqual"); + key.val.string.val = strdup("indexqual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexqual, state); + + + key.type = jbvString; + key.val.string.len = strlen("indexqualorig"); + key.val.string.val = strdup("indexqualorig"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexqualorig, state); + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateRangeStmt_ser(const CreateRangeStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("params"); + key.val.string.val = strdup("params"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->params, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateSeqStmt_ser(const CreateSeqStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ownerId"); + key.val.string.val = strdup("ownerId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->ownerId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("sequence"); + key.val.string.val = strdup("sequence"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->sequence, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *GroupingFunc_ser(const GroupingFunc *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("agglevelsup"); + key.val.string.val = strdup("agglevelsup"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->agglevelsup))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("cols"); + key.val.string.val = strdup("cols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cols, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("refs"); + key.val.string.val = strdup("refs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->refs, state); + + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeTableSample_ser(const RangeTableSample *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("method"); + key.val.string.val = strdup("method"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->method, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + + key.type = jbvString; + key.val.string.len = strlen("repeatable"); + key.val.string.val = strdup("repeatable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->repeatable, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BitmapOr_ser(const BitmapOr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("bitmapplans"); + key.val.string.val = strdup("bitmapplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->bitmapplans, state); + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ReindexStmt_ser(const ReindexStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->options))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropStmt_ser(const DropStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arguments"); + key.val.string.val = strdup("arguments"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arguments, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("concurrent"); + key.val.string.val = strdup("concurrent"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->concurrent; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("objects"); + key.val.string.val = strdup("objects"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objects, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("removeType"); + key.val.string.val = strdup("removeType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->removeType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WindowFunc_ser(const WindowFunc *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("aggfilter"); + key.val.string.val = strdup("aggfilter"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggfilter, state); + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winagg"); + key.val.string.val = strdup("winagg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->winagg; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("wincollid"); + key.val.string.val = strdup("wincollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->wincollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winfnoid"); + key.val.string.val = strdup("winfnoid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->winfnoid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winref"); + key.val.string.val = strdup("winref"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->winref))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winstar"); + key.val.string.val = strdup("winstar"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->winstar; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("wintype"); + key.val.string.val = strdup("wintype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->wintype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *NullTest_ser(const NullTest *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("argisrow"); + key.val.string.val = strdup("argisrow"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->argisrow; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nulltesttype"); + key.val.string.val = strdup("nulltesttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->nulltesttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ConvertRowtypeExpr_ser(const ConvertRowtypeExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("convertformat"); + key.val.string.val = strdup("convertformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->convertformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DeallocateStmt_ser(const DeallocateStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterDatabaseSetStmt_ser(const AlterDatabaseSetStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("dbname"); + key.val.string.val = strdup("dbname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->dbname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->dbname); + val.val.string.val = (char *)node->dbname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("setstmt"); + key.val.string.val = strdup("setstmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->setstmt, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateOpFamilyStmt_ser(const CreateOpFamilyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("amname"); + key.val.string.val = strdup("amname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->amname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->amname); + val.val.string.val = (char *)node->amname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("opfamilyname"); + key.val.string.val = strdup("opfamilyname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opfamilyname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CustomScan_ser(const CustomScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("custom_exprs"); + key.val.string.val = strdup("custom_exprs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->custom_exprs, state); + + + key.type = jbvString; + key.val.string.len = strlen("custom_plans"); + key.val.string.val = strdup("custom_plans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->custom_plans, state); + + + key.type = jbvString; + key.val.string.len = strlen("custom_private"); + key.val.string.val = strdup("custom_private"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->custom_private, state); + + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("custom_relids"); + key.val.string.val = strdup("custom_relids"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->custom_relids == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->custom_relids, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("custom_scan_tlist"); + key.val.string.val = strdup("custom_scan_tlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->custom_scan_tlist, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("flags"); + key.val.string.val = strdup("flags"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->flags))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + /* NOT FOUND TYPE: *CustomScanMethods */ + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WindowAgg_ser(const WindowAgg *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("endOffset"); + key.val.string.val = strdup("endOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->endOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("frameOptions"); + key.val.string.val = strdup("frameOptions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->frameOptions))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("ordColIdx"); + key.val.string.val = strdup("ordColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->ordNumCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->ordColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ordNumCols"); + key.val.string.val = strdup("ordNumCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->ordNumCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("ordOperators"); + key.val.string.val = strdup("ordOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->ordNumCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->ordOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("partColIdx"); + key.val.string.val = strdup("partColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->partNumCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->partColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("partNumCols"); + key.val.string.val = strdup("partNumCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->partNumCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("partOperators"); + key.val.string.val = strdup("partOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->partNumCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->partOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("startOffset"); + key.val.string.val = strdup("startOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->startOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winref"); + key.val.string.val = strdup("winref"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->winref))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *MergeAppend_ser(const MergeAppend *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("collations"); + key.val.string.val = strdup("collations"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collations[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + + key.type = jbvString; + key.val.string.len = strlen("mergeplans"); + key.val.string.val = strdup("mergeplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->mergeplans, state); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("nullsFirst"); + key.val.string.val = strdup("nullsFirst"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvBool; + val.val.boolean = node->nullsFirst[i]; + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("sortColIdx"); + key.val.string.val = strdup("sortColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->sortColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("sortOperators"); + key.val.string.val = strdup("sortOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->sortOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterSeqStmt_ser(const AlterSeqStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("sequence"); + key.val.string.val = strdup("sequence"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->sequence, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BooleanTest_ser(const BooleanTest *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("booltesttype"); + key.val.string.val = strdup("booltesttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->booltesttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RoleSpec_ser(const RoleSpec *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rolename"); + key.val.string.val = strdup("rolename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->rolename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->rolename); + val.val.string.val = (char *)node->rolename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("roletype"); + key.val.string.val = strdup("roletype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->roletype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RecursiveUnion_ser(const RecursiveUnion *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("dupColIdx"); + key.val.string.val = strdup("dupColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->dupColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("dupOperators"); + key.val.string.val = strdup("dupOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->dupOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numGroups"); + key.val.string.val = strdup("numGroups"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; +#ifdef USE_FLOAT8_BYVAL + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int8_numeric, Int64GetDatum(node->numGroups))); +#else + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numGroups))); +#endif + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("wtParam"); + key.val.string.val = strdup("wtParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->wtParam))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *MergeJoin_ser(const MergeJoin *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("join"); + key.val.string.val = strdup("join"); + pushJsonbValue(&state, WJB_KEY, &key); + + Join_ser(&node->join, state, false); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("mergeCollations"); + key.val.string.val = strdup("mergeCollations"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < list_length(node->mergeclauses); i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->mergeCollations[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("mergeFamilies"); + key.val.string.val = strdup("mergeFamilies"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < list_length(node->mergeclauses); i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->mergeFamilies[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("mergeNullsFirst"); + key.val.string.val = strdup("mergeNullsFirst"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < list_length(node->mergeclauses); i++) + { + + val.type = jbvBool; + val.val.boolean = node->mergeNullsFirst[i]; + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("mergeStrategies"); + key.val.string.val = strdup("mergeStrategies"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < list_length(node->mergeclauses); i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->mergeStrategies[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + + key.type = jbvString; + key.val.string.len = strlen("mergeclauses"); + key.val.string.val = strdup("mergeclauses"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->mergeclauses, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterEventTrigStmt_ser(const AlterEventTrigStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tgenabled"); + key.val.string.val = strdup("tgenabled"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->tgenabled))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("trigname"); + key.val.string.val = strdup("trigname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->trigname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->trigname); + val.val.string.val = (char *)node->trigname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CoerceToDomainValue_ser(const CoerceToDomainValue *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("collation"); + key.val.string.val = strdup("collation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeId"); + key.val.string.val = strdup("typeId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->typeId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeMod"); + key.val.string.val = strdup("typeMod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->typeMod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Append_ser(const Append *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("appendplans"); + key.val.string.val = strdup("appendplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->appendplans, state); + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Scan_ser(const Scan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("scanrelid"); + key.val.string.val = strdup("scanrelid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->scanrelid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ModifyTable_ser(const ModifyTable *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arbiterIndexes"); + key.val.string.val = strdup("arbiterIndexes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arbiterIndexes, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("canSetTag"); + key.val.string.val = strdup("canSetTag"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->canSetTag; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("epqParam"); + key.val.string.val = strdup("epqParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->epqParam))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("exclRelRTI"); + key.val.string.val = strdup("exclRelRTI"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->exclRelRTI))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("exclRelTlist"); + key.val.string.val = strdup("exclRelTlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->exclRelTlist, state); + + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("fdwDirectModifyPlans"); + key.val.string.val = strdup("fdwDirectModifyPlans"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->fdwDirectModifyPlans == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->fdwDirectModifyPlans, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("fdwPrivLists"); + key.val.string.val = strdup("fdwPrivLists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdwPrivLists, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nominalRelation"); + key.val.string.val = strdup("nominalRelation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->nominalRelation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("onConflictAction"); + key.val.string.val = strdup("onConflictAction"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->onConflictAction))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("onConflictSet"); + key.val.string.val = strdup("onConflictSet"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflictSet, state); + + + key.type = jbvString; + key.val.string.len = strlen("onConflictWhere"); + key.val.string.val = strdup("onConflictWhere"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflictWhere, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("operation"); + key.val.string.val = strdup("operation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->operation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("plans"); + key.val.string.val = strdup("plans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->plans, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultRelIndex"); + key.val.string.val = strdup("resultRelIndex"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resultRelIndex))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("resultRelations"); + key.val.string.val = strdup("resultRelations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->resultRelations, state); + + + key.type = jbvString; + key.val.string.len = strlen("returningLists"); + key.val.string.val = strdup("returningLists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returningLists, state); + + + key.type = jbvString; + key.val.string.len = strlen("rowMarks"); + key.val.string.val = strdup("rowMarks"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rowMarks, state); + + + key.type = jbvString; + key.val.string.len = strlen("withCheckOptionLists"); + key.val.string.val = strdup("withCheckOptionLists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withCheckOptionLists, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropRoleStmt_ser(const DropRoleStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropOwnedStmt_ser(const DropOwnedStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTableMoveAllStmt_ser(const AlterTableMoveAllStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("new_tablespacename"); + key.val.string.val = strdup("new_tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->new_tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->new_tablespacename); + val.val.string.val = (char *)node->new_tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nowait"); + key.val.string.val = strdup("nowait"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->nowait; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objtype"); + key.val.string.val = strdup("objtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("orig_tablespacename"); + key.val.string.val = strdup("orig_tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->orig_tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->orig_tablespacename); + val.val.string.val = (char *)node->orig_tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *NestLoop_ser(const NestLoop *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("join"); + key.val.string.val = strdup("join"); + pushJsonbValue(&state, WJB_KEY, &key); + + Join_ser(&node->join, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("nestParams"); + key.val.string.val = strdup("nestParams"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->nestParams, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *InlineCodeBlock_ser(const InlineCodeBlock *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("langIsTrusted"); + key.val.string.val = strdup("langIsTrusted"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->langIsTrusted; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("langOid"); + key.val.string.val = strdup("langOid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->langOid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("source_text"); + key.val.string.val = strdup("source_text"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->source_text == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->source_text); + val.val.string.val = (char *)node->source_text; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropTableSpaceStmt_ser(const DropTableSpaceStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tablespacename"); + key.val.string.val = strdup("tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tablespacename); + val.val.string.val = (char *)node->tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateExtensionStmt_ser(const CreateExtensionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("extname"); + key.val.string.val = strdup("extname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->extname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->extname); + val.val.string.val = (char *)node->extname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ViewStmt_ser(const ViewStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("aliases"); + key.val.string.val = strdup("aliases"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aliases, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("view"); + key.val.string.val = strdup("view"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->view, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("withCheckOption"); + key.val.string.val = strdup("withCheckOption"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->withCheckOption))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlternativeSubPlan_ser(const AlternativeSubPlan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("subplans"); + key.val.string.val = strdup("subplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subplans, state); + + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *IntoClause_ser(const IntoClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("colNames"); + key.val.string.val = strdup("colNames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colNames, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("onCommit"); + key.val.string.val = strdup("onCommit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->onCommit))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("rel"); + key.val.string.val = strdup("rel"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rel, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skipData"); + key.val.string.val = strdup("skipData"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->skipData; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tableSpaceName"); + key.val.string.val = strdup("tableSpaceName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tableSpaceName == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tableSpaceName); + val.val.string.val = (char *)node->tableSpaceName; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("viewQuery"); + key.val.string.val = strdup("viewQuery"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->viewQuery, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *GrantStmt_ser(const GrantStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("grant_option"); + key.val.string.val = strdup("grant_option"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->grant_option; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("grantees"); + key.val.string.val = strdup("grantees"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->grantees, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_grant"); + key.val.string.val = strdup("is_grant"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_grant; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("objects"); + key.val.string.val = strdup("objects"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objects, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objtype"); + key.val.string.val = strdup("objtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("privileges"); + key.val.string.val = strdup("privileges"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->privileges, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("targtype"); + key.val.string.val = strdup("targtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->targtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropdbStmt_ser(const DropdbStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("dbname"); + key.val.string.val = strdup("dbname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->dbname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->dbname); + val.val.string.val = (char *)node->dbname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *OnConflictClause_ser(const OnConflictClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("action"); + key.val.string.val = strdup("action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("infer"); + key.val.string.val = strdup("infer"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->infer, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("targetList"); + key.val.string.val = strdup("targetList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targetList, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *IndexOnlyScan_ser(const IndexOnlyScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexid"); + key.val.string.val = strdup("indexid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->indexid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexorderby"); + key.val.string.val = strdup("indexorderby"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexorderby, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexorderdir"); + key.val.string.val = strdup("indexorderdir"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->indexorderdir))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexqual"); + key.val.string.val = strdup("indexqual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexqual, state); + + + key.type = jbvString; + key.val.string.len = strlen("indextlist"); + key.val.string.val = strdup("indextlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indextlist, state); + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_Star_ser(const A_Star *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Constraint_ser(const Constraint *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("access_method"); + key.val.string.val = strdup("access_method"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->access_method == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->access_method); + val.val.string.val = (char *)node->access_method; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("conname"); + key.val.string.val = strdup("conname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->conname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->conname); + val.val.string.val = (char *)node->conname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("contype"); + key.val.string.val = strdup("contype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->contype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cooked_expr"); + key.val.string.val = strdup("cooked_expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->cooked_expr == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->cooked_expr); + val.val.string.val = (char *)node->cooked_expr; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("deferrable"); + key.val.string.val = strdup("deferrable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->deferrable; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("exclusions"); + key.val.string.val = strdup("exclusions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->exclusions, state); + + + key.type = jbvString; + key.val.string.len = strlen("fk_attrs"); + key.val.string.val = strdup("fk_attrs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fk_attrs, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fk_del_action"); + key.val.string.val = strdup("fk_del_action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->fk_del_action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fk_matchtype"); + key.val.string.val = strdup("fk_matchtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->fk_matchtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fk_upd_action"); + key.val.string.val = strdup("fk_upd_action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->fk_upd_action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexname"); + key.val.string.val = strdup("indexname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->indexname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->indexname); + val.val.string.val = (char *)node->indexname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexspace"); + key.val.string.val = strdup("indexspace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->indexspace == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->indexspace); + val.val.string.val = (char *)node->indexspace; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("initdeferred"); + key.val.string.val = strdup("initdeferred"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->initdeferred; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("initially_valid"); + key.val.string.val = strdup("initially_valid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->initially_valid; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_no_inherit"); + key.val.string.val = strdup("is_no_inherit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_no_inherit; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("keys"); + key.val.string.val = strdup("keys"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->keys, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("old_conpfeqop"); + key.val.string.val = strdup("old_conpfeqop"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->old_conpfeqop, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("old_pktable_oid"); + key.val.string.val = strdup("old_pktable_oid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->old_pktable_oid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("pk_attrs"); + key.val.string.val = strdup("pk_attrs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->pk_attrs, state); + + + key.type = jbvString; + key.val.string.len = strlen("pktable"); + key.val.string.val = strdup("pktable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->pktable, state); + + + key.type = jbvString; + key.val.string.len = strlen("raw_expr"); + key.val.string.val = strdup("raw_expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->raw_expr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skip_validation"); + key.val.string.val = strdup("skip_validation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->skip_validation; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("where_clause"); + key.val.string.val = strdup("where_clause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->where_clause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterPolicyStmt_ser(const AlterPolicyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("policy_name"); + key.val.string.val = strdup("policy_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->policy_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->policy_name); + val.val.string.val = (char *)node->policy_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("qual"); + key.val.string.val = strdup("qual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->qual, state); + + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + + key.type = jbvString; + key.val.string.len = strlen("table"); + key.val.string.val = strdup("table"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->table, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("with_check"); + key.val.string.val = strdup("with_check"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->with_check, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *LockingClause_ser(const LockingClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("lockedRels"); + key.val.string.val = strdup("lockedRels"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->lockedRels, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("strength"); + key.val.string.val = strdup("strength"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->strength))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("waitPolicy"); + key.val.string.val = strdup("waitPolicy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->waitPolicy))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FuncCall_ser(const FuncCall *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("agg_distinct"); + key.val.string.val = strdup("agg_distinct"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->agg_distinct; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("agg_filter"); + key.val.string.val = strdup("agg_filter"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->agg_filter, state); + + + key.type = jbvString; + key.val.string.len = strlen("agg_order"); + key.val.string.val = strdup("agg_order"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->agg_order, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("agg_star"); + key.val.string.val = strdup("agg_star"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->agg_star; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("agg_within_group"); + key.val.string.val = strdup("agg_within_group"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->agg_within_group; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("func_variadic"); + key.val.string.val = strdup("func_variadic"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->func_variadic; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("funcname"); + key.val.string.val = strdup("funcname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcname, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("over"); + key.val.string.val = strdup("over"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->over, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateTransformStmt_ser(const CreateTransformStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("fromsql"); + key.val.string.val = strdup("fromsql"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fromsql, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("lang"); + key.val.string.val = strdup("lang"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->lang == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->lang); + val.val.string.val = (char *)node->lang; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("tosql"); + key.val.string.val = strdup("tosql"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tosql, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("type_name"); + key.val.string.val = strdup("type_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->type_name, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *NestLoopParam_ser(const NestLoopParam *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramno"); + key.val.string.val = strdup("paramno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->paramno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("paramval"); + key.val.string.val = strdup("paramval"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->paramval, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *MinMaxExpr_ser(const MinMaxExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("minmaxcollid"); + key.val.string.val = strdup("minmaxcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->minmaxcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("minmaxtype"); + key.val.string.val = strdup("minmaxtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->minmaxtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("op"); + key.val.string.val = strdup("op"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->op))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *UpdateStmt_ser(const UpdateStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("fromClause"); + key.val.string.val = strdup("fromClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fromClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + + key.type = jbvString; + key.val.string.len = strlen("returningList"); + key.val.string.val = strdup("returningList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returningList, state); + + + key.type = jbvString; + key.val.string.len = strlen("targetList"); + key.val.string.val = strdup("targetList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targetList, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("withClause"); + key.val.string.val = strdup("withClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Agg_ser(const Agg *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggsplit"); + key.val.string.val = strdup("aggsplit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->aggsplit))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggstrategy"); + key.val.string.val = strdup("aggstrategy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->aggstrategy))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("chain"); + key.val.string.val = strdup("chain"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->chain, state); + + + key.type = jbvString; + key.val.string.len = strlen("groupingSets"); + key.val.string.val = strdup("groupingSets"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->groupingSets, state); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("grpColIdx"); + key.val.string.val = strdup("grpColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->grpColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("grpOperators"); + key.val.string.val = strdup("grpOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->grpOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numGroups"); + key.val.string.val = strdup("numGroups"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; +#ifdef USE_FLOAT8_BYVAL + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int8_numeric, Int64GetDatum(node->numGroups))); +#else + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numGroups))); +#endif + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SetToDefault_ser(const SetToDefault *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("collation"); + key.val.string.val = strdup("collation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeId"); + key.val.string.val = strdup("typeId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->typeId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeMod"); + key.val.string.val = strdup("typeMod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->typeMod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTSConfigurationStmt_ser(const AlterTSConfigurationStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("cfgname"); + key.val.string.val = strdup("cfgname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cfgname, state); + + + key.type = jbvString; + key.val.string.len = strlen("dicts"); + key.val.string.val = strdup("dicts"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->dicts, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("override"); + key.val.string.val = strdup("override"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->override; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("tokentype"); + key.val.string.val = strdup("tokentype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tokentype, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_Expr_ser(const A_Expr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("lexpr"); + key.val.string.val = strdup("lexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->lexpr, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->name, state); + + + key.type = jbvString; + key.val.string.len = strlen("rexpr"); + key.val.string.val = strdup("rexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rexpr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SubLink_ser(const SubLink *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("operName"); + key.val.string.val = strdup("operName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->operName, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subLinkId"); + key.val.string.val = strdup("subLinkId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->subLinkId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subLinkType"); + key.val.string.val = strdup("subLinkType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->subLinkType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("subselect"); + key.val.string.val = strdup("subselect"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subselect, state); + + + key.type = jbvString; + key.val.string.len = strlen("testexpr"); + key.val.string.val = strdup("testexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->testexpr, state); + + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterOperatorStmt_ser(const AlterOperatorStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("operargs"); + key.val.string.val = strdup("operargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->operargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("opername"); + key.val.string.val = strdup("opername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opername, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *IndexStmt_ser(const IndexStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("accessMethod"); + key.val.string.val = strdup("accessMethod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->accessMethod == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->accessMethod); + val.val.string.val = (char *)node->accessMethod; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("concurrent"); + key.val.string.val = strdup("concurrent"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->concurrent; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("deferrable"); + key.val.string.val = strdup("deferrable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->deferrable; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("excludeOpNames"); + key.val.string.val = strdup("excludeOpNames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->excludeOpNames, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("idxcomment"); + key.val.string.val = strdup("idxcomment"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->idxcomment == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->idxcomment); + val.val.string.val = (char *)node->idxcomment; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("idxname"); + key.val.string.val = strdup("idxname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->idxname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->idxname); + val.val.string.val = (char *)node->idxname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexOid"); + key.val.string.val = strdup("indexOid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->indexOid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexParams"); + key.val.string.val = strdup("indexParams"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexParams, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("initdeferred"); + key.val.string.val = strdup("initdeferred"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->initdeferred; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isconstraint"); + key.val.string.val = strdup("isconstraint"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isconstraint; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("oldNode"); + key.val.string.val = strdup("oldNode"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->oldNode))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("primary"); + key.val.string.val = strdup("primary"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->primary; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tableSpace"); + key.val.string.val = strdup("tableSpace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tableSpace == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tableSpace); + val.val.string.val = (char *)node->tableSpace; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("transformed"); + key.val.string.val = strdup("transformed"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->transformed; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("unique"); + key.val.string.val = strdup("unique"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->unique; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterDomainStmt_ser(const AlterDomainStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("def"); + key.val.string.val = strdup("def"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->def, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subtype"); + key.val.string.val = strdup("subtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->subtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TidScan_ser(const TidScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("tidquals"); + key.val.string.val = strdup("tidquals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tidquals, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *PlanRowMark_ser(const PlanRowMark *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("allMarkTypes"); + key.val.string.val = strdup("allMarkTypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->allMarkTypes))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isParent"); + key.val.string.val = strdup("isParent"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isParent; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("markType"); + key.val.string.val = strdup("markType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->markType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("prti"); + key.val.string.val = strdup("prti"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->prti))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rowmarkId"); + key.val.string.val = strdup("rowmarkId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->rowmarkId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rti"); + key.val.string.val = strdup("rti"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->rti))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("strength"); + key.val.string.val = strdup("strength"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->strength))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("waitPolicy"); + key.val.string.val = strdup("waitPolicy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->waitPolicy))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *PrepareStmt_ser(const PrepareStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("argtypes"); + key.val.string.val = strdup("argtypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->argtypes, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterDatabaseStmt_ser(const AlterDatabaseStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("dbname"); + key.val.string.val = strdup("dbname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->dbname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->dbname); + val.val.string.val = (char *)node->dbname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SelectStmt_ser(const SelectStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("all"); + key.val.string.val = strdup("all"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->all; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("distinctClause"); + key.val.string.val = strdup("distinctClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->distinctClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("fromClause"); + key.val.string.val = strdup("fromClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fromClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("groupClause"); + key.val.string.val = strdup("groupClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->groupClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("havingClause"); + key.val.string.val = strdup("havingClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->havingClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("intoClause"); + key.val.string.val = strdup("intoClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->intoClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("larg"); + key.val.string.val = strdup("larg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->larg, state); + + + key.type = jbvString; + key.val.string.len = strlen("limitCount"); + key.val.string.val = strdup("limitCount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitCount, state); + + + key.type = jbvString; + key.val.string.len = strlen("limitOffset"); + key.val.string.val = strdup("limitOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitOffset, state); + + + key.type = jbvString; + key.val.string.len = strlen("lockingClause"); + key.val.string.val = strdup("lockingClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->lockingClause, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("op"); + key.val.string.val = strdup("op"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->op))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("rarg"); + key.val.string.val = strdup("rarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rarg, state); + + + key.type = jbvString; + key.val.string.len = strlen("sortClause"); + key.val.string.val = strdup("sortClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->sortClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("targetList"); + key.val.string.val = strdup("targetList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targetList, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("valuesLists"); + key.val.string.val = strdup("valuesLists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->valuesLists, state); + + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("windowClause"); + key.val.string.val = strdup("windowClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->windowClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("withClause"); + key.val.string.val = strdup("withClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FromExpr_ser(const FromExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("fromlist"); + key.val.string.val = strdup("fromlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fromlist, state); + + + key.type = jbvString; + key.val.string.len = strlen("quals"); + key.val.string.val = strdup("quals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->quals, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Param_ser(const Param *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramcollid"); + key.val.string.val = strdup("paramcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->paramcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramid"); + key.val.string.val = strdup("paramid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->paramid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramkind"); + key.val.string.val = strdup("paramkind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->paramkind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramtype"); + key.val.string.val = strdup("paramtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->paramtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("paramtypmod"); + key.val.string.val = strdup("paramtypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->paramtypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTSDictionaryStmt_ser(const AlterTSDictionaryStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("dictname"); + key.val.string.val = strdup("dictname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->dictname, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ReassignOwnedStmt_ser(const ReassignOwnedStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("newrole"); + key.val.string.val = strdup("newrole"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->newrole, state); + + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *MultiAssignRef_ser(const MultiAssignRef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("colno"); + key.val.string.val = strdup("colno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->colno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ncolumns"); + key.val.string.val = strdup("ncolumns"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->ncolumns))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("source"); + key.val.string.val = strdup("source"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->source, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *LoadStmt_ser(const LoadStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("filename"); + key.val.string.val = strdup("filename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->filename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->filename); + val.val.string.val = (char *)node->filename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateStmt_ser(const CreateStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("constraints"); + key.val.string.val = strdup("constraints"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constraints, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("inhRelations"); + key.val.string.val = strdup("inhRelations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->inhRelations, state); + + + key.type = jbvString; + key.val.string.len = strlen("ofTypename"); + key.val.string.val = strdup("ofTypename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ofTypename, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("oncommit"); + key.val.string.val = strdup("oncommit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->oncommit))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + + key.type = jbvString; + key.val.string.len = strlen("tableElts"); + key.val.string.val = strdup("tableElts"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tableElts, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tablespacename"); + key.val.string.val = strdup("tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tablespacename); + val.val.string.val = (char *)node->tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RefreshMatViewStmt_ser(const RefreshMatViewStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("concurrent"); + key.val.string.val = strdup("concurrent"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->concurrent; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skipData"); + key.val.string.val = strdup("skipData"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->skipData; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DeleteStmt_ser(const DeleteStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + + key.type = jbvString; + key.val.string.len = strlen("returningList"); + key.val.string.val = strdup("returningList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returningList, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("usingClause"); + key.val.string.val = strdup("usingClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->usingClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("withClause"); + key.val.string.val = strdup("withClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SubqueryScan_ser(const SubqueryScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("subplan"); + key.val.string.val = strdup("subplan"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subplan, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateCastStmt_ser(const CreateCastStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("context"); + key.val.string.val = strdup("context"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->context))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("func"); + key.val.string.val = strdup("func"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->func, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inout"); + key.val.string.val = strdup("inout"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->inout; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("sourcetype"); + key.val.string.val = strdup("sourcetype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->sourcetype, state); + + + key.type = jbvString; + key.val.string.len = strlen("targettype"); + key.val.string.val = strdup("targettype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targettype, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ConstraintsSetStmt_ser(const ConstraintsSetStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("constraints"); + key.val.string.val = strdup("constraints"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constraints, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("deferred"); + key.val.string.val = strdup("deferred"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->deferred; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WindowClause_ser(const WindowClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("copiedOrder"); + key.val.string.val = strdup("copiedOrder"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->copiedOrder; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("endOffset"); + key.val.string.val = strdup("endOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->endOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("frameOptions"); + key.val.string.val = strdup("frameOptions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->frameOptions))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("orderClause"); + key.val.string.val = strdup("orderClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->orderClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("partitionClause"); + key.val.string.val = strdup("partitionClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->partitionClause, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("refname"); + key.val.string.val = strdup("refname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->refname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->refname); + val.val.string.val = (char *)node->refname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("startOffset"); + key.val.string.val = strdup("startOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->startOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("winref"); + key.val.string.val = strdup("winref"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->winref))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ArrayExpr_ser(const ArrayExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("array_collid"); + key.val.string.val = strdup("array_collid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->array_collid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("array_typeid"); + key.val.string.val = strdup("array_typeid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->array_typeid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("element_typeid"); + key.val.string.val = strdup("element_typeid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->element_typeid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("elements"); + key.val.string.val = strdup("elements"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->elements, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("multidims"); + key.val.string.val = strdup("multidims"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->multidims; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *InferClause_ser(const InferClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("conname"); + key.val.string.val = strdup("conname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->conname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->conname); + val.val.string.val = (char *)node->conname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("indexElems"); + key.val.string.val = strdup("indexElems"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexElems, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BitmapHeapScan_ser(const BitmapHeapScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("bitmapqualorig"); + key.val.string.val = strdup("bitmapqualorig"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->bitmapqualorig, state); + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CaseTestExpr_ser(const CaseTestExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("collation"); + key.val.string.val = strdup("collation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeId"); + key.val.string.val = strdup("typeId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->typeId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeMod"); + key.val.string.val = strdup("typeMod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->typeMod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *VariableShowStmt_ser(const VariableShowStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Expr_ser(const Expr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateAmStmt_ser(const CreateAmStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("amname"); + key.val.string.val = strdup("amname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->amname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->amname); + val.val.string.val = (char *)node->amname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("amtype"); + key.val.string.val = strdup("amtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->amtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("handler_name"); + key.val.string.val = strdup("handler_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->handler_name, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FetchStmt_ser(const FetchStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("direction"); + key.val.string.val = strdup("direction"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->direction))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("howMany"); + key.val.string.val = strdup("howMany"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; +#ifdef USE_FLOAT8_BYVAL + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int8_numeric, Int64GetDatum(node->howMany))); +#else + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->howMany))); +#endif + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ismove"); + key.val.string.val = strdup("ismove"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->ismove; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("portalname"); + key.val.string.val = strdup("portalname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->portalname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->portalname); + val.val.string.val = (char *)node->portalname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Sort_ser(const Sort *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("collations"); + key.val.string.val = strdup("collations"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collations[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("nullsFirst"); + key.val.string.val = strdup("nullsFirst"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvBool; + val.val.boolean = node->nullsFirst[i]; + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("sortColIdx"); + key.val.string.val = strdup("sortColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->sortColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("sortOperators"); + key.val.string.val = strdup("sortOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->sortOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Const_ser(const Const *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("constbyval"); + key.val.string.val = strdup("constbyval"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->constbyval; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("constcollid"); + key.val.string.val = strdup("constcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->constcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("constisnull"); + key.val.string.val = strdup("constisnull"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->constisnull; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("constlen"); + key.val.string.val = strdup("constlen"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->constlen))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("consttype"); + key.val.string.val = strdup("consttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->consttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("consttypmod"); + key.val.string.val = strdup("consttypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->consttypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("constvalue"); + key.val.string.val = strdup("constvalue"); + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->constisnull) + { + JsonbValue val; + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + datum_ser(state, node->constvalue, node->constlen, node->constbyval); + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CoerceToDomain_ser(const CoerceToDomain *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("coercionformat"); + key.val.string.val = strdup("coercionformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->coercionformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultcollid"); + key.val.string.val = strdup("resultcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resultcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttypmod"); + key.val.string.val = strdup("resulttypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resulttypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ExplainStmt_ser(const ExplainStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TransactionStmt_ser(const TransactionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("gid"); + key.val.string.val = strdup("gid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->gid == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->gid); + val.val.string.val = (char *)node->gid; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BoolExpr_ser(const BoolExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("boolop"); + key.val.string.val = strdup("boolop"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->boolop))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *GrantRoleStmt_ser(const GrantRoleStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("admin_opt"); + key.val.string.val = strdup("admin_opt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->admin_opt; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("granted_roles"); + key.val.string.val = strdup("granted_roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->granted_roles, state); + + + key.type = jbvString; + key.val.string.len = strlen("grantee_roles"); + key.val.string.val = strdup("grantee_roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->grantee_roles, state); + + + key.type = jbvString; + key.val.string.len = strlen("grantor"); + key.val.string.val = strdup("grantor"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->grantor, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_grant"); + key.val.string.val = strdup("is_grant"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_grant; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ParamRef_ser(const ParamRef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("number"); + key.val.string.val = strdup("number"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->number))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *HashJoin_ser(const HashJoin *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("hashclauses"); + key.val.string.val = strdup("hashclauses"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->hashclauses, state); + + + + key.type = jbvString; + key.val.string.len = strlen("join"); + key.val.string.val = strdup("join"); + pushJsonbValue(&state, WJB_KEY, &key); + + Join_ser(&node->join, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ClosePortalStmt_ser(const ClosePortalStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("portalname"); + key.val.string.val = strdup("portalname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->portalname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->portalname); + val.val.string.val = (char *)node->portalname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Plan_ser(const Plan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("allParam"); + key.val.string.val = strdup("allParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->allParam == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->allParam, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("extParam"); + key.val.string.val = strdup("extParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->extParam == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->extParam, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("initPlan"); + key.val.string.val = strdup("initPlan"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->initPlan, state); + + + key.type = jbvString; + key.val.string.len = strlen("lefttree"); + key.val.string.val = strdup("lefttree"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->lefttree, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("parallel_aware"); + key.val.string.val = strdup("parallel_aware"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->parallel_aware; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plan_node_id"); + key.val.string.val = strdup("plan_node_id"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->plan_node_id))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plan_rows"); + key.val.string.val = strdup("plan_rows"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(node->plan_rows))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plan_width"); + key.val.string.val = strdup("plan_width"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->plan_width))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("qual"); + key.val.string.val = strdup("qual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->qual, state); + + + key.type = jbvString; + key.val.string.len = strlen("righttree"); + key.val.string.val = strdup("righttree"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->righttree, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("startup_cost"); + key.val.string.val = strdup("startup_cost"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(node->startup_cost))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("targetlist"); + key.val.string.val = strdup("targetlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->targetlist, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("total_cost"); + key.val.string.val = strdup("total_cost"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(node->total_cost))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CopyStmt_ser(const CopyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("attlist"); + key.val.string.val = strdup("attlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->attlist, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("filename"); + key.val.string.val = strdup("filename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->filename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->filename); + val.val.string.val = (char *)node->filename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_from"); + key.val.string.val = strdup("is_from"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_from; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_program"); + key.val.string.val = strdup("is_program"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_program; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateForeignServerStmt_ser(const CreateForeignServerStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fdwname"); + key.val.string.val = strdup("fdwname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->fdwname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->fdwname); + val.val.string.val = (char *)node->fdwname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servertype"); + key.val.string.val = strdup("servertype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servertype == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servertype); + val.val.string.val = (char *)node->servertype; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("version"); + key.val.string.val = strdup("version"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->version == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->version); + val.val.string.val = (char *)node->version; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SetOp_ser(const SetOp *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cmd"); + key.val.string.val = strdup("cmd"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->cmd))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("dupColIdx"); + key.val.string.val = strdup("dupColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->dupColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("dupOperators"); + key.val.string.val = strdup("dupOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->dupOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("firstFlag"); + key.val.string.val = strdup("firstFlag"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->firstFlag))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("flagColIdx"); + key.val.string.val = strdup("flagColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->flagColIdx))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numGroups"); + key.val.string.val = strdup("numGroups"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; +#ifdef USE_FLOAT8_BYVAL + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int8_numeric, Int64GetDatum(node->numGroups))); +#else + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numGroups))); +#endif + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("strategy"); + key.val.string.val = strdup("strategy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->strategy))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CollateExpr_ser(const CollateExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("collOid"); + key.val.string.val = strdup("collOid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collOid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_ArrayExpr_ser(const A_ArrayExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("elements"); + key.val.string.val = strdup("elements"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->elements, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *LockStmt_ser(const LockStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("mode"); + key.val.string.val = strdup("mode"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->mode))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nowait"); + key.val.string.val = strdup("nowait"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->nowait; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relations"); + key.val.string.val = strdup("relations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relations, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateTableSpaceStmt_ser(const CreateTableSpaceStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->location == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->location); + val.val.string.val = (char *)node->location; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("owner"); + key.val.string.val = strdup("owner"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->owner, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tablespacename"); + key.val.string.val = strdup("tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tablespacename); + val.val.string.val = (char *)node->tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TargetEntry_ser(const TargetEntry *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("expr"); + key.val.string.val = strdup("expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->expr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resjunk"); + key.val.string.val = strdup("resjunk"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->resjunk; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resname"); + key.val.string.val = strdup("resname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->resname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->resname); + val.val.string.val = (char *)node->resname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resno"); + key.val.string.val = strdup("resno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->resno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resorigcol"); + key.val.string.val = strdup("resorigcol"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->resorigcol))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resorigtbl"); + key.val.string.val = strdup("resorigtbl"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resorigtbl))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ressortgroupref"); + key.val.string.val = strdup("ressortgroupref"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->ressortgroupref))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *XmlSerialize_ser(const XmlSerialize *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("expr"); + key.val.string.val = strdup("expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->expr, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("xmloption"); + key.val.string.val = strdup("xmloption"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->xmloption))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TypeName_ser(const TypeName *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arrayBounds"); + key.val.string.val = strdup("arrayBounds"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arrayBounds, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("names"); + key.val.string.val = strdup("names"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->names, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("pct_type"); + key.val.string.val = strdup("pct_type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->pct_type; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("setof"); + key.val.string.val = strdup("setof"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->setof; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typeOid"); + key.val.string.val = strdup("typeOid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->typeOid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typemod"); + key.val.string.val = strdup("typemod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->typemod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typmods"); + key.val.string.val = strdup("typmods"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typmods, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *VacuumStmt_ser(const VacuumStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->options))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("va_cols"); + key.val.string.val = strdup("va_cols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->va_cols, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SampleScan_ser(const SampleScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("tablesample"); + key.val.string.val = strdup("tablesample"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tablesample, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeVar_ser(const RangeVar *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("alias"); + key.val.string.val = strdup("alias"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->alias, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("catalogname"); + key.val.string.val = strdup("catalogname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->catalogname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->catalogname); + val.val.string.val = (char *)node->catalogname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inhOpt"); + key.val.string.val = strdup("inhOpt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->inhOpt))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relname"); + key.val.string.val = strdup("relname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->relname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->relname); + val.val.string.val = (char *)node->relname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relpersistence"); + key.val.string.val = strdup("relpersistence"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relpersistence))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("schemaname"); + key.val.string.val = strdup("schemaname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->schemaname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->schemaname); + val.val.string.val = (char *)node->schemaname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_Indices_ser(const A_Indices *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_slice"); + key.val.string.val = strdup("is_slice"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_slice; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("lidx"); + key.val.string.val = strdup("lidx"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->lidx, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("uidx"); + key.val.string.val = strdup("uidx"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->uidx, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateFdwStmt_ser(const CreateFdwStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fdwname"); + key.val.string.val = strdup("fdwname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->fdwname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->fdwname); + val.val.string.val = (char *)node->fdwname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("func_options"); + key.val.string.val = strdup("func_options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->func_options, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_Indirection_ser(const A_Indirection *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + + key.type = jbvString; + key.val.string.len = strlen("indirection"); + key.val.string.val = strdup("indirection"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indirection, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CurrentOfExpr_ser(const CurrentOfExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cursor_name"); + key.val.string.val = strdup("cursor_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->cursor_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->cursor_name); + val.val.string.val = (char *)node->cursor_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cursor_param"); + key.val.string.val = strdup("cursor_param"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->cursor_param))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cvarno"); + key.val.string.val = strdup("cvarno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->cvarno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TableLikeClause_ser(const TableLikeClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->options))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateForeignTableStmt_ser(const CreateForeignTableStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("base"); + key.val.string.val = strdup("base"); + pushJsonbValue(&state, WJB_KEY, &key); + + CreateStmt_ser(&node->base, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeTblEntry_ser(const RangeTblEntry *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("alias"); + key.val.string.val = strdup("alias"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->alias, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("checkAsUser"); + key.val.string.val = strdup("checkAsUser"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->checkAsUser))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("ctecolcollations"); + key.val.string.val = strdup("ctecolcollations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecolcollations, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecoltypes"); + key.val.string.val = strdup("ctecoltypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecoltypes, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecoltypmods"); + key.val.string.val = strdup("ctecoltypmods"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecoltypmods, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ctelevelsup"); + key.val.string.val = strdup("ctelevelsup"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->ctelevelsup))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ctename"); + key.val.string.val = strdup("ctename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->ctename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->ctename); + val.val.string.val = (char *)node->ctename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("eref"); + key.val.string.val = strdup("eref"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->eref, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcordinality"); + key.val.string.val = strdup("funcordinality"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->funcordinality; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("functions"); + key.val.string.val = strdup("functions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->functions, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inFromCl"); + key.val.string.val = strdup("inFromCl"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->inFromCl; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inh"); + key.val.string.val = strdup("inh"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->inh; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("insertedCols"); + key.val.string.val = strdup("insertedCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->insertedCols == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->insertedCols, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("joinaliasvars"); + key.val.string.val = strdup("joinaliasvars"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->joinaliasvars, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("jointype"); + key.val.string.val = strdup("jointype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->jointype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("lateral"); + key.val.string.val = strdup("lateral"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->lateral; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relid"); + key.val.string.val = strdup("relid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->relid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relkind"); + key.val.string.val = strdup("relkind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relkind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("requiredPerms"); + key.val.string.val = strdup("requiredPerms"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->requiredPerms))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rtekind"); + key.val.string.val = strdup("rtekind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->rtekind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("securityQuals"); + key.val.string.val = strdup("securityQuals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->securityQuals, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("security_barrier"); + key.val.string.val = strdup("security_barrier"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->security_barrier; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("selectedCols"); + key.val.string.val = strdup("selectedCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->selectedCols == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->selectedCols, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("self_reference"); + key.val.string.val = strdup("self_reference"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->self_reference; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("subquery"); + key.val.string.val = strdup("subquery"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subquery, state); + + + key.type = jbvString; + key.val.string.len = strlen("tablesample"); + key.val.string.val = strdup("tablesample"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->tablesample, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("updatedCols"); + key.val.string.val = strdup("updatedCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->updatedCols == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->updatedCols, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("values_collations"); + key.val.string.val = strdup("values_collations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->values_collations, state); + + + key.type = jbvString; + key.val.string.len = strlen("values_lists"); + key.val.string.val = strdup("values_lists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->values_lists, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FunctionParameter_ser(const FunctionParameter *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("argType"); + key.val.string.val = strdup("argType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->argType, state); + + + key.type = jbvString; + key.val.string.len = strlen("defexpr"); + key.val.string.val = strdup("defexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->defexpr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("mode"); + key.val.string.val = strdup("mode"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->mode))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *OpExpr_ser(const OpExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opcollid"); + key.val.string.val = strdup("opcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opfuncid"); + key.val.string.val = strdup("opfuncid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opfuncid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opno"); + key.val.string.val = strdup("opno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opresulttype"); + key.val.string.val = strdup("opresulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->opresulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("opretset"); + key.val.string.val = strdup("opretset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->opretset; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterFdwStmt_ser(const AlterFdwStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fdwname"); + key.val.string.val = strdup("fdwname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->fdwname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->fdwname); + val.val.string.val = (char *)node->fdwname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("func_options"); + key.val.string.val = strdup("func_options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->func_options, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *BitmapAnd_ser(const BitmapAnd *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("bitmapplans"); + key.val.string.val = strdup("bitmapplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->bitmapplans, state); + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateUserMappingStmt_ser(const CreateUserMappingStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("user"); + key.val.string.val = strdup("user"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->user, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreatePolicyStmt_ser(const CreatePolicyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cmd_name"); + key.val.string.val = strdup("cmd_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->cmd_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->cmd_name); + val.val.string.val = (char *)node->cmd_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("policy_name"); + key.val.string.val = strdup("policy_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->policy_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->policy_name); + val.val.string.val = (char *)node->policy_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("qual"); + key.val.string.val = strdup("qual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->qual, state); + + + key.type = jbvString; + key.val.string.len = strlen("roles"); + key.val.string.val = strdup("roles"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->roles, state); + + + key.type = jbvString; + key.val.string.len = strlen("table"); + key.val.string.val = strdup("table"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->table, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("with_check"); + key.val.string.val = strdup("with_check"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->with_check, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterUserMappingStmt_ser(const AlterUserMappingStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("user"); + key.val.string.val = strdup("user"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->user, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *InferenceElem_ser(const InferenceElem *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("expr"); + key.val.string.val = strdup("expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->expr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("infercollid"); + key.val.string.val = strdup("infercollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->infercollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inferopclass"); + key.val.string.val = strdup("inferopclass"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inferopclass))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ExecuteStmt_ser(const ExecuteStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("params"); + key.val.string.val = strdup("params"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->params, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *XmlExpr_ser(const XmlExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg_names"); + key.val.string.val = strdup("arg_names"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg_names, state); + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("named_args"); + key.val.string.val = strdup("named_args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->named_args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("op"); + key.val.string.val = strdup("op"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->op))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("typmod"); + key.val.string.val = strdup("typmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->typmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("xmloption"); + key.val.string.val = strdup("xmloption"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->xmloption))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SecLabelStmt_ser(const SecLabelStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("label"); + key.val.string.val = strdup("label"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->label == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->label); + val.val.string.val = (char *)node->label; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("objargs"); + key.val.string.val = strdup("objargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("objname"); + key.val.string.val = strdup("objname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objtype"); + key.val.string.val = strdup("objtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("provider"); + key.val.string.val = strdup("provider"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->provider == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->provider); + val.val.string.val = (char *)node->provider; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreatePLangStmt_ser(const CreatePLangStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("plhandler"); + key.val.string.val = strdup("plhandler"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->plhandler, state); + + + key.type = jbvString; + key.val.string.len = strlen("plinline"); + key.val.string.val = strdup("plinline"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->plinline, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plname"); + key.val.string.val = strdup("plname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->plname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->plname); + val.val.string.val = (char *)node->plname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("pltrusted"); + key.val.string.val = strdup("pltrusted"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->pltrusted; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("plvalidator"); + key.val.string.val = strdup("plvalidator"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->plvalidator, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DeclareCursorStmt_ser(const DeclareCursorStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->options))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("portalname"); + key.val.string.val = strdup("portalname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->portalname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->portalname); + val.val.string.val = (char *)node->portalname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterExtensionContentsStmt_ser(const AlterExtensionContentsStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("action"); + key.val.string.val = strdup("action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("extname"); + key.val.string.val = strdup("extname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->extname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->extname); + val.val.string.val = (char *)node->extname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("objargs"); + key.val.string.val = strdup("objargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("objname"); + key.val.string.val = strdup("objname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objtype"); + key.val.string.val = strdup("objtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateOpClassItem_ser(const CreateOpClassItem *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("class_args"); + key.val.string.val = strdup("class_args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->class_args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("itemtype"); + key.val.string.val = strdup("itemtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->itemtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->name, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("number"); + key.val.string.val = strdup("number"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->number))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("order_family"); + key.val.string.val = strdup("order_family"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->order_family, state); + + + key.type = jbvString; + key.val.string.len = strlen("storedtype"); + key.val.string.val = strdup("storedtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->storedtype, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RowMarkClause_ser(const RowMarkClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("pushedDown"); + key.val.string.val = strdup("pushedDown"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->pushedDown; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rti"); + key.val.string.val = strdup("rti"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->rti))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("strength"); + key.val.string.val = strdup("strength"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->strength))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("waitPolicy"); + key.val.string.val = strdup("waitPolicy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->waitPolicy))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RowExpr_ser(const RowExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("colnames"); + key.val.string.val = strdup("colnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colnames, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("row_format"); + key.val.string.val = strdup("row_format"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->row_format))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("row_typeid"); + key.val.string.val = strdup("row_typeid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->row_typeid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RenameStmt_ser(const RenameStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("newname"); + key.val.string.val = strdup("newname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->newname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->newname); + val.val.string.val = (char *)node->newname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("objarg"); + key.val.string.val = strdup("objarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objarg, state); + + + key.type = jbvString; + key.val.string.len = strlen("object"); + key.val.string.val = strdup("object"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->object, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relationType"); + key.val.string.val = strdup("relationType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relationType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("renameType"); + key.val.string.val = strdup("renameType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->renameType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subname"); + key.val.string.val = strdup("subname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->subname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->subname); + val.val.string.val = (char *)node->subname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterExtensionStmt_ser(const AlterExtensionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("extname"); + key.val.string.val = strdup("extname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->extname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->extname); + val.val.string.val = (char *)node->extname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Unique_ser(const Unique *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("uniqColIdx"); + key.val.string.val = strdup("uniqColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->uniqColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("uniqOperators"); + key.val.string.val = strdup("uniqOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->uniqOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FunctionScan_ser(const FunctionScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcordinality"); + key.val.string.val = strdup("funcordinality"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->funcordinality; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("functions"); + key.val.string.val = strdup("functions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->functions, state); + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *LockRows_ser(const LockRows *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("epqParam"); + key.val.string.val = strdup("epqParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->epqParam))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("rowMarks"); + key.val.string.val = strdup("rowMarks"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rowMarks, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *InsertStmt_ser(const InsertStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("cols"); + key.val.string.val = strdup("cols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cols, state); + + + key.type = jbvString; + key.val.string.len = strlen("onConflictClause"); + key.val.string.val = strdup("onConflictClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->onConflictClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + + key.type = jbvString; + key.val.string.len = strlen("returningList"); + key.val.string.val = strdup("returningList"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returningList, state); + + + key.type = jbvString; + key.val.string.len = strlen("selectStmt"); + key.val.string.val = strdup("selectStmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->selectStmt, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("withClause"); + key.val.string.val = strdup("withClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterRoleSetStmt_ser(const AlterRoleSetStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("database"); + key.val.string.val = strdup("database"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->database == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->database); + val.val.string.val = (char *)node->database; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("role"); + key.val.string.val = strdup("role"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->role, state); + + + key.type = jbvString; + key.val.string.len = strlen("setstmt"); + key.val.string.val = strdup("setstmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->setstmt, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CollateClause_ser(const CollateClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + + key.type = jbvString; + key.val.string.len = strlen("collname"); + key.val.string.val = strdup("collname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->collname, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTableSpaceOptionsStmt_ser(const AlterTableSpaceOptionsStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isReset"); + key.val.string.val = strdup("isReset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isReset; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tablespacename"); + key.val.string.val = strdup("tablespacename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->tablespacename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->tablespacename); + val.val.string.val = (char *)node->tablespacename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DefElem_ser(const DefElem *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("defaction"); + key.val.string.val = strdup("defaction"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->defaction))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("defname"); + key.val.string.val = strdup("defname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->defname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->defname); + val.val.string.val = (char *)node->defname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("defnamespace"); + key.val.string.val = strdup("defnamespace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->defnamespace == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->defnamespace); + val.val.string.val = (char *)node->defnamespace; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DiscardStmt_ser(const DiscardStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("target"); + key.val.string.val = strdup("target"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->target))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RuleStmt_ser(const RuleStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("actions"); + key.val.string.val = strdup("actions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->actions, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("event"); + key.val.string.val = strdup("event"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->event))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("instead"); + key.val.string.val = strdup("instead"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->instead; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rulename"); + key.val.string.val = strdup("rulename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->rulename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->rulename); + val.val.string.val = (char *)node->rulename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whereClause"); + key.val.string.val = strdup("whereClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whereClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ArrayCoerceExpr_ser(const ArrayCoerceExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("coerceformat"); + key.val.string.val = strdup("coerceformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->coerceformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("elemfuncid"); + key.val.string.val = strdup("elemfuncid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->elemfuncid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isExplicit"); + key.val.string.val = strdup("isExplicit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isExplicit; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultcollid"); + key.val.string.val = strdup("resultcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resultcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttypmod"); + key.val.string.val = strdup("resulttypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resulttypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Limit_ser(const Limit *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("limitCount"); + key.val.string.val = strdup("limitCount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitCount, state); + + + key.type = jbvString; + key.val.string.len = strlen("limitOffset"); + key.val.string.val = strdup("limitOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->limitOffset, state); + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Material_ser(const Material *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AccessPriv_ser(const AccessPriv *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("cols"); + key.val.string.val = strdup("cols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cols, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("priv_name"); + key.val.string.val = strdup("priv_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->priv_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->priv_name); + val.val.string.val = (char *)node->priv_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ColumnRef_ser(const ColumnRef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("fields"); + key.val.string.val = strdup("fields"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fields, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterOpFamilyStmt_ser(const AlterOpFamilyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("amname"); + key.val.string.val = strdup("amname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->amname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->amname); + val.val.string.val = (char *)node->amname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isDrop"); + key.val.string.val = strdup("isDrop"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isDrop; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("items"); + key.val.string.val = strdup("items"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->items, state); + + + key.type = jbvString; + key.val.string.len = strlen("opfamilyname"); + key.val.string.val = strdup("opfamilyname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opfamilyname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Aggref_ser(const Aggref *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("aggargtypes"); + key.val.string.val = strdup("aggargtypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggargtypes, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggcollid"); + key.val.string.val = strdup("aggcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->aggcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("aggdirectargs"); + key.val.string.val = strdup("aggdirectargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggdirectargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("aggdistinct"); + key.val.string.val = strdup("aggdistinct"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggdistinct, state); + + + key.type = jbvString; + key.val.string.len = strlen("aggfilter"); + key.val.string.val = strdup("aggfilter"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggfilter, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggfnoid"); + key.val.string.val = strdup("aggfnoid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->aggfnoid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggkind"); + key.val.string.val = strdup("aggkind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->aggkind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("agglevelsup"); + key.val.string.val = strdup("agglevelsup"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->agglevelsup))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("aggorder"); + key.val.string.val = strdup("aggorder"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aggorder, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggsplit"); + key.val.string.val = strdup("aggsplit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->aggsplit))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggstar"); + key.val.string.val = strdup("aggstar"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->aggstar; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggtranstype"); + key.val.string.val = strdup("aggtranstype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->aggtranstype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggtype"); + key.val.string.val = strdup("aggtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->aggtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aggvariadic"); + key.val.string.val = strdup("aggvariadic"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->aggvariadic; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateSchemaStmt_ser(const CreateSchemaStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("authrole"); + key.val.string.val = strdup("authrole"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->authrole, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("schemaElts"); + key.val.string.val = strdup("schemaElts"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->schemaElts, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("schemaname"); + key.val.string.val = strdup("schemaname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->schemaname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->schemaname); + val.val.string.val = (char *)node->schemaname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateFunctionStmt_ser(const CreateFunctionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("funcname"); + key.val.string.val = strdup("funcname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcname, state); + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("parameters"); + key.val.string.val = strdup("parameters"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->parameters, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("replace"); + key.val.string.val = strdup("replace"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->replace; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("returnType"); + key.val.string.val = strdup("returnType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->returnType, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("withClause"); + key.val.string.val = strdup("withClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->withClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ClusterStmt_ser(const ClusterStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexname"); + key.val.string.val = strdup("indexname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->indexname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->indexname); + val.val.string.val = (char *)node->indexname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("verbose"); + key.val.string.val = strdup("verbose"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->verbose; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *PlannedStmt_ser(const PlannedStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("canSetTag"); + key.val.string.val = strdup("canSetTag"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->canSetTag; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("commandType"); + key.val.string.val = strdup("commandType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->commandType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("dependsOnRole"); + key.val.string.val = strdup("dependsOnRole"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->dependsOnRole; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasModifyingCTE"); + key.val.string.val = strdup("hasModifyingCTE"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasModifyingCTE; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hasReturning"); + key.val.string.val = strdup("hasReturning"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hasReturning; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("invalItems"); + key.val.string.val = strdup("invalItems"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->invalItems, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nParamExec"); + key.val.string.val = strdup("nParamExec"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->nParamExec))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("parallelModeNeeded"); + key.val.string.val = strdup("parallelModeNeeded"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->parallelModeNeeded; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("planTree"); + key.val.string.val = strdup("planTree"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->planTree, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("queryId"); + key.val.string.val = strdup("queryId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->queryId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relationOids"); + key.val.string.val = strdup("relationOids"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relationOids, state); + + + key.type = jbvString; + key.val.string.len = strlen("resultRelations"); + key.val.string.val = strdup("resultRelations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->resultRelations, state); + + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("rewindPlanIDs"); + key.val.string.val = strdup("rewindPlanIDs"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->rewindPlanIDs == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->rewindPlanIDs, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("rowMarks"); + key.val.string.val = strdup("rowMarks"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rowMarks, state); + + + key.type = jbvString; + key.val.string.len = strlen("rtable"); + key.val.string.val = strdup("rtable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rtable, state); + + + key.type = jbvString; + key.val.string.len = strlen("subplans"); + key.val.string.val = strdup("subplans"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subplans, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("transientPlan"); + key.val.string.val = strdup("transientPlan"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->transientPlan; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("utilityStmt"); + key.val.string.val = strdup("utilityStmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->utilityStmt, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CheckPointStmt_ser(const CheckPointStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CteScan_ser(const CteScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cteParam"); + key.val.string.val = strdup("cteParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->cteParam))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ctePlanId"); + key.val.string.val = strdup("ctePlanId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->ctePlanId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RowCompareExpr_ser(const RowCompareExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("inputcollids"); + key.val.string.val = strdup("inputcollids"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->inputcollids, state); + + + key.type = jbvString; + key.val.string.len = strlen("largs"); + key.val.string.val = strdup("largs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->largs, state); + + + key.type = jbvString; + key.val.string.len = strlen("opfamilies"); + key.val.string.val = strdup("opfamilies"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opfamilies, state); + + + key.type = jbvString; + key.val.string.len = strlen("opnos"); + key.val.string.val = strdup("opnos"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opnos, state); + + + key.type = jbvString; + key.val.string.len = strlen("rargs"); + key.val.string.val = strdup("rargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rargs, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rctype"); + key.val.string.val = strdup("rctype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->rctype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CaseWhen_ser(const CaseWhen *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("expr"); + key.val.string.val = strdup("expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->expr, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("result"); + key.val.string.val = strdup("result"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->result, state); + + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ColumnDef_ser(const ColumnDef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("collClause"); + key.val.string.val = strdup("collClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->collClause, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("collOid"); + key.val.string.val = strdup("collOid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->collOid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("colname"); + key.val.string.val = strdup("colname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->colname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->colname); + val.val.string.val = (char *)node->colname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("constraints"); + key.val.string.val = strdup("constraints"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constraints, state); + + + key.type = jbvString; + key.val.string.len = strlen("cooked_default"); + key.val.string.val = strdup("cooked_default"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cooked_default, state); + + + key.type = jbvString; + key.val.string.len = strlen("fdwoptions"); + key.val.string.val = strdup("fdwoptions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdwoptions, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inhcount"); + key.val.string.val = strdup("inhcount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->inhcount))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_from_type"); + key.val.string.val = strdup("is_from_type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_from_type; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_local"); + key.val.string.val = strdup("is_local"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_local; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_not_null"); + key.val.string.val = strdup("is_not_null"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_not_null; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("raw_default"); + key.val.string.val = strdup("raw_default"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->raw_default, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("storage"); + key.val.string.val = strdup("storage"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->storage))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *A_Const_ser(const A_Const *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("val"); + key.val.string.val = strdup("val"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if ((&node->val) == NULL) + { + JsonbValue val; + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else if (IsA((&node->val), String) || IsA((&node->val), BitString) || IsA((&node->val), Float) ) + { + JsonbValue val; + val.type = jbvString; + val.val.string.len = strlen(((Value *)(&node->val))->val.str); + val.val.string.val = ((Value *)(&node->val))->val.str; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else if (IsA((&node->val), Integer)) + { + JsonbValue val; + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(((Value *)(&node->val))->val.ival))); + pushJsonbValue(&state, WJB_VALUE, &val); + } + else if (IsA((&node->val), Null)) + { + JsonbValue val; + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ValuesScan_ser(const ValuesScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("values_lists"); + key.val.string.val = strdup("values_lists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->values_lists, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *PlanInvalItem_ser(const PlanInvalItem *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cacheId"); + key.val.string.val = strdup("cacheId"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->cacheId))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hashValue"); + key.val.string.val = strdup("hashValue"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->hashValue))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ListenStmt_ser(const ListenStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("conditionname"); + key.val.string.val = strdup("conditionname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->conditionname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->conditionname); + val.val.string.val = (char *)node->conditionname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Gather_ser(const Gather *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("invisible"); + key.val.string.val = strdup("invisible"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->invisible; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("num_workers"); + key.val.string.val = strdup("num_workers"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->num_workers))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("single_copy"); + key.val.string.val = strdup("single_copy"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->single_copy; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateTableAsStmt_ser(const CreateTableAsStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("if_not_exists"); + key.val.string.val = strdup("if_not_exists"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->if_not_exists; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("into"); + key.val.string.val = strdup("into"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->into, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_select_into"); + key.val.string.val = strdup("is_select_into"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_select_into; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("query"); + key.val.string.val = strdup("query"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->query, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relkind"); + key.val.string.val = strdup("relkind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relkind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *UnlistenStmt_ser(const UnlistenStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("conditionname"); + key.val.string.val = strdup("conditionname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->conditionname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->conditionname); + val.val.string.val = (char *)node->conditionname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateConversionStmt_ser(const CreateConversionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("conversion_name"); + key.val.string.val = strdup("conversion_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->conversion_name, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("def"); + key.val.string.val = strdup("def"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->def; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("for_encoding_name"); + key.val.string.val = strdup("for_encoding_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->for_encoding_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->for_encoding_name); + val.val.string.val = (char *)node->for_encoding_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("func_name"); + key.val.string.val = strdup("func_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->func_name, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("to_encoding_name"); + key.val.string.val = strdup("to_encoding_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->to_encoding_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->to_encoding_name); + val.val.string.val = (char *)node->to_encoding_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterFunctionStmt_ser(const AlterFunctionStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("actions"); + key.val.string.val = strdup("actions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->actions, state); + + + key.type = jbvString; + key.val.string.len = strlen("func"); + key.val.string.val = strdup("func"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->func, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TruncateStmt_ser(const TruncateStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relations"); + key.val.string.val = strdup("relations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relations, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("restart_seqs"); + key.val.string.val = strdup("restart_seqs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->restart_seqs; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ResTarget_ser(const ResTarget *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("indirection"); + key.val.string.val = strdup("indirection"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indirection, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("val"); + key.val.string.val = strdup("val"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->val, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CoerceViaIO_ser(const CoerceViaIO *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("coerceformat"); + key.val.string.val = strdup("coerceformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->coerceformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultcollid"); + key.val.string.val = strdup("resultcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resultcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CaseExpr_ser(const CaseExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("casecollid"); + key.val.string.val = strdup("casecollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->casecollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("casetype"); + key.val.string.val = strdup("casetype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->casetype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("defresult"); + key.val.string.val = strdup("defresult"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->defresult, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateEnumStmt_ser(const CreateEnumStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + + key.type = jbvString; + key.val.string.len = strlen("vals"); + key.val.string.val = strdup("vals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->vals, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeSubselect_ser(const RangeSubselect *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("alias"); + key.val.string.val = strdup("alias"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->alias, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("lateral"); + key.val.string.val = strdup("lateral"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->lateral; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("subquery"); + key.val.string.val = strdup("subquery"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->subquery, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DropUserMappingStmt_ser(const DropUserMappingStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("user"); + key.val.string.val = strdup("user"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->user, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *JoinExpr_ser(const JoinExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("alias"); + key.val.string.val = strdup("alias"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->alias, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isNatural"); + key.val.string.val = strdup("isNatural"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isNatural; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("jointype"); + key.val.string.val = strdup("jointype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->jointype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("larg"); + key.val.string.val = strdup("larg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->larg, state); + + + key.type = jbvString; + key.val.string.len = strlen("quals"); + key.val.string.val = strdup("quals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->quals, state); + + + key.type = jbvString; + key.val.string.len = strlen("rarg"); + key.val.string.val = strdup("rarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rarg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("rtindex"); + key.val.string.val = strdup("rtindex"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->rtindex))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("usingClause"); + key.val.string.val = strdup("usingClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->usingClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *IndexScan_ser(const IndexScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexid"); + key.val.string.val = strdup("indexid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->indexid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexorderby"); + key.val.string.val = strdup("indexorderby"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexorderby, state); + + + key.type = jbvString; + key.val.string.len = strlen("indexorderbyops"); + key.val.string.val = strdup("indexorderbyops"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexorderbyops, state); + + + key.type = jbvString; + key.val.string.len = strlen("indexorderbyorig"); + key.val.string.val = strdup("indexorderbyorig"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexorderbyorig, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexorderdir"); + key.val.string.val = strdup("indexorderdir"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->indexorderdir))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("indexqual"); + key.val.string.val = strdup("indexqual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexqual, state); + + + key.type = jbvString; + key.val.string.len = strlen("indexqualorig"); + key.val.string.val = strdup("indexqualorig"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->indexqualorig, state); + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Group_ser(const Group *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("grpColIdx"); + key.val.string.val = strdup("grpColIdx"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->grpColIdx[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + int i; + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("grpOperators"); + key.val.string.val = strdup("grpOperators"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + for (i = 0; i < node->numCols; i++) + { + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->grpOperators[i]))); + pushJsonbValue(&state, WJB_ELEM, &val); + + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + + } + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("numCols"); + key.val.string.val = strdup("numCols"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->numCols))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *IndexElem_ser(const IndexElem *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("collation"); + key.val.string.val = strdup("collation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->collation, state); + + + key.type = jbvString; + key.val.string.len = strlen("expr"); + key.val.string.val = strdup("expr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->expr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("indexcolname"); + key.val.string.val = strdup("indexcolname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->indexcolname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->indexcolname); + val.val.string.val = (char *)node->indexcolname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nulls_ordering"); + key.val.string.val = strdup("nulls_ordering"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->nulls_ordering))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("opclass"); + key.val.string.val = strdup("opclass"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->opclass, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ordering"); + key.val.string.val = strdup("ordering"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->ordering))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SortBy_ser(const SortBy *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("node"); + key.val.string.val = strdup("node"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->node, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("sortby_dir"); + key.val.string.val = strdup("sortby_dir"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->sortby_dir))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("sortby_nulls"); + key.val.string.val = strdup("sortby_nulls"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->sortby_nulls))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("useOp"); + key.val.string.val = strdup("useOp"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->useOp, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Join_ser(const Join *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("joinqual"); + key.val.string.val = strdup("joinqual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->joinqual, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("jointype"); + key.val.string.val = strdup("jointype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->jointype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DoStmt_ser(const DoStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FieldStore_ser(const FieldStore *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + + key.type = jbvString; + key.val.string.len = strlen("fieldnums"); + key.val.string.val = strdup("fieldnums"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fieldnums, state); + + + key.type = jbvString; + key.val.string.len = strlen("newvals"); + key.val.string.val = strdup("newvals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->newvals, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Hash_ser(const Hash *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skewColType"); + key.val.string.val = strdup("skewColType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->skewColType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skewColTypmod"); + key.val.string.val = strdup("skewColTypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->skewColTypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skewColumn"); + key.val.string.val = strdup("skewColumn"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->skewColumn))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skewInherit"); + key.val.string.val = strdup("skewInherit"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->skewInherit; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("skewTable"); + key.val.string.val = strdup("skewTable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->skewTable))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTableCmd_ser(const AlterTableCmd *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("behavior"); + key.val.string.val = strdup("behavior"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->behavior))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("def"); + key.val.string.val = strdup("def"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->def, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("newowner"); + key.val.string.val = strdup("newowner"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->newowner, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subtype"); + key.val.string.val = strdup("subtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->subtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WorkTableScan_ser(const WorkTableScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("wtParam"); + key.val.string.val = strdup("wtParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->wtParam))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WindowDef_ser(const WindowDef *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("endOffset"); + key.val.string.val = strdup("endOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->endOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("frameOptions"); + key.val.string.val = strdup("frameOptions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->frameOptions))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("orderClause"); + key.val.string.val = strdup("orderClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->orderClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("partitionClause"); + key.val.string.val = strdup("partitionClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->partitionClause, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("refname"); + key.val.string.val = strdup("refname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->refname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->refname); + val.val.string.val = (char *)node->refname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("startOffset"); + key.val.string.val = strdup("startOffset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->startOffset, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateTrigStmt_ser(const CreateTrigStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("columns"); + key.val.string.val = strdup("columns"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->columns, state); + + + key.type = jbvString; + key.val.string.len = strlen("constrrel"); + key.val.string.val = strdup("constrrel"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constrrel, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("deferrable"); + key.val.string.val = strdup("deferrable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->deferrable; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("events"); + key.val.string.val = strdup("events"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->events))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("funcname"); + key.val.string.val = strdup("funcname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("initdeferred"); + key.val.string.val = strdup("initdeferred"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->initdeferred; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("isconstraint"); + key.val.string.val = strdup("isconstraint"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->isconstraint; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("row"); + key.val.string.val = strdup("row"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->row; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("timing"); + key.val.string.val = strdup("timing"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->timing))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("trigname"); + key.val.string.val = strdup("trigname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->trigname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->trigname); + val.val.string.val = (char *)node->trigname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("whenClause"); + key.val.string.val = strdup("whenClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->whenClause, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FieldSelect_ser(const FieldSelect *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fieldnum"); + key.val.string.val = strdup("fieldnum"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->fieldnum))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resultcollid"); + key.val.string.val = strdup("resultcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resultcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttype"); + key.val.string.val = strdup("resulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->resulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("resulttypmod"); + key.val.string.val = strdup("resulttypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->resulttypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeFunction_ser(const RangeFunction *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("alias"); + key.val.string.val = strdup("alias"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->alias, state); + + + key.type = jbvString; + key.val.string.len = strlen("coldeflist"); + key.val.string.val = strdup("coldeflist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->coldeflist, state); + + + key.type = jbvString; + key.val.string.len = strlen("functions"); + key.val.string.val = strdup("functions"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->functions, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("is_rowsfrom"); + key.val.string.val = strdup("is_rowsfrom"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->is_rowsfrom; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("lateral"); + key.val.string.val = strdup("lateral"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->lateral; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ordinality"); + key.val.string.val = strdup("ordinality"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->ordinality; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterSystemStmt_ser(const AlterSystemStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("setstmt"); + key.val.string.val = strdup("setstmt"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->setstmt, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterObjectDependsStmt_ser(const AlterObjectDependsStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("extname"); + key.val.string.val = strdup("extname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->extname, state); + + + key.type = jbvString; + key.val.string.len = strlen("objargs"); + key.val.string.val = strdup("objargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objargs, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objectType"); + key.val.string.val = strdup("objectType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objectType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("objname"); + key.val.string.val = strdup("objname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objname, state); + + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *GroupingSet_ser(const GroupingSet *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("content"); + key.val.string.val = strdup("content"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->content, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateRoleStmt_ser(const CreateRoleStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("role"); + key.val.string.val = strdup("role"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->role == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->role); + val.val.string.val = (char *)node->role; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("stmt_type"); + key.val.string.val = strdup("stmt_type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->stmt_type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FuncExpr_ser(const FuncExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if (!remove_fake_func && remove_fake_func != ((FuncExpr *)node)->funcid) { + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funccollid"); + key.val.string.val = strdup("funccollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->funccollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcformat"); + key.val.string.val = strdup("funcformat"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->funcformat))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcid"); + key.val.string.val = strdup("funcid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->funcid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcresulttype"); + key.val.string.val = strdup("funcresulttype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->funcresulttype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcretset"); + key.val.string.val = strdup("funcretset"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->funcretset; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funcvariadic"); + key.val.string.val = strdup("funcvariadic"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->funcvariadic; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("inputcollid"); + key.val.string.val = strdup("inputcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->inputcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CommentStmt_ser(const CommentStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("comment"); + key.val.string.val = strdup("comment"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->comment == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->comment); + val.val.string.val = (char *)node->comment; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("objargs"); + key.val.string.val = strdup("objargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("objname"); + key.val.string.val = strdup("objname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objtype"); + key.val.string.val = strdup("objtype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objtype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *NotifyStmt_ser(const NotifyStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("conditionname"); + key.val.string.val = strdup("conditionname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->conditionname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->conditionname); + val.val.string.val = (char *)node->conditionname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("payload"); + key.val.string.val = strdup("payload"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->payload == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->payload); + val.val.string.val = (char *)node->payload; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TypeCast_ser(const TypeCast *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WithCheckOption_ser(const WithCheckOption *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cascaded"); + key.val.string.val = strdup("cascaded"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->cascaded; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("polname"); + key.val.string.val = strdup("polname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->polname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->polname); + val.val.string.val = (char *)node->polname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("qual"); + key.val.string.val = strdup("qual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->qual, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relname"); + key.val.string.val = strdup("relname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->relname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->relname); + val.val.string.val = (char *)node->relname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SubPlan_ser(const SubPlan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("firstColCollation"); + key.val.string.val = strdup("firstColCollation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->firstColCollation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("firstColType"); + key.val.string.val = strdup("firstColType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->firstColType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("firstColTypmod"); + key.val.string.val = strdup("firstColTypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->firstColTypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("parParam"); + key.val.string.val = strdup("parParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->parParam, state); + + + key.type = jbvString; + key.val.string.len = strlen("paramIds"); + key.val.string.val = strdup("paramIds"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->paramIds, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("per_call_cost"); + key.val.string.val = strdup("per_call_cost"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(node->per_call_cost))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plan_id"); + key.val.string.val = strdup("plan_id"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->plan_id))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("plan_name"); + key.val.string.val = strdup("plan_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->plan_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->plan_name); + val.val.string.val = (char *)node->plan_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("setParam"); + key.val.string.val = strdup("setParam"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->setParam, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("startup_cost"); + key.val.string.val = strdup("startup_cost"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(float8_numeric, Float8GetDatum(node->startup_cost))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("subLinkType"); + key.val.string.val = strdup("subLinkType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->subLinkType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("testexpr"); + key.val.string.val = strdup("testexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->testexpr, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("unknownEqFalse"); + key.val.string.val = strdup("unknownEqFalse"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->unknownEqFalse; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("useHashTable"); + key.val.string.val = strdup("useHashTable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->useHashTable; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Result_ser(const Result *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + + key.type = jbvString; + key.val.string.len = strlen("plan"); + key.val.string.val = strdup("plan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Plan_ser(&node->plan, state, false); + + + key.type = jbvString; + key.val.string.len = strlen("resconstantqual"); + key.val.string.val = strdup("resconstantqual"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->resconstantqual, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SetOperationStmt_ser(const SetOperationStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("all"); + key.val.string.val = strdup("all"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->all; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("colCollations"); + key.val.string.val = strdup("colCollations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colCollations, state); + + + key.type = jbvString; + key.val.string.len = strlen("colTypes"); + key.val.string.val = strdup("colTypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colTypes, state); + + + key.type = jbvString; + key.val.string.len = strlen("colTypmods"); + key.val.string.val = strdup("colTypmods"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colTypmods, state); + + + key.type = jbvString; + key.val.string.len = strlen("groupClauses"); + key.val.string.val = strdup("groupClauses"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->groupClauses, state); + + + key.type = jbvString; + key.val.string.len = strlen("larg"); + key.val.string.val = strdup("larg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->larg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("op"); + key.val.string.val = strdup("op"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->op))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("rarg"); + key.val.string.val = strdup("rarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->rarg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ReplicaIdentityStmt_ser(const ReplicaIdentityStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("identity_type"); + key.val.string.val = strdup("identity_type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->identity_type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Alias_ser(const Alias *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("aliasname"); + key.val.string.val = strdup("aliasname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->aliasname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->aliasname); + val.val.string.val = (char *)node->aliasname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("colnames"); + key.val.string.val = strdup("colnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->colnames, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CommonTableExpr_ser(const CommonTableExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("aliascolnames"); + key.val.string.val = strdup("aliascolnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->aliascolnames, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecolcollations"); + key.val.string.val = strdup("ctecolcollations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecolcollations, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecolnames"); + key.val.string.val = strdup("ctecolnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecolnames, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecoltypes"); + key.val.string.val = strdup("ctecoltypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecoltypes, state); + + + key.type = jbvString; + key.val.string.len = strlen("ctecoltypmods"); + key.val.string.val = strdup("ctecoltypmods"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctecoltypmods, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("ctename"); + key.val.string.val = strdup("ctename"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->ctename == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->ctename); + val.val.string.val = (char *)node->ctename; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("ctequery"); + key.val.string.val = strdup("ctequery"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctequery, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cterecursive"); + key.val.string.val = strdup("cterecursive"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->cterecursive; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("cterefcount"); + key.val.string.val = strdup("cterefcount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->cterefcount))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreatedbStmt_ser(const CreatedbStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("dbname"); + key.val.string.val = strdup("dbname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->dbname == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->dbname); + val.val.string.val = (char *)node->dbname; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterRoleStmt_ser(const AlterRoleStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("action"); + key.val.string.val = strdup("action"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->action))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + + key.type = jbvString; + key.val.string.len = strlen("role"); + key.val.string.val = strdup("role"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->role, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *WithClause_ser(const WithClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("ctes"); + key.val.string.val = strdup("ctes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->ctes, state); + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("recursive"); + key.val.string.val = strdup("recursive"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->recursive; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ForeignScan_ser(const ForeignScan *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("fdw_exprs"); + key.val.string.val = strdup("fdw_exprs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdw_exprs, state); + + + key.type = jbvString; + key.val.string.len = strlen("fdw_private"); + key.val.string.val = strdup("fdw_private"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdw_private, state); + + + key.type = jbvString; + key.val.string.len = strlen("fdw_recheck_quals"); + key.val.string.val = strdup("fdw_recheck_quals"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdw_recheck_quals, state); + + + key.type = jbvString; + key.val.string.len = strlen("fdw_scan_tlist"); + key.val.string.val = strdup("fdw_scan_tlist"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->fdw_scan_tlist, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fsSystemCol"); + key.val.string.val = strdup("fsSystemCol"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->fsSystemCol; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("fs_relids"); + key.val.string.val = strdup("fs_relids"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->fs_relids == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->fs_relids, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("fs_server"); + key.val.string.val = strdup("fs_server"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->fs_server))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("operation"); + key.val.string.val = strdup("operation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->operation))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("scan"); + key.val.string.val = strdup("scan"); + pushJsonbValue(&state, WJB_KEY, &key); + + Scan_ser(&node->scan, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *FuncWithArgs_ser(const FuncWithArgs *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("funcargs"); + key.val.string.val = strdup("funcargs"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcargs, state); + + + key.type = jbvString; + key.val.string.len = strlen("funcname"); + key.val.string.val = strdup("funcname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterForeignServerStmt_ser(const AlterForeignServerStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("has_version"); + key.val.string.val = strdup("has_version"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->has_version; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("servername"); + key.val.string.val = strdup("servername"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->servername == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->servername); + val.val.string.val = (char *)node->servername; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("version"); + key.val.string.val = strdup("version"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->version == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->version); + val.val.string.val = (char *)node->version; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *DefineStmt_ser(const DefineStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("definition"); + key.val.string.val = strdup("definition"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->definition, state); + + + key.type = jbvString; + key.val.string.len = strlen("defnames"); + key.val.string.val = strdup("defnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->defnames, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("kind"); + key.val.string.val = strdup("kind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->kind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("oldstyle"); + key.val.string.val = strdup("oldstyle"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->oldstyle; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterTableStmt_ser(const AlterTableStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("cmds"); + key.val.string.val = strdup("cmds"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->cmds, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("missing_ok"); + key.val.string.val = strdup("missing_ok"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->missing_ok; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("relkind"); + key.val.string.val = strdup("relkind"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->relkind))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *ImportForeignSchemaStmt_ser(const ImportForeignSchemaStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("list_type"); + key.val.string.val = strdup("list_type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->list_type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("local_schema"); + key.val.string.val = strdup("local_schema"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->local_schema == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->local_schema); + val.val.string.val = (char *)node->local_schema; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("options"); + key.val.string.val = strdup("options"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->options, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("remote_schema"); + key.val.string.val = strdup("remote_schema"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->remote_schema == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->remote_schema); + val.val.string.val = (char *)node->remote_schema; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("server_name"); + key.val.string.val = strdup("server_name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->server_name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->server_name); + val.val.string.val = (char *)node->server_name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + key.type = jbvString; + key.val.string.len = strlen("table_list"); + key.val.string.val = strdup("table_list"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->table_list, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Var_ser(const Var *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varattno"); + key.val.string.val = strdup("varattno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->varattno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varcollid"); + key.val.string.val = strdup("varcollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->varcollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varlevelsup"); + key.val.string.val = strdup("varlevelsup"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->varlevelsup))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varno"); + key.val.string.val = strdup("varno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->varno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varnoold"); + key.val.string.val = strdup("varnoold"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->varnoold))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("varoattno"); + key.val.string.val = strdup("varoattno"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->varoattno))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("vartype"); + key.val.string.val = strdup("vartype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->vartype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("vartypmod"); + key.val.string.val = strdup("vartypmod"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->vartypmod))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *SortGroupClause_ser(const SortGroupClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("eqop"); + key.val.string.val = strdup("eqop"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->eqop))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("hashable"); + key.val.string.val = strdup("hashable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->hashable; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("nulls_first"); + key.val.string.val = strdup("nulls_first"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvBool; + val.val.boolean = node->nulls_first; + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("sortop"); + key.val.string.val = strdup("sortop"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->sortop))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tleSortGroupRef"); + key.val.string.val = strdup("tleSortGroupRef"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->tleSortGroupRef))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CreateDomainStmt_ser(const CreateDomainStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("collClause"); + key.val.string.val = strdup("collClause"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->collClause, state); + + + key.type = jbvString; + key.val.string.len = strlen("constraints"); + key.val.string.val = strdup("constraints"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->constraints, state); + + + key.type = jbvString; + key.val.string.len = strlen("domainname"); + key.val.string.val = strdup("domainname"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->domainname, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("typeName"); + key.val.string.val = strdup("typeName"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->typeName, state); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *TableSampleClause_ser(const TableSampleClause *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + + key.type = jbvString; + key.val.string.len = strlen("repeatable"); + key.val.string.val = strdup("repeatable"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->repeatable, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("tsmhandler"); + key.val.string.val = strdup("tsmhandler"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->tsmhandler))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *CoalesceExpr_ser(const CoalesceExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("args"); + key.val.string.val = strdup("args"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->args, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("coalescecollid"); + key.val.string.val = strdup("coalescecollid"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->coalescecollid))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("coalescetype"); + key.val.string.val = strdup("coalescetype"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(node->coalescetype))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *RangeTblFunction_ser(const RangeTblFunction *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("funccolcollations"); + key.val.string.val = strdup("funccolcollations"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funccolcollations, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("funccolcount"); + key.val.string.val = strdup("funccolcount"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->funccolcount))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("funccolnames"); + key.val.string.val = strdup("funccolnames"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funccolnames, state); + + + key.type = jbvString; + key.val.string.len = strlen("funccoltypes"); + key.val.string.val = strdup("funccoltypes"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funccoltypes, state); + + + key.type = jbvString; + key.val.string.len = strlen("funccoltypmods"); + key.val.string.val = strdup("funccoltypmods"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funccoltypmods, state); + + + key.type = jbvString; + key.val.string.len = strlen("funcexpr"); + key.val.string.val = strdup("funcexpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->funcexpr, state); + + { + JsonbValue val; + + + key.type = jbvString; + key.val.string.len = strlen("funcparams"); + key.val.string.val = strdup("funcparams"); + pushJsonbValue(&state, WJB_KEY, &key); + + pushJsonbValue(&state, WJB_KEY, &key); + + if (node->funcparams == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + int x = -1; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + while ((x = bms_next_member(node->funcparams, x)) >= 0) + { + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(x))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *NamedArgExpr_ser(const NamedArgExpr *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("arg"); + key.val.string.val = strdup("arg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->arg, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("argnumber"); + key.val.string.val = strdup("argnumber"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->argnumber))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if(!skip_location) + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("location"); + key.val.string.val = strdup("location"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(node->location))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("name"); + key.val.string.val = strdup("name"); + pushJsonbValue(&state, WJB_KEY, &key); + + + if (node->name == NULL) + { + val.type = jbvNull; + pushJsonbValue(&state, WJB_VALUE, &val); + } + else + { + val.type = jbvString; + val.val.string.len = strlen(node->name); + val.val.string.val = (char *)node->name; + pushJsonbValue(&state, WJB_VALUE, &val); + } + + } + + + key.type = jbvString; + key.val.string.len = strlen("xpr"); + key.val.string.val = strdup("xpr"); + pushJsonbValue(&state, WJB_KEY, &key); + + Expr_ser(&node->xpr, state, false); + + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *Value_ser(const Value *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + /* NOT FOUND TYPE: NotFound */ + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + static + JsonbValue *AlterOwnerStmt_ser(const AlterOwnerStmt *node, JsonbParseState *state, bool sub_object) + { + JsonbValue key; + if (sub_object) + { + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); + } + + + + key.type = jbvString; + key.val.string.len = strlen("newowner"); + key.val.string.val = strdup("newowner"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->newowner, state); + + + key.type = jbvString; + key.val.string.len = strlen("objarg"); + key.val.string.val = strdup("objarg"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->objarg, state); + + + key.type = jbvString; + key.val.string.len = strlen("object"); + key.val.string.val = strdup("object"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->object, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("objectType"); + key.val.string.val = strdup("objectType"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->objectType))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + + key.type = jbvString; + key.val.string.len = strlen("relation"); + key.val.string.val = strdup("relation"); + pushJsonbValue(&state, WJB_KEY, &key); + + + node_to_jsonb(node->relation, state); + + { + JsonbValue val; + + key.type = jbvString; + key.val.string.len = strlen("type"); + key.val.string.val = strdup("type"); + pushJsonbValue(&state, WJB_KEY, &key); + + + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int2_numeric, Int16GetDatum(node->type))); + pushJsonbValue(&state, WJB_VALUE, &val); + + } + if (sub_object) + { + return pushJsonbValue(&state, WJB_END_OBJECT, NULL); + } + else + { + return NULL; + } + } + + + static + JsonbValue *List_ser(const void *node, JsonbParseState *state) + { + const ListCell *lc; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + + foreach(lc, node) + { + + if (lfirst(lc) == NULL) + { + JsonbValue val; + val.type = jbvNull; + pushJsonbValue(&state, WJB_ELEM, &val); + } + else if (IsA(lfirst(lc), String) || IsA(lfirst(lc), BitString) || IsA(lfirst(lc), Float) ) + { + JsonbValue val; + val.type = jbvString; + val.val.string.len = strlen(((Value *)lfirst(lc))->val.str); + val.val.string.val = ((Value *)lfirst(lc))->val.str; + pushJsonbValue(&state, WJB_ELEM, &val); + } + else if (IsA(lfirst(lc), Integer)) + { + JsonbValue val; + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(((Value *)lfirst(lc))->val.ival))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + else if (IsA(lfirst(lc), Null)) + { + JsonbValue val; + val.type = jbvNull; + pushJsonbValue(&state, WJB_ELEM, &val); + } + + else + node_to_jsonb(lfirst(lc), state); + } + + return pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + static + JsonbValue *IntList_ser(const void *node, JsonbParseState *state) + { + const ListCell *lc; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + + foreach(lc, node) + { + JsonbValue val; + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(lfirst_int(lc)))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + + return pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + static + JsonbValue *OidList_ser(const void *node, JsonbParseState *state) + { + const ListCell *lc; + pushJsonbValue(&state, WJB_BEGIN_ARRAY, NULL); + + foreach(lc, node) + { + JsonbValue val; + val.type = jbvNumeric; + val.val.numeric = DatumGetNumeric(DirectFunctionCall1(int4_numeric, UInt32GetDatum(lfirst_int(lc)))); + pushJsonbValue(&state, WJB_ELEM, &val); + } + + return pushJsonbValue(&state, WJB_END_ARRAY, NULL); + } + +static +JsonbValue *node_to_jsonb(const void *obj, JsonbParseState *state) +{ + if (obj == NULL) { + JsonbValue out; + out.type = jbvNull; + return pushJsonbValue(&state, WJB_VALUE, &out); + } + else if (IsA(obj, List)) + { + return List_ser(obj, state); + } + else if (IsA(obj, IntList)) + { + return IntList_ser(obj, state); + } + else if (IsA(obj, OidList)) + { + return OidList_ser(obj, state); + } + + switch (nodeTag(obj)) + { + case T_RelabelType: + return RelabelType_ser(obj, state, true); + case T_VariableSetStmt: + return VariableSetStmt_ser(obj, state, true); + case T_CreateOpClassStmt: + return CreateOpClassStmt_ser(obj, state, true); + case T_CompositeTypeStmt: + return CompositeTypeStmt_ser(obj, state, true); + case T_ArrayRef: + return ArrayRef_ser(obj, state, true); + case T_RangeTblRef: + return RangeTblRef_ser(obj, state, true); + case T_ScalarArrayOpExpr: + return ScalarArrayOpExpr_ser(obj, state, true); + case T_AlterEnumStmt: + return AlterEnumStmt_ser(obj, state, true); + case T_OnConflictExpr: + return OnConflictExpr_ser(obj, state, true); + case T_AlterObjectSchemaStmt: + return AlterObjectSchemaStmt_ser(obj, state, true); + case T_Query: + return Query_ser(obj, state, true); + case T_AlterDefaultPrivilegesStmt: + return AlterDefaultPrivilegesStmt_ser(obj, state, true); + case T_CreateEventTrigStmt: + return CreateEventTrigStmt_ser(obj, state, true); + case T_BitmapIndexScan: + return BitmapIndexScan_ser(obj, state, true); + case T_CreateRangeStmt: + return CreateRangeStmt_ser(obj, state, true); + case T_CreateSeqStmt: + return CreateSeqStmt_ser(obj, state, true); + case T_GroupingFunc: + return GroupingFunc_ser(obj, state, true); + case T_RangeTableSample: + return RangeTableSample_ser(obj, state, true); + case T_BitmapOr: + return BitmapOr_ser(obj, state, true); + case T_ReindexStmt: + return ReindexStmt_ser(obj, state, true); + case T_DropStmt: + return DropStmt_ser(obj, state, true); + case T_WindowFunc: + return WindowFunc_ser(obj, state, true); + case T_NullTest: + return NullTest_ser(obj, state, true); + case T_ConvertRowtypeExpr: + return ConvertRowtypeExpr_ser(obj, state, true); + case T_DeallocateStmt: + return DeallocateStmt_ser(obj, state, true); + case T_AlterDatabaseSetStmt: + return AlterDatabaseSetStmt_ser(obj, state, true); + case T_CreateOpFamilyStmt: + return CreateOpFamilyStmt_ser(obj, state, true); + case T_CustomScan: + return CustomScan_ser(obj, state, true); + case T_WindowAgg: + return WindowAgg_ser(obj, state, true); + case T_MergeAppend: + return MergeAppend_ser(obj, state, true); + case T_AlterSeqStmt: + return AlterSeqStmt_ser(obj, state, true); + case T_BooleanTest: + return BooleanTest_ser(obj, state, true); + case T_RoleSpec: + return RoleSpec_ser(obj, state, true); + case T_RecursiveUnion: + return RecursiveUnion_ser(obj, state, true); + case T_MergeJoin: + return MergeJoin_ser(obj, state, true); + case T_AlterEventTrigStmt: + return AlterEventTrigStmt_ser(obj, state, true); + case T_CoerceToDomainValue: + return CoerceToDomainValue_ser(obj, state, true); + case T_Append: + return Append_ser(obj, state, true); + case T_Scan: + return Scan_ser(obj, state, true); + case T_ModifyTable: + return ModifyTable_ser(obj, state, true); + case T_DropRoleStmt: + return DropRoleStmt_ser(obj, state, true); + case T_DropOwnedStmt: + return DropOwnedStmt_ser(obj, state, true); + case T_AlterTableMoveAllStmt: + return AlterTableMoveAllStmt_ser(obj, state, true); + case T_NestLoop: + return NestLoop_ser(obj, state, true); + case T_InlineCodeBlock: + return InlineCodeBlock_ser(obj, state, true); + case T_DropTableSpaceStmt: + return DropTableSpaceStmt_ser(obj, state, true); + case T_CreateExtensionStmt: + return CreateExtensionStmt_ser(obj, state, true); + case T_ViewStmt: + return ViewStmt_ser(obj, state, true); + case T_AlternativeSubPlan: + return AlternativeSubPlan_ser(obj, state, true); + case T_IntoClause: + return IntoClause_ser(obj, state, true); + case T_GrantStmt: + return GrantStmt_ser(obj, state, true); + case T_DropdbStmt: + return DropdbStmt_ser(obj, state, true); + case T_OnConflictClause: + return OnConflictClause_ser(obj, state, true); + case T_IndexOnlyScan: + return IndexOnlyScan_ser(obj, state, true); + case T_A_Star: + return A_Star_ser(obj, state, true); + case T_Constraint: + return Constraint_ser(obj, state, true); + case T_AlterPolicyStmt: + return AlterPolicyStmt_ser(obj, state, true); + case T_LockingClause: + return LockingClause_ser(obj, state, true); + case T_FuncCall: + return FuncCall_ser(obj, state, true); + case T_CreateTransformStmt: + return CreateTransformStmt_ser(obj, state, true); + case T_NestLoopParam: + return NestLoopParam_ser(obj, state, true); + case T_MinMaxExpr: + return MinMaxExpr_ser(obj, state, true); + case T_UpdateStmt: + return UpdateStmt_ser(obj, state, true); + case T_Agg: + return Agg_ser(obj, state, true); + case T_SetToDefault: + return SetToDefault_ser(obj, state, true); + case T_AlterTSConfigurationStmt: + return AlterTSConfigurationStmt_ser(obj, state, true); + case T_A_Expr: + return A_Expr_ser(obj, state, true); + case T_SubLink: + return SubLink_ser(obj, state, true); + case T_AlterOperatorStmt: + return AlterOperatorStmt_ser(obj, state, true); + case T_IndexStmt: + return IndexStmt_ser(obj, state, true); + case T_AlterDomainStmt: + return AlterDomainStmt_ser(obj, state, true); + case T_TidScan: + return TidScan_ser(obj, state, true); + case T_PlanRowMark: + return PlanRowMark_ser(obj, state, true); + case T_PrepareStmt: + return PrepareStmt_ser(obj, state, true); + case T_AlterDatabaseStmt: + return AlterDatabaseStmt_ser(obj, state, true); + case T_SelectStmt: + return SelectStmt_ser(obj, state, true); + case T_FromExpr: + return FromExpr_ser(obj, state, true); + case T_Param: + return Param_ser(obj, state, true); + case T_AlterTSDictionaryStmt: + return AlterTSDictionaryStmt_ser(obj, state, true); + case T_ReassignOwnedStmt: + return ReassignOwnedStmt_ser(obj, state, true); + case T_MultiAssignRef: + return MultiAssignRef_ser(obj, state, true); + case T_LoadStmt: + return LoadStmt_ser(obj, state, true); + case T_CreateStmt: + return CreateStmt_ser(obj, state, true); + case T_RefreshMatViewStmt: + return RefreshMatViewStmt_ser(obj, state, true); + case T_DeleteStmt: + return DeleteStmt_ser(obj, state, true); + case T_SubqueryScan: + return SubqueryScan_ser(obj, state, true); + case T_CreateCastStmt: + return CreateCastStmt_ser(obj, state, true); + case T_ConstraintsSetStmt: + return ConstraintsSetStmt_ser(obj, state, true); + case T_WindowClause: + return WindowClause_ser(obj, state, true); + case T_ArrayExpr: + return ArrayExpr_ser(obj, state, true); + case T_InferClause: + return InferClause_ser(obj, state, true); + case T_BitmapHeapScan: + return BitmapHeapScan_ser(obj, state, true); + case T_CaseTestExpr: + return CaseTestExpr_ser(obj, state, true); + case T_VariableShowStmt: + return VariableShowStmt_ser(obj, state, true); + case T_Expr: + return Expr_ser(obj, state, true); + case T_CreateAmStmt: + return CreateAmStmt_ser(obj, state, true); + case T_FetchStmt: + return FetchStmt_ser(obj, state, true); + case T_Sort: + return Sort_ser(obj, state, true); + case T_Const: + return Const_ser(obj, state, true); + case T_CoerceToDomain: + return CoerceToDomain_ser(obj, state, true); + case T_ExplainStmt: + return ExplainStmt_ser(obj, state, true); + case T_TransactionStmt: + return TransactionStmt_ser(obj, state, true); + case T_BoolExpr: + return BoolExpr_ser(obj, state, true); + case T_GrantRoleStmt: + return GrantRoleStmt_ser(obj, state, true); + case T_ParamRef: + return ParamRef_ser(obj, state, true); + case T_HashJoin: + return HashJoin_ser(obj, state, true); + case T_ClosePortalStmt: + return ClosePortalStmt_ser(obj, state, true); + case T_Plan: + return Plan_ser(obj, state, true); + case T_CopyStmt: + return CopyStmt_ser(obj, state, true); + case T_CreateForeignServerStmt: + return CreateForeignServerStmt_ser(obj, state, true); + case T_SetOp: + return SetOp_ser(obj, state, true); + case T_CollateExpr: + return CollateExpr_ser(obj, state, true); + case T_A_ArrayExpr: + return A_ArrayExpr_ser(obj, state, true); + case T_LockStmt: + return LockStmt_ser(obj, state, true); + case T_CreateTableSpaceStmt: + return CreateTableSpaceStmt_ser(obj, state, true); + case T_TargetEntry: + return TargetEntry_ser(obj, state, true); + case T_XmlSerialize: + return XmlSerialize_ser(obj, state, true); + case T_TypeName: + return TypeName_ser(obj, state, true); + case T_VacuumStmt: + return VacuumStmt_ser(obj, state, true); + case T_SampleScan: + return SampleScan_ser(obj, state, true); + case T_RangeVar: + return RangeVar_ser(obj, state, true); + case T_A_Indices: + return A_Indices_ser(obj, state, true); + case T_CreateFdwStmt: + return CreateFdwStmt_ser(obj, state, true); + case T_A_Indirection: + return A_Indirection_ser(obj, state, true); + case T_CurrentOfExpr: + return CurrentOfExpr_ser(obj, state, true); + case T_TableLikeClause: + return TableLikeClause_ser(obj, state, true); + case T_CreateForeignTableStmt: + return CreateForeignTableStmt_ser(obj, state, true); + case T_RangeTblEntry: + return RangeTblEntry_ser(obj, state, true); + case T_FunctionParameter: + return FunctionParameter_ser(obj, state, true); + case T_OpExpr: + return OpExpr_ser(obj, state, true); + case T_AlterFdwStmt: + return AlterFdwStmt_ser(obj, state, true); + case T_BitmapAnd: + return BitmapAnd_ser(obj, state, true); + case T_CreateUserMappingStmt: + return CreateUserMappingStmt_ser(obj, state, true); + case T_CreatePolicyStmt: + return CreatePolicyStmt_ser(obj, state, true); + case T_AlterUserMappingStmt: + return AlterUserMappingStmt_ser(obj, state, true); + case T_InferenceElem: + return InferenceElem_ser(obj, state, true); + case T_ExecuteStmt: + return ExecuteStmt_ser(obj, state, true); + case T_XmlExpr: + return XmlExpr_ser(obj, state, true); + case T_SecLabelStmt: + return SecLabelStmt_ser(obj, state, true); + case T_CreatePLangStmt: + return CreatePLangStmt_ser(obj, state, true); + case T_DeclareCursorStmt: + return DeclareCursorStmt_ser(obj, state, true); + case T_AlterExtensionContentsStmt: + return AlterExtensionContentsStmt_ser(obj, state, true); + case T_CreateOpClassItem: + return CreateOpClassItem_ser(obj, state, true); + case T_RowMarkClause: + return RowMarkClause_ser(obj, state, true); + case T_RowExpr: + return RowExpr_ser(obj, state, true); + case T_RenameStmt: + return RenameStmt_ser(obj, state, true); + case T_AlterExtensionStmt: + return AlterExtensionStmt_ser(obj, state, true); + case T_Unique: + return Unique_ser(obj, state, true); + case T_FunctionScan: + return FunctionScan_ser(obj, state, true); + case T_LockRows: + return LockRows_ser(obj, state, true); + case T_InsertStmt: + return InsertStmt_ser(obj, state, true); + case T_AlterRoleSetStmt: + return AlterRoleSetStmt_ser(obj, state, true); + case T_CollateClause: + return CollateClause_ser(obj, state, true); + case T_AlterTableSpaceOptionsStmt: + return AlterTableSpaceOptionsStmt_ser(obj, state, true); + case T_DefElem: + return DefElem_ser(obj, state, true); + case T_DiscardStmt: + return DiscardStmt_ser(obj, state, true); + case T_RuleStmt: + return RuleStmt_ser(obj, state, true); + case T_ArrayCoerceExpr: + return ArrayCoerceExpr_ser(obj, state, true); + case T_Limit: + return Limit_ser(obj, state, true); + case T_Material: + return Material_ser(obj, state, true); + case T_AccessPriv: + return AccessPriv_ser(obj, state, true); + case T_ColumnRef: + return ColumnRef_ser(obj, state, true); + case T_AlterOpFamilyStmt: + return AlterOpFamilyStmt_ser(obj, state, true); + case T_Aggref: + return Aggref_ser(obj, state, true); + case T_CreateSchemaStmt: + return CreateSchemaStmt_ser(obj, state, true); + case T_CreateFunctionStmt: + return CreateFunctionStmt_ser(obj, state, true); + case T_ClusterStmt: + return ClusterStmt_ser(obj, state, true); + case T_PlannedStmt: + return PlannedStmt_ser(obj, state, true); + case T_CheckPointStmt: + return CheckPointStmt_ser(obj, state, true); + case T_CteScan: + return CteScan_ser(obj, state, true); + case T_RowCompareExpr: + return RowCompareExpr_ser(obj, state, true); + case T_CaseWhen: + return CaseWhen_ser(obj, state, true); + case T_ColumnDef: + return ColumnDef_ser(obj, state, true); + case T_A_Const: + return A_Const_ser(obj, state, true); + case T_ValuesScan: + return ValuesScan_ser(obj, state, true); + case T_PlanInvalItem: + return PlanInvalItem_ser(obj, state, true); + case T_ListenStmt: + return ListenStmt_ser(obj, state, true); + case T_Gather: + return Gather_ser(obj, state, true); + case T_CreateTableAsStmt: + return CreateTableAsStmt_ser(obj, state, true); + case T_UnlistenStmt: + return UnlistenStmt_ser(obj, state, true); + case T_CreateConversionStmt: + return CreateConversionStmt_ser(obj, state, true); + case T_AlterFunctionStmt: + return AlterFunctionStmt_ser(obj, state, true); + case T_TruncateStmt: + return TruncateStmt_ser(obj, state, true); + case T_ResTarget: + return ResTarget_ser(obj, state, true); + case T_CoerceViaIO: + return CoerceViaIO_ser(obj, state, true); + case T_CaseExpr: + return CaseExpr_ser(obj, state, true); + case T_CreateEnumStmt: + return CreateEnumStmt_ser(obj, state, true); + case T_RangeSubselect: + return RangeSubselect_ser(obj, state, true); + case T_DropUserMappingStmt: + return DropUserMappingStmt_ser(obj, state, true); + case T_JoinExpr: + return JoinExpr_ser(obj, state, true); + case T_IndexScan: + return IndexScan_ser(obj, state, true); + case T_Group: + return Group_ser(obj, state, true); + case T_IndexElem: + return IndexElem_ser(obj, state, true); + case T_SortBy: + return SortBy_ser(obj, state, true); + case T_Join: + return Join_ser(obj, state, true); + case T_DoStmt: + return DoStmt_ser(obj, state, true); + case T_FieldStore: + return FieldStore_ser(obj, state, true); + case T_Hash: + return Hash_ser(obj, state, true); + case T_AlterTableCmd: + return AlterTableCmd_ser(obj, state, true); + case T_WorkTableScan: + return WorkTableScan_ser(obj, state, true); + case T_WindowDef: + return WindowDef_ser(obj, state, true); + case T_CreateTrigStmt: + return CreateTrigStmt_ser(obj, state, true); + case T_FieldSelect: + return FieldSelect_ser(obj, state, true); + case T_RangeFunction: + return RangeFunction_ser(obj, state, true); + case T_AlterSystemStmt: + return AlterSystemStmt_ser(obj, state, true); + case T_AlterObjectDependsStmt: + return AlterObjectDependsStmt_ser(obj, state, true); + case T_GroupingSet: + return GroupingSet_ser(obj, state, true); + case T_CreateRoleStmt: + return CreateRoleStmt_ser(obj, state, true); + case T_FuncExpr: + return FuncExpr_ser(obj, state, true); + case T_CommentStmt: + return CommentStmt_ser(obj, state, true); + case T_NotifyStmt: + return NotifyStmt_ser(obj, state, true); + case T_TypeCast: + return TypeCast_ser(obj, state, true); + case T_WithCheckOption: + return WithCheckOption_ser(obj, state, true); + case T_SubPlan: + return SubPlan_ser(obj, state, true); + case T_Result: + return Result_ser(obj, state, true); + case T_SetOperationStmt: + return SetOperationStmt_ser(obj, state, true); + case T_ReplicaIdentityStmt: + return ReplicaIdentityStmt_ser(obj, state, true); + case T_Alias: + return Alias_ser(obj, state, true); + case T_CommonTableExpr: + return CommonTableExpr_ser(obj, state, true); + case T_CreatedbStmt: + return CreatedbStmt_ser(obj, state, true); + case T_AlterRoleStmt: + return AlterRoleStmt_ser(obj, state, true); + case T_WithClause: + return WithClause_ser(obj, state, true); + case T_ForeignScan: + return ForeignScan_ser(obj, state, true); + case T_FuncWithArgs: + return FuncWithArgs_ser(obj, state, true); + case T_AlterForeignServerStmt: + return AlterForeignServerStmt_ser(obj, state, true); + case T_DefineStmt: + return DefineStmt_ser(obj, state, true); + case T_AlterTableStmt: + return AlterTableStmt_ser(obj, state, true); + case T_ImportForeignSchemaStmt: + return ImportForeignSchemaStmt_ser(obj, state, true); + case T_Var: + return Var_ser(obj, state, true); + case T_SortGroupClause: + return SortGroupClause_ser(obj, state, true); + case T_CreateDomainStmt: + return CreateDomainStmt_ser(obj, state, true); + case T_TableSampleClause: + return TableSampleClause_ser(obj, state, true); + case T_CoalesceExpr: + return CoalesceExpr_ser(obj, state, true); + case T_RangeTblFunction: + return RangeTblFunction_ser(obj, state, true); + case T_NamedArgExpr: + return NamedArgExpr_ser(obj, state, true); + case T_Value: + return Value_ser(obj, state, true); + case T_AlterOwnerStmt: + return AlterOwnerStmt_ser(obj, state, true); + case T_SeqScan: + return Scan_ser(obj, state, true); + case T_DistinctExpr: + return OpExpr_ser(obj, state, true); + case T_NullIfExpr: + return OpExpr_ser(obj, state, true); + default: + /* + * This should be an ERROR, but it's too useful to be able to + * dump structures that _outNode only understands part of. + */ + elog(WARNING, "could not dump unrecognized node type: %d", + (int) nodeTag(obj)); + break; + } + return NULL; +} + +Jsonb *node_tree_to_jsonb(const void *obj, Oid fake_func, bool skip_location_from_node) +{ + Jsonb *tmp; + remove_fake_func = fake_func; + skip_location = skip_location_from_node; + tmp = JsonbValueToJsonb(node_to_jsonb(obj, NULL)); + remove_fake_func = 0; + return tmp; +} \ No newline at end of file From 95246e9d78d15c707f370ef93b2e94a4296071e5 Mon Sep 17 00:00:00 2001 From: Dmitry Maslyuk Date: Wed, 31 Aug 2016 16:23:07 +0300 Subject: [PATCH 3/3] Fix make check --- Makefile | 4 ++-- sr_plan.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 6e80955..3a3cf49 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS) else -subdir = contrib/intarray +subdir = contrib/sr_plan top_builddir = ../.. include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk @@ -23,4 +23,4 @@ endif genparser: # test -d sr_plan_env || - python gen_parser.py nodes.h `pg_config --includedir-server` \ No newline at end of file + python gen_parser.py nodes.h `pg_config --includedir-server` diff --git a/sr_plan.c b/sr_plan.c index a35dace..1155f40 100644 --- a/sr_plan.c +++ b/sr_plan.c @@ -260,7 +260,7 @@ void *replace_fake(void *node) } void _PG_init(void) { - elog(WARNING, "SP_Plan init"); + /* elog(WARNING, "SR_Plan init"); */ DefineCustomBoolVariable("sr_plan.write_mode", "Save all plans for all query.", NULL, @@ -277,7 +277,7 @@ void _PG_init(void) { } void _PG_fini(void) { - elog(WARNING, "SP_Plan finit"); + /* elog(WARNING, "SR_Plan finit"); */ planner_hook = NULL; post_parse_analyze_hook = NULL; }