WIP: Generic functions for Node types using generated metadata

Started by Andres Freundover 6 years ago14 messages
#1Andres Freund
andres@anarazel.de
1 attachment(s)

Hi,

There's been a lot of complaints over the years about how annoying it is
to keep the out/read/copy/equalfuncs.c functions in sync with the actual
underlying structs.

There've been various calls for automating their generation, but no
actual patches that I am aware of.

There also recently has been discussion about generating more efficient
memory layout for node trees that we know are read only (e.g. plan trees
inside the plancache), and about copying such trees more efficiently
(e.g. by having one big allocation, and then just adjusting pointers).

One way to approach this problem would be to to parse the type
definitions, and directly generate code for the various functions. But
that does mean that such a code-generator needs to be expanded for each
such functions.

An alternative approach is to have a parser of the node definitions that
doesn't generate code directly, but instead generates metadata. And then
use that metadata to write node aware functions. This seems more
promising to me.

In the attached, *very experimental WIP*, patch I've played around with
this approach. I have written a small C program that uses libclang
(more on that later) to parse relevant headers, and generate metadata
about node types.

Currently the generated metadata roughly looks like this:

#define TYPE_CAT_SCALAR (1 << 0) // FIXME: this isn't well named rn
#define TYPE_CAT_POINTER (1 << 1)
#define TYPE_CAT_UNION (1 << 2) // FIXME: unused
#define TYPE_CAT_INCOMPLETE (1 << 3)

#define KNOWN_TYPE_UNKNOWN 0
#define KNOWN_TYPE_STRING 1
#define KNOWN_TYPE_INT 2
#define KNOWN_TYPE_NODE 3
#define KNOWN_TYPE_BITMAPSET 4

typedef struct NodeTypeInfo
{
/* FIXME: intern me */
const char *structname;
int16 nelems;
int16 start_at;
int16 size;
} NodeTypeInfo;

typedef struct NodeTypeComponents
{
/* FIXME: intern me */
const char *fieldname;
/* FIXME: intern me */
const char *fieldtype;
int16 offset;
int16 size;
int16 flags;
int16 node_type_id;
int16 known_type_id;
} NodeTypeComponents;

NodeTypeInfo node_type_info[] = {
{0},
{.structname = "IndexInfo", .nelems = 22, .start_at = 2128, .size = sizeof(IndexInfo)},
...
{.structname = "Append", .nelems = 4, .start_at = 1878, .size = sizeof(Append)},
...

NodeTypeComponents node_type_components[] = {
...
{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Append, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
{.fieldname = "appendplans", .fieldtype = "struct List *", .offset = offsetof(struct Append, appendplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
{.fieldname = "first_partial_plan", .fieldtype = "int", .offset = offsetof(struct Append, first_partial_plan), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
{.fieldname = "part_prune_info", .fieldtype = "struct PartitionPruneInfo *", .offset = offsetof(struct Append, part_prune_info), .size = sizeof(struct PartitionPruneInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 53, .known_type_id = KNOWN_TYPE_UNKNOWN},
...

i.e. each node type is listed in node_type_info, indexed by the NodeTag
value. The fields building up the node are defined in
node_type_components. By including the size for Node structs, and
components, and by including the offset for components, we can write
generic routines accessing node trees.

In the attached I used this metadata to write a function that can
compute the amount of memory a node tree needs (without currently
considering memory allocator overhead). The function for doing so has a
pretty limited amount of type awareness - it needs to know about
strings, the various list types, value nodes and Bitmapset.

I'm fairly sure this metadata can also be used to write the other
currently existing node functions.

I *suspect* that it'll be quite OK performancewise, compared to bespoke
code, but I have *NOT* measured that.

The one set of fields this currently can not deal with is the various
arrays that we directly reference from nodes. For e.g.

typedef struct Sort
{
Plan plan;
int numCols; /* number of sort-key columns */
AttrNumber *sortColIdx; /* their indexes in the target list */
Oid *sortOperators; /* OIDs of operators to sort them by */
Oid *collations; /* OIDs of collations */
bool *nullsFirst; /* NULLS FIRST/LAST directions */
} Sort;

the generic code has no way of knowing that sortColIdx, sortOperators,
collations, nullsFirst are all numCols long arrays.

I can see various ways of dealing with that:

1) We could convert them all to lists, now that we have fast arbitrary
access. But that'd add a lot of indirection / separate allocations.

2) We could add annotations to the sourcecode, to declare that
association. That's probably not trivial, but wouldn't be that hard -
one disadvantage is that we probably couldn't use that declaration
for automated asserts etc.

3) We could introduce a few macros to create array type that include the
length of the members. That'd duplicate the lenght for each of those
arrays, but I have a bit of a hard time believing that that's a
meaningful enough overhead.

I'm thinking of a macro that'd be used like
ARRAY_FIELD(AttrNumber) *sortColIdx;
that'd generate code like
struct
{
size_t nmembers;
AttrNumber members[FLEXIBLE_ARRAY_MEMBER];
} *sortColIdx;

plus a set of macros (or perhaps inline functions + macros) to access
them.

With any of these we could add enough metadata for node type members to
be able to handle such arrays in a generic manner, rather than having to
write code for each of them.

With regards to using libclang for the parsing: I chose that because it
seemed the easiest to experiment with, compared to annotating all the
structs with enough metadata to be able to easily parse them from a perl
script. The node definitions are after all distributed over quite a few
headers.

I think it might even be the correct way forward, over inventing our own
mini-languages and writing ad-hoc parsers for those. It sure is easier
to understand plain C code, compared to having to understand various
embeded mini-languages consisting out of macros.

The obvious drawback is that it'd require more people to install
libclang - a significant imposition. I think it might be OK if we only
required it to be installed when changing node types (although it's not
necessarily trivial how to detect that node types haven't changed, if we
wanted to allow other code changes in the relevant headers), and stored
the generated code in the repository.

Alternatively we could annotate the code enough to be able to write our
own parser, or use some other C parser.

I don't really want to invest significantly more time into this without
first debating the general idea.

The attached patch really just is a fairly minimal prototype. It does
not:
- properly integrate into the buildsystem, to automatically re-generate
the node information when necessary - instead one has to
"make -C src/backend/catalog gennodes-run"
- solve the full problem (see discussion of referenced arrays above)
- actually use the metadata in a useful manner (there just is a function
that estimates node tree sizes, which is used for parse/plan trees)
- have clean code

One interesting - but less important - bit is that the patch currently
has the declared node type id available for node members, e.g:

typedef struct FieldStore
{
Expr xpr;
Expr *arg; /* input tuple value */
List *newvals; /* new value(s) for field(s) */
List *fieldnums; /* integer list of field attnums */
Oid resulttype; /* type of result (same as type of arg) */
/* Like RowExpr, we deliberately omit a typmod and collation here */
} FieldStore;

but we cannot actually rely on arg actually pointing to a node of type
Expr* - it'll always point to a "subclass". Obviously we can handle
that by dispatching using nodeTag(arg), but it'd be more efficient if we
didn't need that. And we also loose some error checking due to that.

I wonder if we could collect enough metadata to determine which
potential subclasses a node type has. And then dispatch more efficiently
when only one, and assert that it's a legal subclass for the other
cases.

Greetings,

Andres Freund

Attachments:

gennode.difftext/x-diff; charset=us-asciiDownload
diff --git i/src/backend/catalog/Makefile w/src/backend/catalog/Makefile
index 8bece078dd1..91766b76559 100644
--- i/src/backend/catalog/Makefile
+++ w/src/backend/catalog/Makefile
@@ -124,3 +124,10 @@ clean:
 
 maintainer-clean: clean
 	rm -f bki-stamp $(BKIFILES) $(GENERATED_HEADERS)
+
+gennodes.o: override CFLAGS += $(LLVM_CFLAGS)
+gennodes.o: override CPPFLAGS += $(LLVM_CPPFLAGS)
+gennodes: override LDFLAGS += -lclang
+
+gennodes-run: gennodes
+	./gennodes $(top_srcdir)/src/include/nodes/primnodes.h $(CPPFLAGS)  -include postgres.h  -include $(top_srcdir)/src/include/nodes/pathnodes.h -include $(top_srcdir)/src/include/nodes/plannodes.h -include $(top_srcdir)/src/include/nodes/execnodes.h -include $(top_srcdir)/src/include/nodes/memnodes.h -include $(top_srcdir)/src/include/nodes/value.h -include $(top_srcdir)/src/include/nodes/pg_list.h -include $(top_srcdir)/src/include/nodes/extensible.h -include $(top_srcdir)/src/include/nodes/parsenodes.h -include $(top_srcdir)/src/include/nodes/replnodes.h  -include $(top_srcdir)/src/include/nodes/value.h -I /usr/include/clang/7/include/ > $(top_srcdir)/src/include/nodes/nodeinfo.h
diff --git i/src/backend/catalog/gennodes.c w/src/backend/catalog/gennodes.c
new file mode 100644
index 00000000000..cc49480cd63
--- /dev/null
+++ w/src/backend/catalog/gennodes.c
@@ -0,0 +1,448 @@
+#include "postgres_fe.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <clang-c/Index.h>
+
+/* don't want to use pg_list.h here, as it's a node type itself */
+typedef struct arr
+{
+	size_t nelems;
+	size_t space;
+	char **elems;
+}  arr;
+
+typedef struct CollectInfo
+{
+	arr interesting_typedefs;
+	arr interesting_types;
+	arr type_strings;
+	arr component_strings;
+
+	CXType current_struct_type;
+	bool first;
+} CollectInfo;
+
+
+static void
+arr_resize(arr *arr, size_t newsize)
+{
+	if (arr->space == 0)
+	{
+		arr->space = newsize;
+		arr->elems = calloc(sizeof(void *), newsize);
+	}
+	else
+	{
+		arr->elems = realloc(arr->elems, sizeof(void *) * newsize);
+
+		if (arr->space < newsize)
+			memset(&arr->elems[arr->space],
+				   0,
+				   newsize - arr->space);
+		arr->space = newsize;
+		if (arr->space < arr->nelems)
+			arr->nelems = arr->space;
+	}
+}
+
+static void
+arr_append(arr *arr, void *el)
+{
+	if (arr->space == 0)
+		arr_resize(arr, 16);
+	else if (arr->nelems == arr->space)
+		arr_resize(arr, arr->space * 2);
+
+	arr->elems[arr->nelems++] = el;
+}
+
+/*
+ * FIXME: this is used for lookups in too many places - need something better
+ * than O(N).
+ */
+static int
+string_in_arr(arr *arr, const char *match)
+{
+	for (int i = 0; i < arr->nelems; i++)
+	{
+		const char *el = (const char *) arr->elems[i];
+
+		if (el == NULL && match != NULL)
+			continue;
+
+		if (strcmp(el, match) == 0)
+			return i;
+	}
+
+	return -1;
+}
+
+/* visit elements of the NodeTag enum, to collect the names of all node types */
+static enum CXChildVisitResult
+find_NodeTagElems_vis(CXCursor cursor, CXCursor parent, CXClientData client_data)
+{
+	if (clang_getCursorKind(cursor) == CXCursor_EnumConstantDecl)
+	{
+		CollectInfo *collect_info = (CollectInfo *) client_data;
+		const char *name = clang_getCString(clang_getCursorSpelling(cursor));
+
+		if (strncmp(name, "T_", 2) != 0)
+		{
+			fprintf(stderr, "unexpected name: %s\n", name);
+			exit(-1);
+		}
+		else
+		{
+			char buf[512];
+			snprintf(buf, sizeof(buf), "%s", (name + 2));
+			arr_append(&collect_info->interesting_typedefs, strdup(buf));
+		}
+	}
+
+	return CXChildVisit_Recurse;
+}
+
+/* find the NodeTag enum, and collect elements using find_NodeTagElems_vis */
+static enum CXChildVisitResult
+find_NodeTag_vis(CXCursor cursor, CXCursor parent, CXClientData client_data)
+{
+	if (clang_getCursorKind(cursor) == CXCursor_EnumDecl)
+	{
+		const char *spelling = clang_getCString(clang_getCursorSpelling(cursor));
+
+		if (strcmp(spelling, "NodeTag") != 0)
+			return CXChildVisit_Recurse;
+
+		clang_visitChildren(
+			cursor,
+			find_NodeTagElems_vis,
+			client_data);
+
+		return CXChildVisit_Break;
+	}
+	return CXChildVisit_Recurse;
+}
+
+/* FIXME: The generated code would be more readable if we had these  | ed in the output */
+#define TYPE_CAT_SCALAR (1 << 0)
+#define TYPE_CAT_POINTER (1 << 1)
+#define TYPE_CAT_STRING (1 << 2)
+#define TYPE_CAT_UNION (1 << 3)
+#define TYPE_CAT_INCOMPLETE (1 << 4)
+
+/* collect information about the elements of Node style struct members */
+static enum CXVisitorResult
+find_StructFields_vis(CXCursor cursor, CXClientData client_data)
+{
+	CollectInfo *collect_info = (CollectInfo *) client_data;
+	const char *structname = clang_getCString(clang_getTypeSpelling(collect_info->current_struct_type));
+	const char *fieldname = clang_getCString(clang_getCursorSpelling(cursor));
+	CXType fieldtype = clang_getCanonicalType(clang_getCursorType(cursor));
+	const char *fieldtypename =
+		clang_getCString(clang_getTypeSpelling(fieldtype));
+
+	int16 node_type_id = -1;
+	char *known_type_id = "KNOWN_TYPE_UNKNOWN";
+	char *s;
+	char *flags = NULL;
+
+	if (fieldtype.kind == CXType_Pointer)
+	{
+		CXType pointee_type = clang_getCanonicalType(clang_getPointeeType(fieldtype));
+		const char *pointee_type_name =
+			clang_getCString(clang_getTypeSpelling(pointee_type));
+		enum CXTypeKind kind = pointee_type.kind;
+
+		node_type_id = string_in_arr(&collect_info->interesting_types, pointee_type_name);
+
+		if (flags)
+			flags = psprintf("%s | TYPE_CAT_POINTER", flags);
+		else
+			flags = "TYPE_CAT_POINTER";
+
+		if (kind == CXType_Char_S || kind == CXType_SChar || kind == CXType_Char_U || kind == CXType_UChar)
+			known_type_id = "KNOWN_TYPE_STRING";
+		else if (kind == CXType_UShort || kind == CXType_UInt ||
+				 kind ==  CXType_ULong || kind ==  CXType_ULongLong ||
+				 kind == CXType_UInt128 ||
+				 kind == CXType_Short || kind == CXType_Int ||
+				 kind ==  CXType_Long || kind ==  CXType_LongLong ||
+				 kind == CXType_Int128)
+			known_type_id = "KNOWN_TYPE_INT";
+		else if (strcmp(fieldtypename, "struct Bitmapset *") == 0)
+			known_type_id = "KNOWN_TYPE_BITMAPSET";
+		else if (strcmp(fieldtypename, "struct Node *") == 0)
+			known_type_id = "KNOWN_TYPE_NODE";
+	}
+	else
+	{
+		node_type_id = string_in_arr(&collect_info->interesting_types, fieldtypename);
+		if (flags)
+			flags = psprintf("%s | TYPE_CAT_SCALAR", flags);
+		else
+			flags = "TYPE_CAT_SCALAR";
+	}
+
+	/* can't measure size for incomplete types (e.g. variable length arrays at the end of a struct) */
+	/*
+	 * FIXME: need a way to more sustainably build strings - StringInfo is
+	 * backend only however. Use pqexpbuffer?
+	 */
+	if (fieldtype.kind == CXType_IncompleteArray)
+	{
+		if (flags)
+			flags = psprintf("%s | TYPE_CAT_INCOMPLETE", flags);
+		else
+			flags = "TYPE_CAT_INCOMPLETE";
+
+		s = psprintf("{.fieldname = \"%s\", .fieldtype = \"%s\", .offset = offsetof(%s, %s), .size = -1, .flags = %s, .node_type_id = %d, .known_type_id = %s}",
+					 fieldname,
+					 fieldtypename,
+					 structname, /* offsetof */
+					 fieldname, /* offsetof */
+					 flags,
+					 node_type_id,
+					 known_type_id);
+	}
+	else
+	{
+		s = psprintf("{.fieldname = \"%s\", .fieldtype = \"%s\", .offset = offsetof(%s, %s), .size = sizeof(%s), .flags = %s, .node_type_id = %d, .known_type_id = %s}",
+					 fieldname,
+					 fieldtypename,
+					 structname, /* offsetof */
+					 fieldname, /* offsetof */
+					 fieldtypename,
+					 flags,
+					 node_type_id,
+					 known_type_id);
+	}
+
+	arr_append(&collect_info->component_strings, s);
+	return CXVisit_Continue;
+}
+
+/*
+ * Collect the names of all the structs that "implement" node types (those
+ * names have previously been collected with find_NodeTag_vis). As we
+ * sometimes have forward declarations, we need to use a canonicalized name,
+ * and it's far easier to always use the underlying struct names, than somehow
+ * go the other way.
+ */
+static enum CXChildVisitResult
+find_NodeStructs_vis(CXCursor cursor, CXCursor parent, CXClientData client_data)
+{
+	/*
+	 * We'll reach each struct type twice - once for the typedef, and once for
+	 * the struct itself. We only check typedef, including its name, because
+	 * that's what needs to correspond to the NodeTag names.
+	 */
+	if (clang_getCursorKind(cursor) == CXCursor_TypedefDecl)
+	{
+		const char *spelling =
+			clang_getCString(clang_getTypeSpelling(clang_getCursorType(cursor)));
+		CollectInfo *collect_info = (CollectInfo *) client_data;
+		int type_pos = string_in_arr(&collect_info->interesting_typedefs, spelling);
+
+		if (type_pos == -1)
+			return CXChildVisit_Continue;
+
+		collect_info->interesting_types.elems[type_pos] = (void *)
+			clang_getCString(clang_getTypeSpelling(clang_getCanonicalType(clang_getCursorType(cursor))));
+
+		return CXChildVisit_Continue;
+	}
+	return CXChildVisit_Recurse;
+}
+
+/*
+ * Collect the definition of all node structs. This is done separately from
+ * collecting the struct names (in find_NodeStructs_vis), because we need to
+ * identify whether struct members are node types themselves, for which we
+ * need their canonical names.
+ */
+static enum CXChildVisitResult
+find_NodeStructDefs_vis(CXCursor cursor, CXCursor parent, CXClientData client_data)
+{
+	/*
+	 * We'll reach each struct type twice - once for the typedef, and once for
+	 * the struct. Only check one.  XXX: Perhaps it'd be better to check the
+	 * name of the typedef? That's what makeNode() etc effectively use?
+	 */
+	if (clang_getCursorKind(cursor) == CXCursor_TypedefDecl)
+	{
+		const char *spelling =
+			clang_getCString(clang_getTypeSpelling(clang_getCursorType(cursor)));
+		CollectInfo *collect_info = (CollectInfo *) client_data;
+		size_t components_at_start;
+		char *s;
+		int type_pos = string_in_arr(&collect_info->interesting_typedefs, spelling);
+
+		if (type_pos == -1)
+			return CXChildVisit_Continue;
+
+		collect_info->first = true;
+		collect_info->current_struct_type = clang_getCanonicalType(clang_getCursorType(cursor));
+
+		components_at_start = collect_info->component_strings.nelems;
+
+		clang_Type_visitFields(
+			collect_info->current_struct_type,
+			find_StructFields_vis,
+			collect_info);
+
+		if (clang_Type_getSizeOf(collect_info->current_struct_type) == CXTypeLayoutError_Incomplete)
+		{
+			s = psprintf("{.structname = \"%s\", .nelems = %zd, .start_at = %zd, .size = -1}",
+						 spelling,
+						 collect_info->component_strings.nelems - components_at_start,
+						 components_at_start);
+		}
+		else
+		{
+			s = psprintf("{.structname = \"%s\", .nelems = %zd, .start_at = %zd, .size = sizeof(%s)}",
+						 spelling,
+						 collect_info->component_strings.nelems - components_at_start,
+						 components_at_start,
+						 spelling);
+		}
+		collect_info->type_strings.elems[type_pos] = s;
+		//arr_append(&print->type_strings, s);
+		return CXChildVisit_Continue;
+	}
+	return CXChildVisit_Recurse;
+}
+
+int main(int argc, char **argv)
+{
+	CXCursor cursor;
+	bool first;
+	CollectInfo collect_info = {0};
+	CXIndex index;
+	CXTranslationUnit unit;
+
+	index = clang_createIndex(0, 1);
+
+	unit = clang_parseTranslationUnit(
+		index,
+		argv[1], (const char * const *) argv + 2, argc - 2,
+		NULL, 0,
+		CXTranslationUnit_None);
+
+	if (unit == NULL)
+	{
+		fprintf(stderr, "Unable to parse translation unit. \n");
+		/* FIXME: display error */
+		exit(-1);
+	}
+
+	cursor = clang_getTranslationUnitCursor(unit);
+
+	/* first collect elements of NodeTag, to find which types needs support */
+	clang_visitChildren(
+		cursor,
+		find_NodeTag_vis,
+		&collect_info);
+
+	/* find the underlying types for the NodeTag elements where possible */
+	arr_resize(&collect_info.interesting_types, collect_info.interesting_typedefs.nelems);
+	collect_info.interesting_types.nelems = collect_info.interesting_typedefs.nelems;
+	clang_visitChildren(
+		cursor,
+		find_NodeStructs_vis,
+		&collect_info);
+
+	/* then traverse again, to find the structs definitions for the types above */
+	arr_resize(&collect_info.type_strings, collect_info.interesting_typedefs.nelems);
+	collect_info.type_strings.nelems = collect_info.interesting_typedefs.nelems;
+	clang_visitChildren(
+		cursor,
+		find_NodeStructDefs_vis,
+		&collect_info);
+
+	fprintf(stdout,
+"\n"
+"#include \"nodes/primnodes.h\"\n"
+"#include \"nodes/pathnodes.h\"\n"
+"#include \"nodes/plannodes.h\"\n"
+"#include \"nodes/execnodes.h\"\n"
+"#include \"nodes/memnodes.h\"\n"
+"#include \"nodes/pg_list.h\"\n"
+"#include \"nodes/extensible.h\"\n"
+"#include \"nodes/parsenodes.h\"\n"
+"#include \"nodes/replnodes.h\"\n"
+"#include \"nodes/value.h\"\n"
+"\n"
+"#define TYPE_CAT_SCALAR (1 << 0)\n"
+"#define TYPE_CAT_POINTER (1 << 1)\n"
+"#define TYPE_CAT_UNION (1 << 2)\n"
+"#define TYPE_CAT_INCOMPLETE (1 << 3)\n"
+"\n"
+"#define KNOWN_TYPE_UNKNOWN 0\n"
+"#define KNOWN_TYPE_STRING 1\n"
+"#define KNOWN_TYPE_INT 2\n"
+"#define KNOWN_TYPE_NODE 3\n"
+"#define KNOWN_TYPE_BITMAPSET 4\n"
+"\n"
+"typedef struct NodeTypeInfo\n"
+"{\n"
+"	/* FIXME: intern me */\n"
+"	const char *structname;\n"
+"	int16 nelems;\n"
+"	int16 start_at;\n"
+"	int16 size;\n"
+"} NodeTypeInfo;\n"
+"\n"
+"typedef struct NodeTypeComponents\n"
+"{\n"
+"	/* FIXME: intern me */\n"
+"	const char *fieldname;\n"
+"	/* FIXME: intern me */\n"
+"	const char *fieldtype;\n"
+"	int16 offset;\n"
+"	int16 size;\n"
+"	int16 flags;\n"
+"	int16 node_type_id;\n"
+"	int16 known_type_id;\n"
+"} NodeTypeComponents;\n"
+"\n\n");
+
+	first = true;
+	fprintf(stdout, "NodeTypeInfo node_type_info[]  = {\n");
+	for (size_t i = 0; i < collect_info.type_strings.nelems; i++)
+	{
+		const char *s = collect_info.type_strings.elems[i];
+
+		if (!first)
+			fprintf(stdout, ",\n");
+		else
+			first = false;
+
+		if (s)
+			fprintf(stdout, "\t%s", s);
+		else
+			fprintf(stdout, "\t{0}");
+	}
+	fprintf(stdout, "\n};\n\n");
+
+	first = true;
+	fprintf(stdout, "NodeTypeComponents node_type_components[] = {\n");
+	for (size_t i = 0; i < collect_info.component_strings.nelems; i++)
+	{
+		const char *s = collect_info.component_strings.elems[i];
+
+		if (!first)
+			fprintf(stdout, ",\n");
+		else
+			first = false;
+
+		fprintf(stdout, "\t%s", s);
+	}
+	fprintf(stdout, "\n};\n\n");
+
+	clang_disposeTranslationUnit(unit);
+	clang_disposeIndex(index);
+}
diff --git i/src/backend/nodes/Makefile w/src/backend/nodes/Makefile
index 0b1e98c0190..aced101f953 100644
--- i/src/backend/nodes/Makefile
+++ w/src/backend/nodes/Makefile
@@ -12,7 +12,7 @@ subdir = src/backend/nodes
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
-OBJS = nodeFuncs.o nodes.o list.o bitmapset.o tidbitmap.o \
+OBJS = newfuncs.o nodeFuncs.o nodes.o list.o bitmapset.o tidbitmap.o \
        copyfuncs.o equalfuncs.o extensible.o makefuncs.o \
        outfuncs.o readfuncs.o print.o read.o params.o value.o
 
diff --git i/src/backend/nodes/newfuncs.c w/src/backend/nodes/newfuncs.c
new file mode 100644
index 00000000000..aa72c205d04
--- /dev/null
+++ w/src/backend/nodes/newfuncs.c
@@ -0,0 +1,229 @@
+#include "postgres.h"
+
+#include "nodes/nodeinfo.h"
+#include "miscadmin.h"
+
+typedef struct NodeStat
+{
+	size_t node_size;
+	size_t element_size;
+	size_t variable_size; /* currently doesn't include overhead */
+	size_t padding_size;
+} NodeStat;
+
+static void
+node_stat_add(NodeStat *into, const NodeStat *from)
+{
+	into->node_size += from->node_size;
+	into->element_size += from->element_size;
+	into->variable_size += from->variable_size;
+	into->padding_size += from->padding_size;
+}
+
+static NodeStat
+measure_node_size_rec(Node *node, NodeTypeInfo *type_info)
+{
+	NodeStat sz = {0};
+	NodeTag tag = nodeTag(node);
+	NodeStat totalsubsz = {0};
+
+	sz.node_size += type_info->size;
+
+	check_stack_depth();
+
+	for (int i = 0; i < type_info->nelems; i++)
+	{
+		NodeTypeComponents *component_info = &node_type_components[type_info->start_at + i];
+
+		sz.element_size += component_info->size;
+
+		if (component_info->flags & TYPE_CAT_POINTER)
+		{
+			char *ptr = *(char **) ((char *) node + component_info->offset);
+
+			if (ptr != NULL)
+			{
+				if (component_info->node_type_id != -1)
+				{
+					Node *sub = (Node *) ptr;
+					NodeTag subtag = nodeTag(sub);
+					NodeTypeInfo *sub_type_info;
+					NodeStat subsz;
+
+					/*
+					 * The declared node type might differ from the actual
+					 * node type, because we frequently embed one node type in
+					 * another in a form of "subclassing".
+					 *
+					 * It could be worth restricting this to types actually
+					 * embedded, but it's not clear that that's worth it.
+					 */
+					if (component_info->node_type_id != subtag)
+					{
+#if 0
+						ereport(WARNING,
+								(errmsg("node type of %s->%s differs between declared type %s and actual type %s",
+										type_info->structname,
+										component_info->fieldname,
+										component_info->fieldtype,
+										node_type_info[subtag].structname),
+								 errhidestmt(true),
+								 errhidecontext(true)));
+#endif
+					}
+					sub_type_info = &node_type_info[subtag];
+
+					subsz = measure_node_size_rec(sub, sub_type_info);
+					node_stat_add(&totalsubsz, &subsz);
+				}
+				else if (component_info->known_type_id == KNOWN_TYPE_NODE)
+				{
+					Node *sub = (Node *) ptr;
+					NodeTypeInfo *sub_type_info;
+					NodeStat subsz;
+
+					sub_type_info = &node_type_info[nodeTag(sub)];
+					subsz = measure_node_size_rec(sub, sub_type_info);
+					node_stat_add(&totalsubsz, &subsz);
+				}
+				else if (component_info->known_type_id == KNOWN_TYPE_STRING)
+					totalsubsz.variable_size += strlen(ptr);
+				else if (component_info->known_type_id == KNOWN_TYPE_BITMAPSET)
+				{
+					Bitmapset *set = (Bitmapset *) ptr;
+
+					totalsubsz.variable_size += offsetof(Bitmapset, words) + set->nwords * BITS_PER_BITMAPWORD;
+				}
+				else if (tag != T_List && tag != T_OidList && tag != T_IntList)
+				{
+					ereport(WARNING,
+							(errmsg("don't know how to handle pointer field %s->%s of type \"%s\"",
+									type_info->structname,
+									component_info->fieldname,
+									component_info->fieldtype),
+							 errhidestmt(true),
+							 errhidecontext(true)));
+				}
+			}
+		}
+		else
+		{
+			/*
+			 * In contrast to node types pointed to, as handled above, we may
+			 * not check for the nodeTag() of the actual data: For one, we
+			 * frequently embed "superclasses" in "subclasses" - which means
+			 * that the nodeTag() will return the value from the subclass, but
+			 * we actually want to measure the superclass. For another, if the
+			 * embedded element were to differ from the actual type, the whole
+			 * layout of the struct would be broken.
+			 */
+			if (component_info->node_type_id != -1)
+			{
+				Node *sub_node = (Node *) ((char *) node + component_info->offset);
+				NodeTypeInfo *sub_type_info;
+				NodeStat subsz;
+
+				sub_type_info = &node_type_info[component_info->node_type_id];
+				subsz = measure_node_size_rec(sub_node, sub_type_info);
+
+				/* included in this node's size already */
+				subsz.node_size -= component_info->size;
+
+				node_stat_add(&totalsubsz, &subsz);
+			}
+		}
+	}
+
+	switch (tag)
+	{
+		case T_List:
+			{
+				List *list = (List *) node;
+				ListCell *lc;
+
+				foreach(lc, list)
+				{
+					Node *list_sub = (Node *) lfirst(lc);
+
+					if (list_sub != NULL)
+					{
+						NodeStat subsz;
+
+						subsz = measure_node_size_rec(list_sub, &node_type_info[nodeTag(list_sub)]);
+
+						node_stat_add(&totalsubsz, &subsz);
+					}
+				}
+			}
+			/* fallthrough */
+
+		case T_OidList:
+		case T_IntList:
+			{
+				List *list = (List *) node;
+
+				sz.variable_size += sizeof(ListCell) * list->max_length;
+
+				break;
+			}
+
+		case T_Float:
+		case T_String:
+		case T_BitString:
+			{
+				Value *val = (Value *) node;
+
+				if (val->val.str)
+					sz.variable_size += strlen(val->val.str);
+				break;
+			}
+
+		default:
+			break;
+	}
+
+#if 0
+	elog(WARNING, "size for %s (%u) is %zu (self: %zu, varself: %zu, elems: %zu, sub: %zu)",
+		 type_info->structname ? type_info->structname : "unknown",
+		 nodeTag(node),
+		 sz + varsz + subsz,
+		 sz,
+		 varsz,
+		 elemsz,
+		 subsz);
+#endif
+
+	sz.padding_size = sz.node_size - sz.element_size;
+	Assert((int64) sz.node_size - (int64) sz.element_size >= 0);
+
+	/* FIXME: should we compute this differently? */
+	node_stat_add(&sz, &totalsubsz);
+
+	return sz;
+}
+
+NodeStat
+measure_node_size(Node *node)
+{
+	NodeTypeInfo *node_info;
+
+	node_info = &node_type_info[nodeTag(node)];
+
+	return measure_node_size_rec(node, node_info);
+}
+
+void
+log_node_size(const char *context, Node *node)
+{
+	NodeStat sz = measure_node_size(node);
+
+	ereport(LOG, (errmsg("%s is %zu b (node: %zu b, elements: %zu b, padding: %zu b, var: %zu b)",
+						 context,
+						 sz.node_size + sz.variable_size,
+						 sz.node_size,
+						 sz.element_size,
+						 sz.padding_size,
+						 sz.variable_size),
+				  errhidestmt(true),
+				  errhidecontext(true)));
+}
diff --git i/src/backend/optimizer/plan/planner.c w/src/backend/optimizer/plan/planner.c
index 17c5f086fbf..f90a4ba9c39 100644
--- i/src/backend/optimizer/plan/planner.c
+++ w/src/backend/optimizer/plan/planner.c
@@ -560,6 +560,9 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
 	if (glob->partition_directory != NULL)
 		DestroyPartitionDirectory(glob->partition_directory);
 
+	log_node_size("parse tree", (Node *) parse);
+	log_node_size("plan tree", (Node *) result);
+
 	return result;
 }
 
diff --git i/src/include/nodes/nodeinfo.h w/src/include/nodes/nodeinfo.h
new file mode 100644
index 00000000000..86e3d94b79c
--- /dev/null
+++ w/src/include/nodes/nodeinfo.h
@@ -0,0 +1,3255 @@
+
+#include "nodes/primnodes.h"
+#include "nodes/pathnodes.h"
+#include "nodes/plannodes.h"
+#include "nodes/execnodes.h"
+#include "nodes/memnodes.h"
+#include "nodes/pg_list.h"
+#include "nodes/extensible.h"
+#include "nodes/parsenodes.h"
+#include "nodes/replnodes.h"
+#include "nodes/value.h"
+
+#define TYPE_CAT_SCALAR (1 << 0)
+#define TYPE_CAT_POINTER (1 << 1)
+#define TYPE_CAT_UNION (1 << 2)
+#define TYPE_CAT_INCOMPLETE (1 << 3)
+
+#define KNOWN_TYPE_UNKNOWN 0
+#define KNOWN_TYPE_STRING 1
+#define KNOWN_TYPE_INT 2
+#define KNOWN_TYPE_NODE 3
+#define KNOWN_TYPE_BITMAPSET 4
+
+typedef struct NodeTypeInfo
+{
+	/* FIXME: intern me */
+	const char *structname;
+	int16 nelems;
+	int16 start_at;
+	int16 size;
+} NodeTypeInfo;
+
+typedef struct NodeTypeComponents
+{
+	/* FIXME: intern me */
+	const char *fieldname;
+	/* FIXME: intern me */
+	const char *fieldtype;
+	int16 offset;
+	int16 size;
+	int16 flags;
+	int16 node_type_id;
+	int16 known_type_id;
+} NodeTypeComponents;
+
+
+NodeTypeInfo node_type_info[]  = {
+	{0},
+	{.structname = "IndexInfo", .nelems = 22, .start_at = 2128, .size = sizeof(IndexInfo)},
+	{.structname = "ExprContext", .nelems = 16, .start_at = 2150, .size = sizeof(ExprContext)},
+	{.structname = "ProjectionInfo", .nelems = 3, .start_at = 2174, .size = sizeof(ProjectionInfo)},
+	{.structname = "JunkFilter", .nelems = 6, .start_at = 2177, .size = sizeof(JunkFilter)},
+	{.structname = "OnConflictSetState", .nelems = 5, .start_at = 2183, .size = sizeof(OnConflictSetState)},
+	{.structname = "ResultRelInfo", .nelems = 30, .start_at = 2188, .size = sizeof(ResultRelInfo)},
+	{.structname = "EState", .nelems = 40, .start_at = 2218, .size = sizeof(EState)},
+	{.structname = "TupleTableSlot", .nelems = 10, .start_at = 2101, .size = sizeof(TupleTableSlot)},
+	{.structname = "Plan", .nelems = 15, .start_at = 1838, .size = sizeof(Plan)},
+	{.structname = "Result", .nelems = 2, .start_at = 1853, .size = sizeof(Result)},
+	{.structname = "ProjectSet", .nelems = 1, .start_at = 1855, .size = sizeof(ProjectSet)},
+	{.structname = "ModifyTable", .nelems = 22, .start_at = 1856, .size = sizeof(ModifyTable)},
+	{.structname = "Append", .nelems = 4, .start_at = 1878, .size = sizeof(Append)},
+	{.structname = "MergeAppend", .nelems = 8, .start_at = 1882, .size = sizeof(MergeAppend)},
+	{.structname = "RecursiveUnion", .nelems = 7, .start_at = 1890, .size = sizeof(RecursiveUnion)},
+	{.structname = "BitmapAnd", .nelems = 2, .start_at = 1897, .size = sizeof(BitmapAnd)},
+	{.structname = "BitmapOr", .nelems = 3, .start_at = 1899, .size = sizeof(BitmapOr)},
+	{.structname = "Scan", .nelems = 2, .start_at = 1902, .size = sizeof(Scan)},
+	{.structname = "SeqScan", .nelems = 2, .start_at = 1904, .size = sizeof(SeqScan)},
+	{.structname = "SampleScan", .nelems = 2, .start_at = 1906, .size = sizeof(SampleScan)},
+	{.structname = "IndexScan", .nelems = 8, .start_at = 1908, .size = sizeof(IndexScan)},
+	{.structname = "IndexOnlyScan", .nelems = 6, .start_at = 1916, .size = sizeof(IndexOnlyScan)},
+	{.structname = "BitmapIndexScan", .nelems = 5, .start_at = 1922, .size = sizeof(BitmapIndexScan)},
+	{.structname = "BitmapHeapScan", .nelems = 2, .start_at = 1927, .size = sizeof(BitmapHeapScan)},
+	{.structname = "TidScan", .nelems = 2, .start_at = 1929, .size = sizeof(TidScan)},
+	{.structname = "SubqueryScan", .nelems = 2, .start_at = 1931, .size = sizeof(SubqueryScan)},
+	{.structname = "FunctionScan", .nelems = 3, .start_at = 1933, .size = sizeof(FunctionScan)},
+	{.structname = "ValuesScan", .nelems = 2, .start_at = 1936, .size = sizeof(ValuesScan)},
+	{.structname = "TableFuncScan", .nelems = 2, .start_at = 1938, .size = sizeof(TableFuncScan)},
+	{.structname = "CteScan", .nelems = 3, .start_at = 1940, .size = sizeof(CteScan)},
+	{.structname = "NamedTuplestoreScan", .nelems = 2, .start_at = 1943, .size = sizeof(NamedTuplestoreScan)},
+	{.structname = "WorkTableScan", .nelems = 2, .start_at = 1945, .size = sizeof(WorkTableScan)},
+	{.structname = "ForeignScan", .nelems = 9, .start_at = 1947, .size = sizeof(ForeignScan)},
+	{.structname = "CustomScan", .nelems = 8, .start_at = 1956, .size = sizeof(CustomScan)},
+	{.structname = "Join", .nelems = 4, .start_at = 1964, .size = sizeof(Join)},
+	{.structname = "NestLoop", .nelems = 2, .start_at = 1968, .size = sizeof(NestLoop)},
+	{.structname = "MergeJoin", .nelems = 7, .start_at = 1973, .size = sizeof(MergeJoin)},
+	{.structname = "HashJoin", .nelems = 5, .start_at = 1980, .size = sizeof(HashJoin)},
+	{.structname = "Material", .nelems = 1, .start_at = 1985, .size = sizeof(Material)},
+	{.structname = "Sort", .nelems = 6, .start_at = 1986, .size = sizeof(Sort)},
+	{.structname = "Group", .nelems = 5, .start_at = 1992, .size = sizeof(Group)},
+	{.structname = "Agg", .nelems = 11, .start_at = 1997, .size = sizeof(Agg)},
+	{.structname = "WindowAgg", .nelems = 18, .start_at = 2008, .size = sizeof(WindowAgg)},
+	{.structname = "Unique", .nelems = 5, .start_at = 2026, .size = sizeof(Unique)},
+	{.structname = "Gather", .nelems = 6, .start_at = 2031, .size = sizeof(Gather)},
+	{.structname = "GatherMerge", .nelems = 9, .start_at = 2037, .size = sizeof(GatherMerge)},
+	{.structname = "Hash", .nelems = 6, .start_at = 2046, .size = sizeof(Hash)},
+	{.structname = "SetOp", .nelems = 10, .start_at = 2052, .size = sizeof(SetOp)},
+	{.structname = "LockRows", .nelems = 3, .start_at = 2062, .size = sizeof(LockRows)},
+	{.structname = "Limit", .nelems = 3, .start_at = 2065, .size = sizeof(Limit)},
+	{.structname = "NestLoopParam", .nelems = 3, .start_at = 1970, .size = sizeof(NestLoopParam)},
+	{.structname = "PlanRowMark", .nelems = 9, .start_at = 2068, .size = sizeof(PlanRowMark)},
+	{.structname = "PartitionPruneInfo", .nelems = 3, .start_at = 2077, .size = sizeof(PartitionPruneInfo)},
+	{.structname = "PartitionedRelPruneInfo", .nelems = 10, .start_at = 2080, .size = sizeof(PartitionedRelPruneInfo)},
+	{.structname = "PartitionPruneStepOp", .nelems = 5, .start_at = 2090, .size = sizeof(PartitionPruneStepOp)},
+	{.structname = "PartitionPruneStepCombine", .nelems = 3, .start_at = 2095, .size = sizeof(PartitionPruneStepCombine)},
+	{.structname = "PlanInvalItem", .nelems = 3, .start_at = 2098, .size = sizeof(PlanInvalItem)},
+	{.structname = "PlanState", .nelems = 31, .start_at = 2314, .size = sizeof(PlanState)},
+	{.structname = "ResultState", .nelems = 4, .start_at = 2345, .size = sizeof(ResultState)},
+	{.structname = "ProjectSetState", .nelems = 6, .start_at = 2349, .size = sizeof(ProjectSetState)},
+	{.structname = "ModifyTableState", .nelems = 19, .start_at = 2355, .size = sizeof(ModifyTableState)},
+	{.structname = "AppendState", .nelems = 10, .start_at = 2374, .size = sizeof(AppendState)},
+	{.structname = "MergeAppendState", .nelems = 11, .start_at = 2384, .size = sizeof(MergeAppendState)},
+	{.structname = "RecursiveUnionState", .nelems = 10, .start_at = 2395, .size = sizeof(RecursiveUnionState)},
+	{.structname = "BitmapAndState", .nelems = 3, .start_at = 2405, .size = sizeof(BitmapAndState)},
+	{.structname = "BitmapOrState", .nelems = 3, .start_at = 2408, .size = sizeof(BitmapOrState)},
+	{.structname = "ScanState", .nelems = 4, .start_at = 2411, .size = sizeof(ScanState)},
+	{.structname = "SeqScanState", .nelems = 2, .start_at = 2415, .size = sizeof(SeqScanState)},
+	{.structname = "SampleScanState", .nelems = 12, .start_at = 2417, .size = sizeof(SampleScanState)},
+	{.structname = "IndexScanState", .nelems = 21, .start_at = 2429, .size = sizeof(IndexScanState)},
+	{.structname = "IndexOnlyScanState", .nelems = 15, .start_at = 2450, .size = sizeof(IndexOnlyScanState)},
+	{.structname = "BitmapIndexScanState", .nelems = 12, .start_at = 2465, .size = sizeof(BitmapIndexScanState)},
+	{.structname = "BitmapHeapScanState", .nelems = 20, .start_at = 2477, .size = sizeof(BitmapHeapScanState)},
+	{.structname = "TidScanState", .nelems = 7, .start_at = 2497, .size = sizeof(TidScanState)},
+	{.structname = "SubqueryScanState", .nelems = 2, .start_at = 2504, .size = sizeof(SubqueryScanState)},
+	{.structname = "FunctionScanState", .nelems = 8, .start_at = 2506, .size = sizeof(FunctionScanState)},
+	{.structname = "TableFuncScanState", .nelems = 15, .start_at = 2519, .size = sizeof(TableFuncScanState)},
+	{.structname = "ValuesScanState", .nelems = 5, .start_at = 2514, .size = sizeof(ValuesScanState)},
+	{.structname = "CteScanState", .nelems = 7, .start_at = 2534, .size = sizeof(CteScanState)},
+	{.structname = "NamedTuplestoreScanState", .nelems = 4, .start_at = 2541, .size = sizeof(NamedTuplestoreScanState)},
+	{.structname = "WorkTableScanState", .nelems = 2, .start_at = 2545, .size = sizeof(WorkTableScanState)},
+	{.structname = "ForeignScanState", .nelems = 5, .start_at = 2547, .size = sizeof(ForeignScanState)},
+	{.structname = "CustomScanState", .nelems = 5, .start_at = 2552, .size = sizeof(CustomScanState)},
+	{.structname = "JoinState", .nelems = 4, .start_at = 2557, .size = sizeof(JoinState)},
+	{.structname = "NestLoopState", .nelems = 4, .start_at = 2561, .size = sizeof(NestLoopState)},
+	{.structname = "MergeJoinState", .nelems = 18, .start_at = 2565, .size = sizeof(MergeJoinState)},
+	{.structname = "HashJoinState", .nelems = 18, .start_at = 2583, .size = sizeof(HashJoinState)},
+	{.structname = "MaterialState", .nelems = 4, .start_at = 2601, .size = sizeof(MaterialState)},
+	{.structname = "SortState", .nelems = 10, .start_at = 2605, .size = sizeof(SortState)},
+	{.structname = "GroupState", .nelems = 3, .start_at = 2615, .size = sizeof(GroupState)},
+	{.structname = "AggState", .nelems = 36, .start_at = 2618, .size = sizeof(AggState)},
+	{.structname = "WindowAggState", .nelems = 52, .start_at = 2654, .size = sizeof(WindowAggState)},
+	{.structname = "UniqueState", .nelems = 2, .start_at = 2706, .size = sizeof(UniqueState)},
+	{.structname = "GatherState", .nelems = 10, .start_at = 2708, .size = sizeof(GatherState)},
+	{.structname = "GatherMergeState", .nelems = 15, .start_at = 2718, .size = sizeof(GatherMergeState)},
+	{.structname = "HashState", .nelems = 6, .start_at = 2733, .size = sizeof(HashState)},
+	{.structname = "SetOpState", .nelems = 12, .start_at = 2739, .size = sizeof(SetOpState)},
+	{.structname = "LockRowsState", .nelems = 3, .start_at = 2751, .size = sizeof(LockRowsState)},
+	{.structname = "LimitState", .nelems = 9, .start_at = 2754, .size = sizeof(LimitState)},
+	{.structname = "Alias", .nelems = 3, .start_at = 15, .size = sizeof(Alias)},
+	{.structname = "RangeVar", .nelems = 8, .start_at = 18, .size = sizeof(RangeVar)},
+	{.structname = "TableFunc", .nelems = 14, .start_at = 26, .size = sizeof(TableFunc)},
+	{.structname = "Expr", .nelems = 1, .start_at = 49, .size = sizeof(Expr)},
+	{.structname = "Var", .nelems = 10, .start_at = 50, .size = sizeof(Var)},
+	{.structname = "Const", .nelems = 9, .start_at = 60, .size = sizeof(Const)},
+	{.structname = "Param", .nelems = 7, .start_at = 69, .size = sizeof(Param)},
+	{.structname = "Aggref", .nelems = 18, .start_at = 76, .size = sizeof(Aggref)},
+	{.structname = "GroupingFunc", .nelems = 6, .start_at = 94, .size = sizeof(GroupingFunc)},
+	{.structname = "WindowFunc", .nelems = 11, .start_at = 100, .size = sizeof(WindowFunc)},
+	{.structname = "SubscriptingRef", .nelems = 9, .start_at = 111, .size = sizeof(SubscriptingRef)},
+	{.structname = "FuncExpr", .nelems = 10, .start_at = 120, .size = sizeof(FuncExpr)},
+	{.structname = "NamedArgExpr", .nelems = 5, .start_at = 130, .size = sizeof(NamedArgExpr)},
+	{.structname = "OpExpr", .nelems = 9, .start_at = 135, .size = sizeof(OpExpr)},
+	{.structname = "DistinctExpr", .nelems = 9, .start_at = 144, .size = sizeof(DistinctExpr)},
+	{.structname = "NullIfExpr", .nelems = 9, .start_at = 153, .size = sizeof(NullIfExpr)},
+	{.structname = "ScalarArrayOpExpr", .nelems = 7, .start_at = 162, .size = sizeof(ScalarArrayOpExpr)},
+	{.structname = "BoolExpr", .nelems = 4, .start_at = 169, .size = sizeof(BoolExpr)},
+	{.structname = "SubLink", .nelems = 7, .start_at = 173, .size = sizeof(SubLink)},
+	{.structname = "SubPlan", .nelems = 17, .start_at = 180, .size = sizeof(SubPlan)},
+	{.structname = "AlternativeSubPlan", .nelems = 2, .start_at = 197, .size = sizeof(AlternativeSubPlan)},
+	{.structname = "FieldSelect", .nelems = 6, .start_at = 199, .size = sizeof(FieldSelect)},
+	{.structname = "FieldStore", .nelems = 5, .start_at = 205, .size = sizeof(FieldStore)},
+	{.structname = "RelabelType", .nelems = 7, .start_at = 210, .size = sizeof(RelabelType)},
+	{.structname = "CoerceViaIO", .nelems = 6, .start_at = 217, .size = sizeof(CoerceViaIO)},
+	{.structname = "ArrayCoerceExpr", .nelems = 8, .start_at = 223, .size = sizeof(ArrayCoerceExpr)},
+	{.structname = "ConvertRowtypeExpr", .nelems = 5, .start_at = 231, .size = sizeof(ConvertRowtypeExpr)},
+	{.structname = "CollateExpr", .nelems = 4, .start_at = 236, .size = sizeof(CollateExpr)},
+	{.structname = "CaseExpr", .nelems = 7, .start_at = 240, .size = sizeof(CaseExpr)},
+	{.structname = "CaseWhen", .nelems = 4, .start_at = 247, .size = sizeof(CaseWhen)},
+	{.structname = "CaseTestExpr", .nelems = 4, .start_at = 251, .size = sizeof(CaseTestExpr)},
+	{.structname = "ArrayExpr", .nelems = 7, .start_at = 255, .size = sizeof(ArrayExpr)},
+	{.structname = "RowExpr", .nelems = 6, .start_at = 262, .size = sizeof(RowExpr)},
+	{.structname = "RowCompareExpr", .nelems = 7, .start_at = 268, .size = sizeof(RowCompareExpr)},
+	{.structname = "CoalesceExpr", .nelems = 5, .start_at = 275, .size = sizeof(CoalesceExpr)},
+	{.structname = "MinMaxExpr", .nelems = 7, .start_at = 280, .size = sizeof(MinMaxExpr)},
+	{.structname = "SQLValueFunction", .nelems = 5, .start_at = 287, .size = sizeof(SQLValueFunction)},
+	{.structname = "XmlExpr", .nelems = 10, .start_at = 292, .size = sizeof(XmlExpr)},
+	{.structname = "NullTest", .nelems = 5, .start_at = 302, .size = sizeof(NullTest)},
+	{.structname = "BooleanTest", .nelems = 4, .start_at = 307, .size = sizeof(BooleanTest)},
+	{.structname = "CoerceToDomain", .nelems = 7, .start_at = 311, .size = sizeof(CoerceToDomain)},
+	{.structname = "CoerceToDomainValue", .nelems = 5, .start_at = 318, .size = sizeof(CoerceToDomainValue)},
+	{.structname = "SetToDefault", .nelems = 5, .start_at = 323, .size = sizeof(SetToDefault)},
+	{.structname = "CurrentOfExpr", .nelems = 4, .start_at = 328, .size = sizeof(CurrentOfExpr)},
+	{.structname = "NextValueExpr", .nelems = 3, .start_at = 332, .size = sizeof(NextValueExpr)},
+	{.structname = "InferenceElem", .nelems = 4, .start_at = 335, .size = sizeof(InferenceElem)},
+	{.structname = "TargetEntry", .nelems = 8, .start_at = 339, .size = sizeof(TargetEntry)},
+	{.structname = "RangeTblRef", .nelems = 2, .start_at = 347, .size = sizeof(RangeTblRef)},
+	{.structname = "JoinExpr", .nelems = 9, .start_at = 349, .size = sizeof(JoinExpr)},
+	{.structname = "FromExpr", .nelems = 3, .start_at = 358, .size = sizeof(FromExpr)},
+	{.structname = "OnConflictExpr", .nelems = 9, .start_at = 361, .size = sizeof(OnConflictExpr)},
+	{.structname = "IntoClause", .nelems = 9, .start_at = 40, .size = sizeof(IntoClause)},
+	{.structname = "ExprState", .nelems = 17, .start_at = 2111, .size = sizeof(ExprState)},
+	{.structname = "AggrefExprState", .nelems = 3, .start_at = 2258, .size = sizeof(AggrefExprState)},
+	{.structname = "WindowFuncExprState", .nelems = 5, .start_at = 2261, .size = sizeof(WindowFuncExprState)},
+	{.structname = "SetExprState", .nelems = 13, .start_at = 2266, .size = sizeof(SetExprState)},
+	{.structname = "SubPlanState", .nelems = 26, .start_at = 2279, .size = sizeof(SubPlanState)},
+	{.structname = "AlternativeSubPlanState", .nelems = 4, .start_at = 2305, .size = sizeof(AlternativeSubPlanState)},
+	{.structname = "DomainConstraintState", .nelems = 5, .start_at = 2309, .size = sizeof(DomainConstraintState)},
+	{.structname = "PlannerInfo", .nelems = 60, .start_at = 1373, .size = sizeof(PlannerInfo)},
+	{.structname = "PlannerGlobal", .nelems = 21, .start_at = 1352, .size = sizeof(PlannerGlobal)},
+	{.structname = "RelOptInfo", .nelems = 57, .start_at = 1433, .size = sizeof(RelOptInfo)},
+	{.structname = "IndexOptInfo", .nelems = 34, .start_at = 1490, .size = sizeof(IndexOptInfo)},
+	{.structname = "ForeignKeyOptInfo", .nelems = 12, .start_at = 1524, .size = sizeof(ForeignKeyOptInfo)},
+	{.structname = "ParamPathInfo", .nelems = 4, .start_at = 1573, .size = sizeof(ParamPathInfo)},
+	{.structname = "Path", .nelems = 12, .start_at = 1577, .size = sizeof(Path)},
+	{.structname = "IndexPath", .nelems = 8, .start_at = 1589, .size = sizeof(IndexPath)},
+	{.structname = "BitmapHeapPath", .nelems = 2, .start_at = 1603, .size = sizeof(BitmapHeapPath)},
+	{.structname = "BitmapAndPath", .nelems = 3, .start_at = 1605, .size = sizeof(BitmapAndPath)},
+	{.structname = "BitmapOrPath", .nelems = 3, .start_at = 1608, .size = sizeof(BitmapOrPath)},
+	{.structname = "TidPath", .nelems = 2, .start_at = 1611, .size = sizeof(TidPath)},
+	{.structname = "SubqueryScanPath", .nelems = 2, .start_at = 1613, .size = sizeof(SubqueryScanPath)},
+	{.structname = "ForeignPath", .nelems = 3, .start_at = 1615, .size = sizeof(ForeignPath)},
+	{.structname = "CustomPath", .nelems = 5, .start_at = 1618, .size = sizeof(CustomPath)},
+	{.structname = "NestPath", .nelems = 6, .start_at = 1648, .size = sizeof(NestPath)},
+	{.structname = "MergePath", .nelems = 6, .start_at = 1654, .size = sizeof(MergePath)},
+	{.structname = "HashPath", .nelems = 4, .start_at = 1660, .size = sizeof(HashPath)},
+	{.structname = "AppendPath", .nelems = 5, .start_at = 1623, .size = sizeof(AppendPath)},
+	{.structname = "MergeAppendPath", .nelems = 4, .start_at = 1628, .size = sizeof(MergeAppendPath)},
+	{.structname = "GroupResultPath", .nelems = 2, .start_at = 1632, .size = sizeof(GroupResultPath)},
+	{.structname = "MaterialPath", .nelems = 2, .start_at = 1634, .size = sizeof(MaterialPath)},
+	{.structname = "UniquePath", .nelems = 5, .start_at = 1636, .size = sizeof(UniquePath)},
+	{.structname = "GatherPath", .nelems = 4, .start_at = 1641, .size = sizeof(GatherPath)},
+	{.structname = "GatherMergePath", .nelems = 3, .start_at = 1645, .size = sizeof(GatherMergePath)},
+	{.structname = "ProjectionPath", .nelems = 3, .start_at = 1664, .size = sizeof(ProjectionPath)},
+	{.structname = "ProjectSetPath", .nelems = 2, .start_at = 1667, .size = sizeof(ProjectSetPath)},
+	{.structname = "SortPath", .nelems = 2, .start_at = 1669, .size = sizeof(SortPath)},
+	{.structname = "GroupPath", .nelems = 4, .start_at = 1671, .size = sizeof(GroupPath)},
+	{.structname = "UpperUniquePath", .nelems = 3, .start_at = 1675, .size = sizeof(UpperUniquePath)},
+	{.structname = "AggPath", .nelems = 7, .start_at = 1678, .size = sizeof(AggPath)},
+	{.structname = "GroupingSetsPath", .nelems = 5, .start_at = 1695, .size = sizeof(GroupingSetsPath)},
+	{.structname = "MinMaxAggPath", .nelems = 3, .start_at = 1700, .size = sizeof(MinMaxAggPath)},
+	{.structname = "WindowAggPath", .nelems = 3, .start_at = 1703, .size = sizeof(WindowAggPath)},
+	{.structname = "SetOpPath", .nelems = 8, .start_at = 1706, .size = sizeof(SetOpPath)},
+	{.structname = "RecursiveUnionPath", .nelems = 6, .start_at = 1714, .size = sizeof(RecursiveUnionPath)},
+	{.structname = "LockRowsPath", .nelems = 4, .start_at = 1720, .size = sizeof(LockRowsPath)},
+	{.structname = "ModifyTablePath", .nelems = 14, .start_at = 1724, .size = sizeof(ModifyTablePath)},
+	{.structname = "LimitPath", .nelems = 4, .start_at = 1738, .size = sizeof(LimitPath)},
+	{.structname = "EquivalenceClass", .nelems = 15, .start_at = 1541, .size = sizeof(EquivalenceClass)},
+	{.structname = "EquivalenceMember", .nelems = 7, .start_at = 1556, .size = sizeof(EquivalenceMember)},
+	{.structname = "PathKey", .nelems = 5, .start_at = 1563, .size = sizeof(PathKey)},
+	{.structname = "PathTarget", .nelems = 5, .start_at = 1568, .size = sizeof(PathTarget)},
+	{.structname = "RestrictInfo", .nelems = 31, .start_at = 1742, .size = sizeof(RestrictInfo)},
+	{.structname = "IndexClause", .nelems = 6, .start_at = 1597, .size = sizeof(IndexClause)},
+	{.structname = "PlaceHolderVar", .nelems = 5, .start_at = 1773, .size = sizeof(PlaceHolderVar)},
+	{.structname = "SpecialJoinInfo", .nelems = 12, .start_at = 1778, .size = sizeof(SpecialJoinInfo)},
+	{.structname = "AppendRelInfo", .nelems = 7, .start_at = 1790, .size = sizeof(AppendRelInfo)},
+	{.structname = "PlaceHolderInfo", .nelems = 7, .start_at = 1797, .size = sizeof(PlaceHolderInfo)},
+	{.structname = "MinMaxAggInfo", .nelems = 8, .start_at = 1804, .size = sizeof(MinMaxAggInfo)},
+	{.structname = "PlannerParamItem", .nelems = 3, .start_at = 1812, .size = sizeof(PlannerParamItem)},
+	{.structname = "RollupData", .nelems = 7, .start_at = 1688, .size = sizeof(RollupData)},
+	{.structname = "GroupingSetData", .nelems = 3, .start_at = 1685, .size = sizeof(GroupingSetData)},
+	{.structname = "StatisticExtInfo", .nelems = 5, .start_at = 1536, .size = sizeof(StatisticExtInfo)},
+	{.structname = "MemoryContext", .nelems = 0, .start_at = 0, .size = sizeof(MemoryContext)},
+	{0},
+	{0},
+	{0},
+	{.structname = "Value", .nelems = 2, .start_at = 370, .size = sizeof(Value)},
+	{.structname = "Integer", .nelems = 2, .start_at = 372, .size = sizeof(Integer)},
+	{.structname = "Float", .nelems = 2, .start_at = 374, .size = sizeof(Float)},
+	{.structname = "String", .nelems = 2, .start_at = 376, .size = sizeof(String)},
+	{.structname = "BitString", .nelems = 2, .start_at = 378, .size = sizeof(BitString)},
+	{.structname = "Null", .nelems = 2, .start_at = 380, .size = sizeof(Null)},
+	{.structname = "List", .nelems = 5, .start_at = 0, .size = sizeof(List)},
+	{.structname = "IntList", .nelems = 5, .start_at = 10, .size = sizeof(IntList)},
+	{.structname = "OidList", .nelems = 5, .start_at = 5, .size = sizeof(OidList)},
+	{.structname = "ExtensibleNode", .nelems = 2, .start_at = 2763, .size = sizeof(ExtensibleNode)},
+	{.structname = "RawStmt", .nelems = 4, .start_at = 717, .size = sizeof(RawStmt)},
+	{.structname = "Query", .nelems = 37, .start_at = 391, .size = sizeof(Query)},
+	{.structname = "PlannedStmt", .nelems = 23, .start_at = 1815, .size = sizeof(PlannedStmt)},
+	{.structname = "InsertStmt", .nelems = 8, .start_at = 721, .size = sizeof(InsertStmt)},
+	{.structname = "DeleteStmt", .nelems = 6, .start_at = 729, .size = sizeof(DeleteStmt)},
+	{.structname = "UpdateStmt", .nelems = 7, .start_at = 735, .size = sizeof(UpdateStmt)},
+	{.structname = "SelectStmt", .nelems = 19, .start_at = 742, .size = sizeof(SelectStmt)},
+	{.structname = "AlterTableStmt", .nelems = 5, .start_at = 775, .size = sizeof(AlterTableStmt)},
+	{.structname = "AlterTableCmd", .nelems = 8, .start_at = 783, .size = sizeof(AlterTableCmd)},
+	{.structname = "AlterDomainStmt", .nelems = 7, .start_at = 793, .size = sizeof(AlterDomainStmt)},
+	{.structname = "SetOperationStmt", .nelems = 9, .start_at = 761, .size = sizeof(SetOperationStmt)},
+	{.structname = "GrantStmt", .nelems = 9, .start_at = 800, .size = sizeof(GrantStmt)},
+	{.structname = "GrantRoleStmt", .nelems = 7, .start_at = 816, .size = sizeof(GrantRoleStmt)},
+	{.structname = "AlterDefaultPrivilegesStmt", .nelems = 3, .start_at = 823, .size = sizeof(AlterDefaultPrivilegesStmt)},
+	{.structname = "ClosePortalStmt", .nelems = 2, .start_at = 1089, .size = sizeof(ClosePortalStmt)},
+	{.structname = "ClusterStmt", .nelems = 4, .start_at = 1241, .size = sizeof(ClusterStmt)},
+	{.structname = "CopyStmt", .nelems = 9, .start_at = 826, .size = sizeof(CopyStmt)},
+	{.structname = "CreateStmt", .nelems = 13, .start_at = 842, .size = sizeof(CreateStmt)},
+	{.structname = "DefineStmt", .nelems = 8, .start_at = 1031, .size = sizeof(DefineStmt)},
+	{.structname = "DropStmt", .nelems = 6, .start_at = 1066, .size = sizeof(DropStmt)},
+	{.structname = "TruncateStmt", .nelems = 4, .start_at = 1072, .size = sizeof(TruncateStmt)},
+	{.structname = "CommentStmt", .nelems = 4, .start_at = 1076, .size = sizeof(CommentStmt)},
+	{.structname = "FetchStmt", .nelems = 5, .start_at = 1091, .size = sizeof(FetchStmt)},
+	{.structname = "IndexStmt", .nelems = 22, .start_at = 1096, .size = sizeof(IndexStmt)},
+	{.structname = "CreateFunctionStmt", .nelems = 7, .start_at = 1125, .size = sizeof(CreateFunctionStmt)},
+	{.structname = "AlterFunctionStmt", .nelems = 4, .start_at = 1137, .size = sizeof(AlterFunctionStmt)},
+	{.structname = "DoStmt", .nelems = 2, .start_at = 1141, .size = sizeof(DoStmt)},
+	{.structname = "RenameStmt", .nelems = 9, .start_at = 1153, .size = sizeof(RenameStmt)},
+	{.structname = "RuleStmt", .nelems = 8, .start_at = 1181, .size = sizeof(RuleStmt)},
+	{.structname = "NotifyStmt", .nelems = 3, .start_at = 1189, .size = sizeof(NotifyStmt)},
+	{.structname = "ListenStmt", .nelems = 2, .start_at = 1192, .size = sizeof(ListenStmt)},
+	{.structname = "UnlistenStmt", .nelems = 2, .start_at = 1194, .size = sizeof(UnlistenStmt)},
+	{.structname = "TransactionStmt", .nelems = 6, .start_at = 1196, .size = sizeof(TransactionStmt)},
+	{.structname = "ViewStmt", .nelems = 7, .start_at = 1218, .size = sizeof(ViewStmt)},
+	{.structname = "LoadStmt", .nelems = 2, .start_at = 1225, .size = sizeof(LoadStmt)},
+	{.structname = "CreateDomainStmt", .nelems = 5, .start_at = 1039, .size = sizeof(CreateDomainStmt)},
+	{.structname = "CreatedbStmt", .nelems = 3, .start_at = 1227, .size = sizeof(CreatedbStmt)},
+	{.structname = "DropdbStmt", .nelems = 3, .start_at = 1236, .size = sizeof(DropdbStmt)},
+	{.structname = "VacuumStmt", .nelems = 4, .start_at = 1245, .size = sizeof(VacuumStmt)},
+	{.structname = "ExplainStmt", .nelems = 3, .start_at = 1253, .size = sizeof(ExplainStmt)},
+	{.structname = "CreateTableAsStmt", .nelems = 6, .start_at = 1256, .size = sizeof(CreateTableAsStmt)},
+	{.structname = "CreateSeqStmt", .nelems = 6, .start_at = 1020, .size = sizeof(CreateSeqStmt)},
+	{.structname = "AlterSeqStmt", .nelems = 5, .start_at = 1026, .size = sizeof(AlterSeqStmt)},
+	{.structname = "VariableSetStmt", .nelems = 5, .start_at = 835, .size = sizeof(VariableSetStmt)},
+	{.structname = "VariableShowStmt", .nelems = 2, .start_at = 840, .size = sizeof(VariableShowStmt)},
+	{.structname = "DiscardStmt", .nelems = 2, .start_at = 1267, .size = sizeof(DiscardStmt)},
+	{.structname = "CreateTrigStmt", .nelems = 15, .start_at = 975, .size = sizeof(CreateTrigStmt)},
+	{.structname = "CreatePLangStmt", .nelems = 7, .start_at = 998, .size = sizeof(CreatePLangStmt)},
+	{.structname = "CreateRoleStmt", .nelems = 4, .start_at = 1005, .size = sizeof(CreateRoleStmt)},
+	{.structname = "AlterRoleStmt", .nelems = 4, .start_at = 1009, .size = sizeof(AlterRoleStmt)},
+	{.structname = "DropRoleStmt", .nelems = 3, .start_at = 1017, .size = sizeof(DropRoleStmt)},
+	{.structname = "LockStmt", .nelems = 4, .start_at = 1269, .size = sizeof(LockStmt)},
+	{.structname = "ConstraintsSetStmt", .nelems = 3, .start_at = 1273, .size = sizeof(ConstraintsSetStmt)},
+	{.structname = "ReindexStmt", .nelems = 6, .start_at = 1276, .size = sizeof(ReindexStmt)},
+	{.structname = "CheckPointStmt", .nelems = 1, .start_at = 1266, .size = sizeof(CheckPointStmt)},
+	{.structname = "CreateSchemaStmt", .nelems = 5, .start_at = 770, .size = sizeof(CreateSchemaStmt)},
+	{.structname = "AlterDatabaseStmt", .nelems = 3, .start_at = 1230, .size = sizeof(AlterDatabaseStmt)},
+	{.structname = "AlterDatabaseSetStmt", .nelems = 3, .start_at = 1233, .size = sizeof(AlterDatabaseSetStmt)},
+	{.structname = "AlterRoleSetStmt", .nelems = 4, .start_at = 1013, .size = sizeof(AlterRoleSetStmt)},
+	{.structname = "CreateConversionStmt", .nelems = 6, .start_at = 1282, .size = sizeof(CreateConversionStmt)},
+	{.structname = "CreateCastStmt", .nelems = 6, .start_at = 1288, .size = sizeof(CreateCastStmt)},
+	{.structname = "CreateOpClassStmt", .nelems = 7, .start_at = 1044, .size = sizeof(CreateOpClassStmt)},
+	{.structname = "CreateOpFamilyStmt", .nelems = 3, .start_at = 1058, .size = sizeof(CreateOpFamilyStmt)},
+	{.structname = "AlterOpFamilyStmt", .nelems = 5, .start_at = 1061, .size = sizeof(AlterOpFamilyStmt)},
+	{.structname = "PrepareStmt", .nelems = 4, .start_at = 1300, .size = sizeof(PrepareStmt)},
+	{.structname = "ExecuteStmt", .nelems = 3, .start_at = 1304, .size = sizeof(ExecuteStmt)},
+	{.structname = "DeallocateStmt", .nelems = 2, .start_at = 1307, .size = sizeof(DeallocateStmt)},
+	{.structname = "DeclareCursorStmt", .nelems = 4, .start_at = 1085, .size = sizeof(DeclareCursorStmt)},
+	{.structname = "CreateTableSpaceStmt", .nelems = 5, .start_at = 884, .size = sizeof(CreateTableSpaceStmt)},
+	{.structname = "DropTableSpaceStmt", .nelems = 3, .start_at = 889, .size = sizeof(DropTableSpaceStmt)},
+	{.structname = "AlterObjectDependsStmt", .nelems = 5, .start_at = 1162, .size = sizeof(AlterObjectDependsStmt)},
+	{.structname = "AlterObjectSchemaStmt", .nelems = 6, .start_at = 1167, .size = sizeof(AlterObjectSchemaStmt)},
+	{.structname = "AlterOwnerStmt", .nelems = 5, .start_at = 1173, .size = sizeof(AlterOwnerStmt)},
+	{.structname = "AlterOperatorStmt", .nelems = 3, .start_at = 1178, .size = sizeof(AlterOperatorStmt)},
+	{.structname = "DropOwnedStmt", .nelems = 3, .start_at = 1309, .size = sizeof(DropOwnedStmt)},
+	{.structname = "ReassignOwnedStmt", .nelems = 3, .start_at = 1312, .size = sizeof(ReassignOwnedStmt)},
+	{.structname = "CompositeTypeStmt", .nelems = 3, .start_at = 1202, .size = sizeof(CompositeTypeStmt)},
+	{.structname = "CreateEnumStmt", .nelems = 3, .start_at = 1205, .size = sizeof(CreateEnumStmt)},
+	{.structname = "CreateRangeStmt", .nelems = 3, .start_at = 1208, .size = sizeof(CreateRangeStmt)},
+	{.structname = "AlterEnumStmt", .nelems = 7, .start_at = 1211, .size = sizeof(AlterEnumStmt)},
+	{.structname = "AlterTSDictionaryStmt", .nelems = 3, .start_at = 1315, .size = sizeof(AlterTSDictionaryStmt)},
+	{.structname = "AlterTSConfigurationStmt", .nelems = 8, .start_at = 1318, .size = sizeof(AlterTSConfigurationStmt)},
+	{.structname = "CreateFdwStmt", .nelems = 4, .start_at = 914, .size = sizeof(CreateFdwStmt)},
+	{.structname = "AlterFdwStmt", .nelems = 4, .start_at = 918, .size = sizeof(AlterFdwStmt)},
+	{.structname = "CreateForeignServerStmt", .nelems = 7, .start_at = 922, .size = sizeof(CreateForeignServerStmt)},
+	{.structname = "AlterForeignServerStmt", .nelems = 5, .start_at = 929, .size = sizeof(AlterForeignServerStmt)},
+	{.structname = "CreateUserMappingStmt", .nelems = 5, .start_at = 937, .size = sizeof(CreateUserMappingStmt)},
+	{.structname = "AlterUserMappingStmt", .nelems = 4, .start_at = 942, .size = sizeof(AlterUserMappingStmt)},
+	{.structname = "DropUserMappingStmt", .nelems = 4, .start_at = 946, .size = sizeof(DropUserMappingStmt)},
+	{.structname = "AlterTableSpaceOptionsStmt", .nelems = 4, .start_at = 892, .size = sizeof(AlterTableSpaceOptionsStmt)},
+	{.structname = "AlterTableMoveAllStmt", .nelems = 6, .start_at = 896, .size = sizeof(AlterTableMoveAllStmt)},
+	{.structname = "SecLabelStmt", .nelems = 5, .start_at = 1080, .size = sizeof(SecLabelStmt)},
+	{.structname = "CreateForeignTableStmt", .nelems = 3, .start_at = 934, .size = sizeof(CreateForeignTableStmt)},
+	{.structname = "ImportForeignSchemaStmt", .nelems = 7, .start_at = 950, .size = sizeof(ImportForeignSchemaStmt)},
+	{.structname = "CreateExtensionStmt", .nelems = 4, .start_at = 902, .size = sizeof(CreateExtensionStmt)},
+	{.structname = "AlterExtensionStmt", .nelems = 3, .start_at = 906, .size = sizeof(AlterExtensionStmt)},
+	{.structname = "AlterExtensionContentsStmt", .nelems = 5, .start_at = 909, .size = sizeof(AlterExtensionContentsStmt)},
+	{.structname = "CreateEventTrigStmt", .nelems = 5, .start_at = 990, .size = sizeof(CreateEventTrigStmt)},
+	{.structname = "AlterEventTrigStmt", .nelems = 3, .start_at = 995, .size = sizeof(AlterEventTrigStmt)},
+	{.structname = "RefreshMatViewStmt", .nelems = 4, .start_at = 1262, .size = sizeof(RefreshMatViewStmt)},
+	{.structname = "ReplicaIdentityStmt", .nelems = 3, .start_at = 780, .size = sizeof(ReplicaIdentityStmt)},
+	{.structname = "AlterSystemStmt", .nelems = 2, .start_at = 1239, .size = sizeof(AlterSystemStmt)},
+	{.structname = "CreatePolicyStmt", .nelems = 8, .start_at = 957, .size = sizeof(CreatePolicyStmt)},
+	{.structname = "AlterPolicyStmt", .nelems = 6, .start_at = 965, .size = sizeof(AlterPolicyStmt)},
+	{.structname = "CreateTransformStmt", .nelems = 6, .start_at = 1294, .size = sizeof(CreateTransformStmt)},
+	{.structname = "CreateAmStmt", .nelems = 4, .start_at = 971, .size = sizeof(CreateAmStmt)},
+	{.structname = "CreatePublicationStmt", .nelems = 5, .start_at = 1326, .size = sizeof(CreatePublicationStmt)},
+	{.structname = "AlterPublicationStmt", .nelems = 6, .start_at = 1331, .size = sizeof(AlterPublicationStmt)},
+	{.structname = "CreateSubscriptionStmt", .nelems = 5, .start_at = 1337, .size = sizeof(CreateSubscriptionStmt)},
+	{.structname = "AlterSubscriptionStmt", .nelems = 6, .start_at = 1342, .size = sizeof(AlterSubscriptionStmt)},
+	{.structname = "DropSubscriptionStmt", .nelems = 4, .start_at = 1348, .size = sizeof(DropSubscriptionStmt)},
+	{.structname = "CreateStatsStmt", .nelems = 7, .start_at = 1118, .size = sizeof(CreateStatsStmt)},
+	{.structname = "AlterCollationStmt", .nelems = 2, .start_at = 791, .size = sizeof(AlterCollationStmt)},
+	{.structname = "CallStmt", .nelems = 3, .start_at = 1148, .size = sizeof(CallStmt)},
+	{.structname = "A_Expr", .nelems = 6, .start_at = 443, .size = sizeof(A_Expr)},
+	{.structname = "ColumnRef", .nelems = 3, .start_at = 437, .size = sizeof(ColumnRef)},
+	{.structname = "ParamRef", .nelems = 3, .start_at = 440, .size = sizeof(ParamRef)},
+	{.structname = "A_Const", .nelems = 3, .start_at = 449, .size = sizeof(A_Const)},
+	{.structname = "FuncCall", .nelems = 11, .start_at = 464, .size = sizeof(FuncCall)},
+	{.structname = "A_Star", .nelems = 1, .start_at = 475, .size = sizeof(A_Star)},
+	{.structname = "A_Indices", .nelems = 4, .start_at = 476, .size = sizeof(A_Indices)},
+	{.structname = "A_Indirection", .nelems = 3, .start_at = 480, .size = sizeof(A_Indirection)},
+	{.structname = "A_ArrayExpr", .nelems = 3, .start_at = 483, .size = sizeof(A_ArrayExpr)},
+	{.structname = "ResTarget", .nelems = 5, .start_at = 486, .size = sizeof(ResTarget)},
+	{.structname = "MultiAssignRef", .nelems = 4, .start_at = 491, .size = sizeof(MultiAssignRef)},
+	{.structname = "TypeCast", .nelems = 4, .start_at = 452, .size = sizeof(TypeCast)},
+	{.structname = "CollateClause", .nelems = 4, .start_at = 456, .size = sizeof(CollateClause)},
+	{.structname = "SortBy", .nelems = 6, .start_at = 495, .size = sizeof(SortBy)},
+	{.structname = "WindowDef", .nelems = 9, .start_at = 501, .size = sizeof(WindowDef)},
+	{.structname = "RangeSubselect", .nelems = 4, .start_at = 510, .size = sizeof(RangeSubselect)},
+	{.structname = "RangeFunction", .nelems = 7, .start_at = 514, .size = sizeof(RangeFunction)},
+	{.structname = "RangeTableSample", .nelems = 6, .start_at = 537, .size = sizeof(RangeTableSample)},
+	{.structname = "RangeTableFunc", .nelems = 8, .start_at = 521, .size = sizeof(RangeTableFunc)},
+	{.structname = "RangeTableFuncCol", .nelems = 8, .start_at = 529, .size = sizeof(RangeTableFuncCol)},
+	{.structname = "TypeName", .nelems = 9, .start_at = 428, .size = sizeof(TypeName)},
+	{.structname = "ColumnDef", .nelems = 18, .start_at = 543, .size = sizeof(ColumnDef)},
+	{.structname = "IndexElem", .nelems = 8, .start_at = 564, .size = sizeof(IndexElem)},
+	{.structname = "Constraint", .nelems = 29, .start_at = 855, .size = sizeof(Constraint)},
+	{.structname = "DefElem", .nelems = 6, .start_at = 572, .size = sizeof(DefElem)},
+	{.structname = "RangeTblEntry", .nelems = 34, .start_at = 604, .size = sizeof(RangeTblEntry)},
+	{.structname = "RangeTblFunction", .nelems = 8, .start_at = 638, .size = sizeof(RangeTblFunction)},
+	{.structname = "TableSampleClause", .nelems = 4, .start_at = 646, .size = sizeof(TableSampleClause)},
+	{.structname = "WithCheckOption", .nelems = 6, .start_at = 650, .size = sizeof(WithCheckOption)},
+	{.structname = "SortGroupClause", .nelems = 6, .start_at = 656, .size = sizeof(SortGroupClause)},
+	{.structname = "GroupingSet", .nelems = 4, .start_at = 662, .size = sizeof(GroupingSet)},
+	{.structname = "WindowClause", .nelems = 15, .start_at = 666, .size = sizeof(WindowClause)},
+	{.structname = "ObjectWithArgs", .nelems = 4, .start_at = 809, .size = sizeof(ObjectWithArgs)},
+	{.structname = "AccessPriv", .nelems = 3, .start_at = 813, .size = sizeof(AccessPriv)},
+	{.structname = "CreateOpClassItem", .nelems = 7, .start_at = 1051, .size = sizeof(CreateOpClassItem)},
+	{.structname = "TableLikeClause", .nelems = 3, .start_at = 561, .size = sizeof(TableLikeClause)},
+	{.structname = "FunctionParameter", .nelems = 5, .start_at = 1132, .size = sizeof(FunctionParameter)},
+	{.structname = "LockingClause", .nelems = 4, .start_at = 578, .size = sizeof(LockingClause)},
+	{.structname = "RowMarkClause", .nelems = 5, .start_at = 681, .size = sizeof(RowMarkClause)},
+	{.structname = "XmlSerialize", .nelems = 5, .start_at = 582, .size = sizeof(XmlSerialize)},
+	{.structname = "WithClause", .nelems = 4, .start_at = 686, .size = sizeof(WithClause)},
+	{.structname = "InferClause", .nelems = 5, .start_at = 690, .size = sizeof(InferClause)},
+	{.structname = "OnConflictClause", .nelems = 6, .start_at = 695, .size = sizeof(OnConflictClause)},
+	{.structname = "CommonTableExpr", .nelems = 12, .start_at = 701, .size = sizeof(CommonTableExpr)},
+	{.structname = "RoleSpec", .nelems = 4, .start_at = 460, .size = sizeof(RoleSpec)},
+	{.structname = "TriggerTransition", .nelems = 4, .start_at = 713, .size = sizeof(TriggerTransition)},
+	{.structname = "PartitionElem", .nelems = 6, .start_at = 587, .size = sizeof(PartitionElem)},
+	{.structname = "PartitionSpec", .nelems = 4, .start_at = 593, .size = sizeof(PartitionSpec)},
+	{.structname = "PartitionBoundSpec", .nelems = 9, .start_at = 382, .size = sizeof(PartitionBoundSpec)},
+	{.structname = "PartitionRangeDatum", .nelems = 4, .start_at = 597, .size = sizeof(PartitionRangeDatum)},
+	{.structname = "PartitionCmd", .nelems = 3, .start_at = 601, .size = sizeof(PartitionCmd)},
+	{.structname = "VacuumRelation", .nelems = 4, .start_at = 1249, .size = sizeof(VacuumRelation)},
+	{.structname = "IdentifySystemCmd", .nelems = 1, .start_at = 2765, .size = sizeof(IdentifySystemCmd)},
+	{.structname = "BaseBackupCmd", .nelems = 2, .start_at = 2766, .size = sizeof(BaseBackupCmd)},
+	{.structname = "CreateReplicationSlotCmd", .nelems = 6, .start_at = 2768, .size = sizeof(CreateReplicationSlotCmd)},
+	{.structname = "DropReplicationSlotCmd", .nelems = 3, .start_at = 2774, .size = sizeof(DropReplicationSlotCmd)},
+	{.structname = "StartReplicationCmd", .nelems = 6, .start_at = 2777, .size = sizeof(StartReplicationCmd)},
+	{.structname = "TimeLineHistoryCmd", .nelems = 2, .start_at = 2783, .size = sizeof(TimeLineHistoryCmd)},
+	{.structname = "SQLCmd", .nelems = 1, .start_at = 2785, .size = sizeof(SQLCmd)},
+	{0},
+	{0},
+	{.structname = "ReturnSetInfo", .nelems = 8, .start_at = 2166, .size = sizeof(ReturnSetInfo)},
+	{0},
+	{.structname = "TIDBitmap", .nelems = 0, .start_at = 2111, .size = -1},
+	{.structname = "InlineCodeBlock", .nelems = 5, .start_at = 1143, .size = sizeof(InlineCodeBlock)},
+	{0},
+	{0},
+	{0},
+	{0},
+	{0},
+	{.structname = "CallContext", .nelems = 2, .start_at = 1151, .size = sizeof(CallContext)},
+	{0},
+	{0},
+	{0},
+	{0},
+	{0}
+};
+
+NodeTypeComponents node_type_components[] = {
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct List, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "length", .fieldtype = "int", .offset = offsetof(struct List, length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "max_length", .fieldtype = "int", .offset = offsetof(struct List, max_length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elements", .fieldtype = "union ListCell *", .offset = offsetof(struct List, elements), .size = sizeof(union ListCell *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initial_elements", .fieldtype = "union ListCell []", .offset = offsetof(struct List, initial_elements), .size = -1, .flags = TYPE_CAT_SCALAR | TYPE_CAT_INCOMPLETE, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct List, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "length", .fieldtype = "int", .offset = offsetof(struct List, length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "max_length", .fieldtype = "int", .offset = offsetof(struct List, max_length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elements", .fieldtype = "union ListCell *", .offset = offsetof(struct List, elements), .size = sizeof(union ListCell *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initial_elements", .fieldtype = "union ListCell []", .offset = offsetof(struct List, initial_elements), .size = -1, .flags = TYPE_CAT_SCALAR | TYPE_CAT_INCOMPLETE, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct List, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "length", .fieldtype = "int", .offset = offsetof(struct List, length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "max_length", .fieldtype = "int", .offset = offsetof(struct List, max_length), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elements", .fieldtype = "union ListCell *", .offset = offsetof(struct List, elements), .size = sizeof(union ListCell *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initial_elements", .fieldtype = "union ListCell []", .offset = offsetof(struct List, initial_elements), .size = -1, .flags = TYPE_CAT_SCALAR | TYPE_CAT_INCOMPLETE, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Alias, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aliasname", .fieldtype = "char *", .offset = offsetof(struct Alias, aliasname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "colnames", .fieldtype = "struct List *", .offset = offsetof(struct Alias, colnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeVar, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "catalogname", .fieldtype = "char *", .offset = offsetof(struct RangeVar, catalogname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "schemaname", .fieldtype = "char *", .offset = offsetof(struct RangeVar, schemaname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "relname", .fieldtype = "char *", .offset = offsetof(struct RangeVar, relname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "inh", .fieldtype = "_Bool", .offset = offsetof(struct RangeVar, inh), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relpersistence", .fieldtype = "char", .offset = offsetof(struct RangeVar, relpersistence), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeVar, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RangeVar, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TableFunc, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ns_uris", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, ns_uris), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ns_names", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, ns_names), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "docexpr", .fieldtype = "struct Node *", .offset = offsetof(struct TableFunc, docexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rowexpr", .fieldtype = "struct Node *", .offset = offsetof(struct TableFunc, rowexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "colnames", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, colnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coltypes", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, coltypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coltypmods", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, coltypmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colcollations", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, colcollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colexprs", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, colexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coldefexprs", .fieldtype = "struct List *", .offset = offsetof(struct TableFunc, coldefexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "notnulls", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct TableFunc, notnulls), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ordinalitycol", .fieldtype = "int", .offset = offsetof(struct TableFunc, ordinalitycol), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct TableFunc, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IntoClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rel", .fieldtype = "struct RangeVar *", .offset = offsetof(struct IntoClause, rel), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colNames", .fieldtype = "struct List *", .offset = offsetof(struct IntoClause, colNames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "accessMethod", .fieldtype = "char *", .offset = offsetof(struct IntoClause, accessMethod), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct IntoClause, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onCommit", .fieldtype = "enum OnCommitAction", .offset = offsetof(struct IntoClause, onCommit), .size = sizeof(enum OnCommitAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tableSpaceName", .fieldtype = "char *", .offset = offsetof(struct IntoClause, tableSpaceName), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "viewQuery", .fieldtype = "struct Node *", .offset = offsetof(struct IntoClause, viewQuery), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "skipData", .fieldtype = "_Bool", .offset = offsetof(struct IntoClause, skipData), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Expr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct Var, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varno", .fieldtype = "unsigned int", .offset = offsetof(struct Var, varno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varattno", .fieldtype = "short", .offset = offsetof(struct Var, varattno), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "vartype", .fieldtype = "unsigned int", .offset = offsetof(struct Var, vartype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "vartypmod", .fieldtype = "int", .offset = offsetof(struct Var, vartypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varcollid", .fieldtype = "unsigned int", .offset = offsetof(struct Var, varcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varlevelsup", .fieldtype = "unsigned int", .offset = offsetof(struct Var, varlevelsup), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varnoold", .fieldtype = "unsigned int", .offset = offsetof(struct Var, varnoold), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "varoattno", .fieldtype = "short", .offset = offsetof(struct Var, varoattno), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct Var, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct Const, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consttype", .fieldtype = "unsigned int", .offset = offsetof(struct Const, consttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consttypmod", .fieldtype = "int", .offset = offsetof(struct Const, consttypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constcollid", .fieldtype = "unsigned int", .offset = offsetof(struct Const, constcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constlen", .fieldtype = "int", .offset = offsetof(struct Const, constlen), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constvalue", .fieldtype = "unsigned long", .offset = offsetof(struct Const, constvalue), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constisnull", .fieldtype = "_Bool", .offset = offsetof(struct Const, constisnull), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constbyval", .fieldtype = "_Bool", .offset = offsetof(struct Const, constbyval), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct Const, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct Param, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramkind", .fieldtype = "enum ParamKind", .offset = offsetof(struct Param, paramkind), .size = sizeof(enum ParamKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramid", .fieldtype = "int", .offset = offsetof(struct Param, paramid), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramtype", .fieldtype = "unsigned int", .offset = offsetof(struct Param, paramtype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramtypmod", .fieldtype = "int", .offset = offsetof(struct Param, paramtypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramcollid", .fieldtype = "unsigned int", .offset = offsetof(struct Param, paramcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct Param, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct Aggref, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggfnoid", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, aggfnoid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggtype", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, aggtype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggcollid", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, aggcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggtranstype", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, aggtranstype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggargtypes", .fieldtype = "struct List *", .offset = offsetof(struct Aggref, aggargtypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggdirectargs", .fieldtype = "struct List *", .offset = offsetof(struct Aggref, aggdirectargs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct Aggref, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggorder", .fieldtype = "struct List *", .offset = offsetof(struct Aggref, aggorder), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggdistinct", .fieldtype = "struct List *", .offset = offsetof(struct Aggref, aggdistinct), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggfilter", .fieldtype = "struct Expr *", .offset = offsetof(struct Aggref, aggfilter), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggstar", .fieldtype = "_Bool", .offset = offsetof(struct Aggref, aggstar), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggvariadic", .fieldtype = "_Bool", .offset = offsetof(struct Aggref, aggvariadic), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggkind", .fieldtype = "char", .offset = offsetof(struct Aggref, aggkind), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agglevelsup", .fieldtype = "unsigned int", .offset = offsetof(struct Aggref, agglevelsup), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggsplit", .fieldtype = "enum AggSplit", .offset = offsetof(struct Aggref, aggsplit), .size = sizeof(enum AggSplit), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct Aggref, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct GroupingFunc, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct GroupingFunc, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refs", .fieldtype = "struct List *", .offset = offsetof(struct GroupingFunc, refs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cols", .fieldtype = "struct List *", .offset = offsetof(struct GroupingFunc, cols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agglevelsup", .fieldtype = "unsigned int", .offset = offsetof(struct GroupingFunc, agglevelsup), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct GroupingFunc, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct WindowFunc, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winfnoid", .fieldtype = "unsigned int", .offset = offsetof(struct WindowFunc, winfnoid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wintype", .fieldtype = "unsigned int", .offset = offsetof(struct WindowFunc, wintype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wincollid", .fieldtype = "unsigned int", .offset = offsetof(struct WindowFunc, wincollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct WindowFunc, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct WindowFunc, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggfilter", .fieldtype = "struct Expr *", .offset = offsetof(struct WindowFunc, aggfilter), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winref", .fieldtype = "unsigned int", .offset = offsetof(struct WindowFunc, winref), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winstar", .fieldtype = "_Bool", .offset = offsetof(struct WindowFunc, winstar), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winagg", .fieldtype = "_Bool", .offset = offsetof(struct WindowFunc, winagg), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct WindowFunc, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct SubscriptingRef, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refcontainertype", .fieldtype = "unsigned int", .offset = offsetof(struct SubscriptingRef, refcontainertype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refelemtype", .fieldtype = "unsigned int", .offset = offsetof(struct SubscriptingRef, refelemtype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reftypmod", .fieldtype = "int", .offset = offsetof(struct SubscriptingRef, reftypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refcollid", .fieldtype = "unsigned int", .offset = offsetof(struct SubscriptingRef, refcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refupperindexpr", .fieldtype = "struct List *", .offset = offsetof(struct SubscriptingRef, refupperindexpr), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reflowerindexpr", .fieldtype = "struct List *", .offset = offsetof(struct SubscriptingRef, reflowerindexpr), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refexpr", .fieldtype = "struct Expr *", .offset = offsetof(struct SubscriptingRef, refexpr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "refassgnexpr", .fieldtype = "struct Expr *", .offset = offsetof(struct SubscriptingRef, refassgnexpr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct FuncExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcid", .fieldtype = "unsigned int", .offset = offsetof(struct FuncExpr, funcid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcresulttype", .fieldtype = "unsigned int", .offset = offsetof(struct FuncExpr, funcresulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcretset", .fieldtype = "_Bool", .offset = offsetof(struct FuncExpr, funcretset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcvariadic", .fieldtype = "_Bool", .offset = offsetof(struct FuncExpr, funcvariadic), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct FuncExpr, funcformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccollid", .fieldtype = "unsigned int", .offset = offsetof(struct FuncExpr, funccollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct FuncExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct FuncExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct FuncExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct NamedArgExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct NamedArgExpr, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct NamedArgExpr, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "argnumber", .fieldtype = "int", .offset = offsetof(struct NamedArgExpr, argnumber), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct NamedArgExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct OpExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opno", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfuncid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opfuncid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opresulttype", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opresulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opretset", .fieldtype = "_Bool", .offset = offsetof(struct OpExpr, opretset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct OpExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct OpExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct OpExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opno", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfuncid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opfuncid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opresulttype", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opresulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opretset", .fieldtype = "_Bool", .offset = offsetof(struct OpExpr, opretset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct OpExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct OpExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct OpExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opno", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfuncid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opfuncid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opresulttype", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opresulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opretset", .fieldtype = "_Bool", .offset = offsetof(struct OpExpr, opretset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, opcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct OpExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct OpExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct OpExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct ScalarArrayOpExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opno", .fieldtype = "unsigned int", .offset = offsetof(struct ScalarArrayOpExpr, opno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfuncid", .fieldtype = "unsigned int", .offset = offsetof(struct ScalarArrayOpExpr, opfuncid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "useOr", .fieldtype = "_Bool", .offset = offsetof(struct ScalarArrayOpExpr, useOr), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct ScalarArrayOpExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct ScalarArrayOpExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ScalarArrayOpExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct BoolExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "boolop", .fieldtype = "enum BoolExprType", .offset = offsetof(struct BoolExpr, boolop), .size = sizeof(enum BoolExprType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct BoolExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct BoolExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct SubLink, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subLinkType", .fieldtype = "enum SubLinkType", .offset = offsetof(struct SubLink, subLinkType), .size = sizeof(enum SubLinkType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subLinkId", .fieldtype = "int", .offset = offsetof(struct SubLink, subLinkId), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "testexpr", .fieldtype = "struct Node *", .offset = offsetof(struct SubLink, testexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "operName", .fieldtype = "struct List *", .offset = offsetof(struct SubLink, operName), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subselect", .fieldtype = "struct Node *", .offset = offsetof(struct SubLink, subselect), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct SubLink, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct SubPlan, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subLinkType", .fieldtype = "enum SubLinkType", .offset = offsetof(struct SubPlan, subLinkType), .size = sizeof(enum SubLinkType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "testexpr", .fieldtype = "struct Node *", .offset = offsetof(struct SubPlan, testexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "paramIds", .fieldtype = "struct List *", .offset = offsetof(struct SubPlan, paramIds), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_id", .fieldtype = "int", .offset = offsetof(struct SubPlan, plan_id), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_name", .fieldtype = "char *", .offset = offsetof(struct SubPlan, plan_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "firstColType", .fieldtype = "unsigned int", .offset = offsetof(struct SubPlan, firstColType), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "firstColTypmod", .fieldtype = "int", .offset = offsetof(struct SubPlan, firstColTypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "firstColCollation", .fieldtype = "unsigned int", .offset = offsetof(struct SubPlan, firstColCollation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "useHashTable", .fieldtype = "_Bool", .offset = offsetof(struct SubPlan, useHashTable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "unknownEqFalse", .fieldtype = "_Bool", .offset = offsetof(struct SubPlan, unknownEqFalse), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_safe", .fieldtype = "_Bool", .offset = offsetof(struct SubPlan, parallel_safe), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setParam", .fieldtype = "struct List *", .offset = offsetof(struct SubPlan, setParam), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parParam", .fieldtype = "struct List *", .offset = offsetof(struct SubPlan, parParam), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct SubPlan, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startup_cost", .fieldtype = "double", .offset = offsetof(struct SubPlan, startup_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "per_call_cost", .fieldtype = "double", .offset = offsetof(struct SubPlan, per_call_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct AlternativeSubPlan, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplans", .fieldtype = "struct List *", .offset = offsetof(struct AlternativeSubPlan, subplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct FieldSelect, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct FieldSelect, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fieldnum", .fieldtype = "short", .offset = offsetof(struct FieldSelect, fieldnum), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct FieldSelect, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttypmod", .fieldtype = "int", .offset = offsetof(struct FieldSelect, resulttypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultcollid", .fieldtype = "unsigned int", .offset = offsetof(struct FieldSelect, resultcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct FieldStore, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct FieldStore, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "newvals", .fieldtype = "struct List *", .offset = offsetof(struct FieldStore, newvals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fieldnums", .fieldtype = "struct List *", .offset = offsetof(struct FieldStore, fieldnums), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct FieldStore, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct RelabelType, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct RelabelType, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct RelabelType, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttypmod", .fieldtype = "int", .offset = offsetof(struct RelabelType, resulttypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultcollid", .fieldtype = "unsigned int", .offset = offsetof(struct RelabelType, resultcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relabelformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct RelabelType, relabelformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RelabelType, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CoerceViaIO, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct CoerceViaIO, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceViaIO, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultcollid", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceViaIO, resultcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coerceformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct CoerceViaIO, coerceformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CoerceViaIO, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct ArrayCoerceExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct ArrayCoerceExpr, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elemexpr", .fieldtype = "struct Expr *", .offset = offsetof(struct ArrayCoerceExpr, elemexpr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct ArrayCoerceExpr, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttypmod", .fieldtype = "int", .offset = offsetof(struct ArrayCoerceExpr, resulttypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultcollid", .fieldtype = "unsigned int", .offset = offsetof(struct ArrayCoerceExpr, resultcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coerceformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct ArrayCoerceExpr, coerceformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ArrayCoerceExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct ConvertRowtypeExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct ConvertRowtypeExpr, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct ConvertRowtypeExpr, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "convertformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct ConvertRowtypeExpr, convertformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ConvertRowtypeExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CollateExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct CollateExpr, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collOid", .fieldtype = "unsigned int", .offset = offsetof(struct CollateExpr, collOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CollateExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CaseExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "casetype", .fieldtype = "unsigned int", .offset = offsetof(struct CaseExpr, casetype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "casecollid", .fieldtype = "unsigned int", .offset = offsetof(struct CaseExpr, casecollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct CaseExpr, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct CaseExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "defresult", .fieldtype = "struct Expr *", .offset = offsetof(struct CaseExpr, defresult), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CaseExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CaseWhen, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Expr *", .offset = offsetof(struct CaseWhen, expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "result", .fieldtype = "struct Expr *", .offset = offsetof(struct CaseWhen, result), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CaseWhen, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CaseTestExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeId", .fieldtype = "unsigned int", .offset = offsetof(struct CaseTestExpr, typeId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeMod", .fieldtype = "int", .offset = offsetof(struct CaseTestExpr, typeMod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collation", .fieldtype = "unsigned int", .offset = offsetof(struct CaseTestExpr, collation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct ArrayExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "array_typeid", .fieldtype = "unsigned int", .offset = offsetof(struct ArrayExpr, array_typeid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "array_collid", .fieldtype = "unsigned int", .offset = offsetof(struct ArrayExpr, array_collid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "element_typeid", .fieldtype = "unsigned int", .offset = offsetof(struct ArrayExpr, element_typeid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elements", .fieldtype = "struct List *", .offset = offsetof(struct ArrayExpr, elements), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "multidims", .fieldtype = "_Bool", .offset = offsetof(struct ArrayExpr, multidims), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ArrayExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct RowExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct RowExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "row_typeid", .fieldtype = "unsigned int", .offset = offsetof(struct RowExpr, row_typeid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "row_format", .fieldtype = "enum CoercionForm", .offset = offsetof(struct RowExpr, row_format), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colnames", .fieldtype = "struct List *", .offset = offsetof(struct RowExpr, colnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RowExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct RowCompareExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rctype", .fieldtype = "enum RowCompareType", .offset = offsetof(struct RowCompareExpr, rctype), .size = sizeof(enum RowCompareType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opnos", .fieldtype = "struct List *", .offset = offsetof(struct RowCompareExpr, opnos), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfamilies", .fieldtype = "struct List *", .offset = offsetof(struct RowCompareExpr, opfamilies), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollids", .fieldtype = "struct List *", .offset = offsetof(struct RowCompareExpr, inputcollids), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "largs", .fieldtype = "struct List *", .offset = offsetof(struct RowCompareExpr, largs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rargs", .fieldtype = "struct List *", .offset = offsetof(struct RowCompareExpr, rargs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CoalesceExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coalescetype", .fieldtype = "unsigned int", .offset = offsetof(struct CoalesceExpr, coalescetype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coalescecollid", .fieldtype = "unsigned int", .offset = offsetof(struct CoalesceExpr, coalescecollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct CoalesceExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CoalesceExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct MinMaxExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "minmaxtype", .fieldtype = "unsigned int", .offset = offsetof(struct MinMaxExpr, minmaxtype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "minmaxcollid", .fieldtype = "unsigned int", .offset = offsetof(struct MinMaxExpr, minmaxcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inputcollid", .fieldtype = "unsigned int", .offset = offsetof(struct MinMaxExpr, inputcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "op", .fieldtype = "enum MinMaxOp", .offset = offsetof(struct MinMaxExpr, op), .size = sizeof(enum MinMaxOp), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct MinMaxExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct MinMaxExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct SQLValueFunction, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "op", .fieldtype = "enum SQLValueFunctionOp", .offset = offsetof(struct SQLValueFunction, op), .size = sizeof(enum SQLValueFunctionOp), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "unsigned int", .offset = offsetof(struct SQLValueFunction, type), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typmod", .fieldtype = "int", .offset = offsetof(struct SQLValueFunction, typmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct SQLValueFunction, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct XmlExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "op", .fieldtype = "enum XmlExprOp", .offset = offsetof(struct XmlExpr, op), .size = sizeof(enum XmlExprOp), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct XmlExpr, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "named_args", .fieldtype = "struct List *", .offset = offsetof(struct XmlExpr, named_args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg_names", .fieldtype = "struct List *", .offset = offsetof(struct XmlExpr, arg_names), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct XmlExpr, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xmloption", .fieldtype = "XmlOptionType", .offset = offsetof(struct XmlExpr, xmloption), .size = sizeof(XmlOptionType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "unsigned int", .offset = offsetof(struct XmlExpr, type), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typmod", .fieldtype = "int", .offset = offsetof(struct XmlExpr, typmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct XmlExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct NullTest, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct NullTest, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nulltesttype", .fieldtype = "enum NullTestType", .offset = offsetof(struct NullTest, nulltesttype), .size = sizeof(enum NullTestType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "argisrow", .fieldtype = "_Bool", .offset = offsetof(struct NullTest, argisrow), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct NullTest, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct BooleanTest, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct BooleanTest, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "booltesttype", .fieldtype = "enum BoolTestType", .offset = offsetof(struct BooleanTest, booltesttype), .size = sizeof(enum BoolTestType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct BooleanTest, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CoerceToDomain, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Expr *", .offset = offsetof(struct CoerceToDomain, arg), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttype", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceToDomain, resulttype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resulttypmod", .fieldtype = "int", .offset = offsetof(struct CoerceToDomain, resulttypmod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultcollid", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceToDomain, resultcollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coercionformat", .fieldtype = "enum CoercionForm", .offset = offsetof(struct CoerceToDomain, coercionformat), .size = sizeof(enum CoercionForm), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CoerceToDomain, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CoerceToDomainValue, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeId", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceToDomainValue, typeId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeMod", .fieldtype = "int", .offset = offsetof(struct CoerceToDomainValue, typeMod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collation", .fieldtype = "unsigned int", .offset = offsetof(struct CoerceToDomainValue, collation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CoerceToDomainValue, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct SetToDefault, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeId", .fieldtype = "unsigned int", .offset = offsetof(struct SetToDefault, typeId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeMod", .fieldtype = "int", .offset = offsetof(struct SetToDefault, typeMod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collation", .fieldtype = "unsigned int", .offset = offsetof(struct SetToDefault, collation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct SetToDefault, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct CurrentOfExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cvarno", .fieldtype = "unsigned int", .offset = offsetof(struct CurrentOfExpr, cvarno), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cursor_name", .fieldtype = "char *", .offset = offsetof(struct CurrentOfExpr, cursor_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "cursor_param", .fieldtype = "int", .offset = offsetof(struct CurrentOfExpr, cursor_param), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct NextValueExpr, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "seqid", .fieldtype = "unsigned int", .offset = offsetof(struct NextValueExpr, seqid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeId", .fieldtype = "unsigned int", .offset = offsetof(struct NextValueExpr, typeId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct InferenceElem, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Node *", .offset = offsetof(struct InferenceElem, expr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "infercollid", .fieldtype = "unsigned int", .offset = offsetof(struct InferenceElem, infercollid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inferopclass", .fieldtype = "unsigned int", .offset = offsetof(struct InferenceElem, inferopclass), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct TargetEntry, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Expr *", .offset = offsetof(struct TargetEntry, expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resno", .fieldtype = "short", .offset = offsetof(struct TargetEntry, resno), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resname", .fieldtype = "char *", .offset = offsetof(struct TargetEntry, resname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "ressortgroupref", .fieldtype = "unsigned int", .offset = offsetof(struct TargetEntry, ressortgroupref), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resorigtbl", .fieldtype = "unsigned int", .offset = offsetof(struct TargetEntry, resorigtbl), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resorigcol", .fieldtype = "short", .offset = offsetof(struct TargetEntry, resorigcol), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resjunk", .fieldtype = "_Bool", .offset = offsetof(struct TargetEntry, resjunk), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTblRef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtindex", .fieldtype = "int", .offset = offsetof(struct RangeTblRef, rtindex), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct JoinExpr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct JoinExpr, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isNatural", .fieldtype = "_Bool", .offset = offsetof(struct JoinExpr, isNatural), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "larg", .fieldtype = "struct Node *", .offset = offsetof(struct JoinExpr, larg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rarg", .fieldtype = "struct Node *", .offset = offsetof(struct JoinExpr, rarg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "usingClause", .fieldtype = "struct List *", .offset = offsetof(struct JoinExpr, usingClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "quals", .fieldtype = "struct Node *", .offset = offsetof(struct JoinExpr, quals), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct JoinExpr, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtindex", .fieldtype = "int", .offset = offsetof(struct JoinExpr, rtindex), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct FromExpr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fromlist", .fieldtype = "struct List *", .offset = offsetof(struct FromExpr, fromlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "quals", .fieldtype = "struct Node *", .offset = offsetof(struct FromExpr, quals), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct OnConflictExpr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "action", .fieldtype = "enum OnConflictAction", .offset = offsetof(struct OnConflictExpr, action), .size = sizeof(enum OnConflictAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arbiterElems", .fieldtype = "struct List *", .offset = offsetof(struct OnConflictExpr, arbiterElems), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arbiterWhere", .fieldtype = "struct Node *", .offset = offsetof(struct OnConflictExpr, arbiterWhere), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "constraint", .fieldtype = "unsigned int", .offset = offsetof(struct OnConflictExpr, constraint), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflictSet", .fieldtype = "struct List *", .offset = offsetof(struct OnConflictExpr, onConflictSet), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflictWhere", .fieldtype = "struct Node *", .offset = offsetof(struct OnConflictExpr, onConflictWhere), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "exclRelIndex", .fieldtype = "int", .offset = offsetof(struct OnConflictExpr, exclRelIndex), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exclRelTlist", .fieldtype = "struct List *", .offset = offsetof(struct OnConflictExpr, exclRelTlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Value, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "union ValUnion", .offset = offsetof(struct Value, val), .size = sizeof(union ValUnion), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionBoundSpec, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strategy", .fieldtype = "char", .offset = offsetof(struct PartitionBoundSpec, strategy), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_default", .fieldtype = "_Bool", .offset = offsetof(struct PartitionBoundSpec, is_default), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "modulus", .fieldtype = "int", .offset = offsetof(struct PartitionBoundSpec, modulus), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "remainder", .fieldtype = "int", .offset = offsetof(struct PartitionBoundSpec, remainder), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "listdatums", .fieldtype = "struct List *", .offset = offsetof(struct PartitionBoundSpec, listdatums), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lowerdatums", .fieldtype = "struct List *", .offset = offsetof(struct PartitionBoundSpec, lowerdatums), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "upperdatums", .fieldtype = "struct List *", .offset = offsetof(struct PartitionBoundSpec, upperdatums), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct PartitionBoundSpec, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Query, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "commandType", .fieldtype = "enum CmdType", .offset = offsetof(struct Query, commandType), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "querySource", .fieldtype = "enum QuerySource", .offset = offsetof(struct Query, querySource), .size = sizeof(enum QuerySource), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "queryId", .fieldtype = "unsigned long", .offset = offsetof(struct Query, queryId), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canSetTag", .fieldtype = "_Bool", .offset = offsetof(struct Query, canSetTag), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "utilityStmt", .fieldtype = "struct Node *", .offset = offsetof(struct Query, utilityStmt), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "resultRelation", .fieldtype = "int", .offset = offsetof(struct Query, resultRelation), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasAggs", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasAggs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasWindowFuncs", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasWindowFuncs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasTargetSRFs", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasTargetSRFs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasSubLinks", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasSubLinks), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasDistinctOn", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasDistinctOn), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasRecursive", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasRecursive), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasModifyingCTE", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasModifyingCTE), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasForUpdate", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasForUpdate), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasRowSecurity", .fieldtype = "_Bool", .offset = offsetof(struct Query, hasRowSecurity), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cteList", .fieldtype = "struct List *", .offset = offsetof(struct Query, cteList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtable", .fieldtype = "struct List *", .offset = offsetof(struct Query, rtable), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointree", .fieldtype = "struct FromExpr *", .offset = offsetof(struct Query, jointree), .size = sizeof(struct FromExpr *), .flags = TYPE_CAT_POINTER, .node_type_id = 149, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targetList", .fieldtype = "struct List *", .offset = offsetof(struct Query, targetList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "override", .fieldtype = "enum OverridingKind", .offset = offsetof(struct Query, override), .size = sizeof(enum OverridingKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflict", .fieldtype = "struct OnConflictExpr *", .offset = offsetof(struct Query, onConflict), .size = sizeof(struct OnConflictExpr *), .flags = TYPE_CAT_POINTER, .node_type_id = 150, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returningList", .fieldtype = "struct List *", .offset = offsetof(struct Query, returningList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupClause", .fieldtype = "struct List *", .offset = offsetof(struct Query, groupClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupingSets", .fieldtype = "struct List *", .offset = offsetof(struct Query, groupingSets), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "havingQual", .fieldtype = "struct Node *", .offset = offsetof(struct Query, havingQual), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "windowClause", .fieldtype = "struct List *", .offset = offsetof(struct Query, windowClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "distinctClause", .fieldtype = "struct List *", .offset = offsetof(struct Query, distinctClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortClause", .fieldtype = "struct List *", .offset = offsetof(struct Query, sortClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitOffset", .fieldtype = "struct Node *", .offset = offsetof(struct Query, limitOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "limitCount", .fieldtype = "struct Node *", .offset = offsetof(struct Query, limitCount), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct Query, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setOperations", .fieldtype = "struct Node *", .offset = offsetof(struct Query, setOperations), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "constraintDeps", .fieldtype = "struct List *", .offset = offsetof(struct Query, constraintDeps), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withCheckOptions", .fieldtype = "struct List *", .offset = offsetof(struct Query, withCheckOptions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt_location", .fieldtype = "int", .offset = offsetof(struct Query, stmt_location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt_len", .fieldtype = "int", .offset = offsetof(struct Query, stmt_len), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TypeName, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "names", .fieldtype = "struct List *", .offset = offsetof(struct TypeName, names), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeOid", .fieldtype = "unsigned int", .offset = offsetof(struct TypeName, typeOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setof", .fieldtype = "_Bool", .offset = offsetof(struct TypeName, setof), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pct_type", .fieldtype = "_Bool", .offset = offsetof(struct TypeName, pct_type), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typmods", .fieldtype = "struct List *", .offset = offsetof(struct TypeName, typmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typemod", .fieldtype = "int", .offset = offsetof(struct TypeName, typemod), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arrayBounds", .fieldtype = "struct List *", .offset = offsetof(struct TypeName, arrayBounds), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct TypeName, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ColumnRef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fields", .fieldtype = "struct List *", .offset = offsetof(struct ColumnRef, fields), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ColumnRef, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ParamRef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "number", .fieldtype = "int", .offset = offsetof(struct ParamRef, number), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ParamRef, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_Expr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum A_Expr_Kind", .offset = offsetof(struct A_Expr, kind), .size = sizeof(enum A_Expr_Kind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "struct List *", .offset = offsetof(struct A_Expr, name), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lexpr", .fieldtype = "struct Node *", .offset = offsetof(struct A_Expr, lexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rexpr", .fieldtype = "struct Node *", .offset = offsetof(struct A_Expr, rexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct A_Expr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_Const, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "struct Value", .offset = offsetof(struct A_Const, val), .size = sizeof(struct Value), .flags = TYPE_CAT_SCALAR, .node_type_id = 217, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct A_Const, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TypeCast, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Node *", .offset = offsetof(struct TypeCast, arg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "typeName", .fieldtype = "struct TypeName *", .offset = offsetof(struct TypeCast, typeName), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct TypeCast, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CollateClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Node *", .offset = offsetof(struct CollateClause, arg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "collname", .fieldtype = "struct List *", .offset = offsetof(struct CollateClause, collname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CollateClause, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RoleSpec, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roletype", .fieldtype = "enum RoleSpecType", .offset = offsetof(struct RoleSpec, roletype), .size = sizeof(enum RoleSpecType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rolename", .fieldtype = "char *", .offset = offsetof(struct RoleSpec, rolename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RoleSpec, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct FuncCall, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcname", .fieldtype = "struct List *", .offset = offsetof(struct FuncCall, funcname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct FuncCall, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_order", .fieldtype = "struct List *", .offset = offsetof(struct FuncCall, agg_order), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_filter", .fieldtype = "struct Node *", .offset = offsetof(struct FuncCall, agg_filter), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "agg_within_group", .fieldtype = "_Bool", .offset = offsetof(struct FuncCall, agg_within_group), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_star", .fieldtype = "_Bool", .offset = offsetof(struct FuncCall, agg_star), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_distinct", .fieldtype = "_Bool", .offset = offsetof(struct FuncCall, agg_distinct), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "func_variadic", .fieldtype = "_Bool", .offset = offsetof(struct FuncCall, func_variadic), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "over", .fieldtype = "struct WindowDef *", .offset = offsetof(struct FuncCall, over), .size = sizeof(struct WindowDef *), .flags = TYPE_CAT_POINTER, .node_type_id = 355, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct FuncCall, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_Star, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_Indices, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_slice", .fieldtype = "_Bool", .offset = offsetof(struct A_Indices, is_slice), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lidx", .fieldtype = "struct Node *", .offset = offsetof(struct A_Indices, lidx), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "uidx", .fieldtype = "struct Node *", .offset = offsetof(struct A_Indices, uidx), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_Indirection, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arg", .fieldtype = "struct Node *", .offset = offsetof(struct A_Indirection, arg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "indirection", .fieldtype = "struct List *", .offset = offsetof(struct A_Indirection, indirection), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct A_ArrayExpr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elements", .fieldtype = "struct List *", .offset = offsetof(struct A_ArrayExpr, elements), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct A_ArrayExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ResTarget, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct ResTarget, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "indirection", .fieldtype = "struct List *", .offset = offsetof(struct ResTarget, indirection), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "val", .fieldtype = "struct Node *", .offset = offsetof(struct ResTarget, val), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ResTarget, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct MultiAssignRef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "source", .fieldtype = "struct Node *", .offset = offsetof(struct MultiAssignRef, source), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "colno", .fieldtype = "int", .offset = offsetof(struct MultiAssignRef, colno), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ncolumns", .fieldtype = "int", .offset = offsetof(struct MultiAssignRef, ncolumns), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SortBy, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "node", .fieldtype = "struct Node *", .offset = offsetof(struct SortBy, node), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "sortby_dir", .fieldtype = "enum SortByDir", .offset = offsetof(struct SortBy, sortby_dir), .size = sizeof(enum SortByDir), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortby_nulls", .fieldtype = "enum SortByNulls", .offset = offsetof(struct SortBy, sortby_nulls), .size = sizeof(enum SortByNulls), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "useOp", .fieldtype = "struct List *", .offset = offsetof(struct SortBy, useOp), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct SortBy, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct WindowDef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct WindowDef, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "refname", .fieldtype = "char *", .offset = offsetof(struct WindowDef, refname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "partitionClause", .fieldtype = "struct List *", .offset = offsetof(struct WindowDef, partitionClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "orderClause", .fieldtype = "struct List *", .offset = offsetof(struct WindowDef, orderClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frameOptions", .fieldtype = "int", .offset = offsetof(struct WindowDef, frameOptions), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowDef, startOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "endOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowDef, endOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct WindowDef, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeSubselect, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lateral", .fieldtype = "_Bool", .offset = offsetof(struct RangeSubselect, lateral), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subquery", .fieldtype = "struct Node *", .offset = offsetof(struct RangeSubselect, subquery), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeSubselect, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeFunction, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lateral", .fieldtype = "_Bool", .offset = offsetof(struct RangeFunction, lateral), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordinality", .fieldtype = "_Bool", .offset = offsetof(struct RangeFunction, ordinality), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_rowsfrom", .fieldtype = "_Bool", .offset = offsetof(struct RangeFunction, is_rowsfrom), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "functions", .fieldtype = "struct List *", .offset = offsetof(struct RangeFunction, functions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeFunction, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coldeflist", .fieldtype = "struct List *", .offset = offsetof(struct RangeFunction, coldeflist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTableFunc, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lateral", .fieldtype = "_Bool", .offset = offsetof(struct RangeTableFunc, lateral), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "docexpr", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableFunc, docexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rowexpr", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableFunc, rowexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "namespaces", .fieldtype = "struct List *", .offset = offsetof(struct RangeTableFunc, namespaces), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "columns", .fieldtype = "struct List *", .offset = offsetof(struct RangeTableFunc, columns), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeTableFunc, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RangeTableFunc, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTableFuncCol, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colname", .fieldtype = "char *", .offset = offsetof(struct RangeTableFuncCol, colname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "typeName", .fieldtype = "struct TypeName *", .offset = offsetof(struct RangeTableFuncCol, typeName), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_ordinality", .fieldtype = "_Bool", .offset = offsetof(struct RangeTableFuncCol, for_ordinality), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_not_null", .fieldtype = "_Bool", .offset = offsetof(struct RangeTableFuncCol, is_not_null), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colexpr", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableFuncCol, colexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "coldefexpr", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableFuncCol, coldefexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RangeTableFuncCol, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTableSample, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableSample, relation), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "method", .fieldtype = "struct List *", .offset = offsetof(struct RangeTableSample, method), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct RangeTableSample, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "repeatable", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTableSample, repeatable), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct RangeTableSample, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ColumnDef, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colname", .fieldtype = "char *", .offset = offsetof(struct ColumnDef, colname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "typeName", .fieldtype = "struct TypeName *", .offset = offsetof(struct ColumnDef, typeName), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inhcount", .fieldtype = "int", .offset = offsetof(struct ColumnDef, inhcount), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_local", .fieldtype = "_Bool", .offset = offsetof(struct ColumnDef, is_local), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_not_null", .fieldtype = "_Bool", .offset = offsetof(struct ColumnDef, is_not_null), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_from_type", .fieldtype = "_Bool", .offset = offsetof(struct ColumnDef, is_from_type), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "storage", .fieldtype = "char", .offset = offsetof(struct ColumnDef, storage), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "raw_default", .fieldtype = "struct Node *", .offset = offsetof(struct ColumnDef, raw_default), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "cooked_default", .fieldtype = "struct Node *", .offset = offsetof(struct ColumnDef, cooked_default), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "identity", .fieldtype = "char", .offset = offsetof(struct ColumnDef, identity), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "identitySequence", .fieldtype = "struct RangeVar *", .offset = offsetof(struct ColumnDef, identitySequence), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "generated", .fieldtype = "char", .offset = offsetof(struct ColumnDef, generated), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collClause", .fieldtype = "struct CollateClause *", .offset = offsetof(struct ColumnDef, collClause), .size = sizeof(struct CollateClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 353, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collOid", .fieldtype = "unsigned int", .offset = offsetof(struct ColumnDef, collOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constraints", .fieldtype = "struct List *", .offset = offsetof(struct ColumnDef, constraints), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwoptions", .fieldtype = "struct List *", .offset = offsetof(struct ColumnDef, fdwoptions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct ColumnDef, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TableLikeClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct TableLikeClause, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "unsigned int", .offset = offsetof(struct TableLikeClause, options), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IndexElem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct IndexElem, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "expr", .fieldtype = "struct Node *", .offset = offsetof(struct IndexElem, expr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "indexcolname", .fieldtype = "char *", .offset = offsetof(struct IndexElem, indexcolname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "collation", .fieldtype = "struct List *", .offset = offsetof(struct IndexElem, collation), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opclass", .fieldtype = "struct List *", .offset = offsetof(struct IndexElem, opclass), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordering", .fieldtype = "enum SortByDir", .offset = offsetof(struct IndexElem, ordering), .size = sizeof(enum SortByDir), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nulls_ordering", .fieldtype = "enum SortByNulls", .offset = offsetof(struct IndexElem, nulls_ordering), .size = sizeof(enum SortByNulls), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DefElem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "defnamespace", .fieldtype = "char *", .offset = offsetof(struct DefElem, defnamespace), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "defname", .fieldtype = "char *", .offset = offsetof(struct DefElem, defname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "arg", .fieldtype = "struct Node *", .offset = offsetof(struct DefElem, arg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "defaction", .fieldtype = "enum DefElemAction", .offset = offsetof(struct DefElem, defaction), .size = sizeof(enum DefElemAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct DefElem, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct LockingClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lockedRels", .fieldtype = "struct List *", .offset = offsetof(struct LockingClause, lockedRels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strength", .fieldtype = "enum LockClauseStrength", .offset = offsetof(struct LockingClause, strength), .size = sizeof(enum LockClauseStrength), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "waitPolicy", .fieldtype = "enum LockWaitPolicy", .offset = offsetof(struct LockingClause, waitPolicy), .size = sizeof(enum LockWaitPolicy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct XmlSerialize, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xmloption", .fieldtype = "XmlOptionType", .offset = offsetof(struct XmlSerialize, xmloption), .size = sizeof(XmlOptionType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Node *", .offset = offsetof(struct XmlSerialize, expr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "typeName", .fieldtype = "struct TypeName *", .offset = offsetof(struct XmlSerialize, typeName), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct XmlSerialize, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionElem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct PartitionElem, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "expr", .fieldtype = "struct Node *", .offset = offsetof(struct PartitionElem, expr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "collation", .fieldtype = "struct List *", .offset = offsetof(struct PartitionElem, collation), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opclass", .fieldtype = "struct List *", .offset = offsetof(struct PartitionElem, opclass), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct PartitionElem, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionSpec, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strategy", .fieldtype = "char *", .offset = offsetof(struct PartitionSpec, strategy), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "partParams", .fieldtype = "struct List *", .offset = offsetof(struct PartitionSpec, partParams), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct PartitionSpec, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionRangeDatum, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum PartitionRangeDatumKind", .offset = offsetof(struct PartitionRangeDatum, kind), .size = sizeof(enum PartitionRangeDatumKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "value", .fieldtype = "struct Node *", .offset = offsetof(struct PartitionRangeDatum, value), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct PartitionRangeDatum, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "struct RangeVar *", .offset = offsetof(struct PartitionCmd, name), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bound", .fieldtype = "struct PartitionBoundSpec *", .offset = offsetof(struct PartitionCmd, bound), .size = sizeof(struct PartitionBoundSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 389, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTblEntry, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtekind", .fieldtype = "enum RTEKind", .offset = offsetof(struct RangeTblEntry, rtekind), .size = sizeof(enum RTEKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relid", .fieldtype = "unsigned int", .offset = offsetof(struct RangeTblEntry, relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relkind", .fieldtype = "char", .offset = offsetof(struct RangeTblEntry, relkind), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rellockmode", .fieldtype = "int", .offset = offsetof(struct RangeTblEntry, rellockmode), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablesample", .fieldtype = "struct TableSampleClause *", .offset = offsetof(struct RangeTblEntry, tablesample), .size = sizeof(struct TableSampleClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 368, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subquery", .fieldtype = "struct Query *", .offset = offsetof(struct RangeTblEntry, subquery), .size = sizeof(struct Query *), .flags = TYPE_CAT_POINTER, .node_type_id = 228, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "security_barrier", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, security_barrier), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct RangeTblEntry, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "joinaliasvars", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, joinaliasvars), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "functions", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, functions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcordinality", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, funcordinality), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablefunc", .fieldtype = "struct TableFunc *", .offset = offsetof(struct RangeTblEntry, tablefunc), .size = sizeof(struct TableFunc *), .flags = TYPE_CAT_POINTER, .node_type_id = 102, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "values_lists", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, values_lists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctename", .fieldtype = "char *", .offset = offsetof(struct RangeTblEntry, ctename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "ctelevelsup", .fieldtype = "unsigned int", .offset = offsetof(struct RangeTblEntry, ctelevelsup), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "self_reference", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, self_reference), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coltypes", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, coltypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coltypmods", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, coltypmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colcollations", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, colcollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "enrname", .fieldtype = "char *", .offset = offsetof(struct RangeTblEntry, enrname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "enrtuples", .fieldtype = "double", .offset = offsetof(struct RangeTblEntry, enrtuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "alias", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeTblEntry, alias), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eref", .fieldtype = "struct Alias *", .offset = offsetof(struct RangeTblEntry, eref), .size = sizeof(struct Alias *), .flags = TYPE_CAT_POINTER, .node_type_id = 100, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lateral", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, lateral), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inh", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, inh), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inFromCl", .fieldtype = "_Bool", .offset = offsetof(struct RangeTblEntry, inFromCl), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "requiredPerms", .fieldtype = "unsigned int", .offset = offsetof(struct RangeTblEntry, requiredPerms), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "checkAsUser", .fieldtype = "unsigned int", .offset = offsetof(struct RangeTblEntry, checkAsUser), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "selectedCols", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RangeTblEntry, selectedCols), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "insertedCols", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RangeTblEntry, insertedCols), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "updatedCols", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RangeTblEntry, updatedCols), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "extraUpdatedCols", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RangeTblEntry, extraUpdatedCols), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "securityQuals", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblEntry, securityQuals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RangeTblFunction, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcexpr", .fieldtype = "struct Node *", .offset = offsetof(struct RangeTblFunction, funcexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "funccolcount", .fieldtype = "int", .offset = offsetof(struct RangeTblFunction, funccolcount), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccolnames", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblFunction, funccolnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccoltypes", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblFunction, funccoltypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccoltypmods", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblFunction, funccoltypmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccolcollations", .fieldtype = "struct List *", .offset = offsetof(struct RangeTblFunction, funccolcollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcparams", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RangeTblFunction, funcparams), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TableSampleClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tsmhandler", .fieldtype = "unsigned int", .offset = offsetof(struct TableSampleClause, tsmhandler), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct TableSampleClause, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "repeatable", .fieldtype = "struct Expr *", .offset = offsetof(struct TableSampleClause, repeatable), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct WithCheckOption, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum WCOKind", .offset = offsetof(struct WithCheckOption, kind), .size = sizeof(enum WCOKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relname", .fieldtype = "char *", .offset = offsetof(struct WithCheckOption, relname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "polname", .fieldtype = "char *", .offset = offsetof(struct WithCheckOption, polname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "qual", .fieldtype = "struct Node *", .offset = offsetof(struct WithCheckOption, qual), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "cascaded", .fieldtype = "_Bool", .offset = offsetof(struct WithCheckOption, cascaded), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SortGroupClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tleSortGroupRef", .fieldtype = "unsigned int", .offset = offsetof(struct SortGroupClause, tleSortGroupRef), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqop", .fieldtype = "unsigned int", .offset = offsetof(struct SortGroupClause, eqop), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortop", .fieldtype = "unsigned int", .offset = offsetof(struct SortGroupClause, sortop), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nulls_first", .fieldtype = "_Bool", .offset = offsetof(struct SortGroupClause, nulls_first), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashable", .fieldtype = "_Bool", .offset = offsetof(struct SortGroupClause, hashable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct GroupingSet, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "GroupingSetKind", .offset = offsetof(struct GroupingSet, kind), .size = sizeof(GroupingSetKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "content", .fieldtype = "struct List *", .offset = offsetof(struct GroupingSet, content), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct GroupingSet, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct WindowClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct WindowClause, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "refname", .fieldtype = "char *", .offset = offsetof(struct WindowClause, refname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "partitionClause", .fieldtype = "struct List *", .offset = offsetof(struct WindowClause, partitionClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "orderClause", .fieldtype = "struct List *", .offset = offsetof(struct WindowClause, orderClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frameOptions", .fieldtype = "int", .offset = offsetof(struct WindowClause, frameOptions), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowClause, startOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "endOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowClause, endOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "startInRangeFunc", .fieldtype = "unsigned int", .offset = offsetof(struct WindowClause, startInRangeFunc), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "endInRangeFunc", .fieldtype = "unsigned int", .offset = offsetof(struct WindowClause, endInRangeFunc), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeColl", .fieldtype = "unsigned int", .offset = offsetof(struct WindowClause, inRangeColl), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeAsc", .fieldtype = "_Bool", .offset = offsetof(struct WindowClause, inRangeAsc), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeNullsFirst", .fieldtype = "_Bool", .offset = offsetof(struct WindowClause, inRangeNullsFirst), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winref", .fieldtype = "unsigned int", .offset = offsetof(struct WindowClause, winref), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "copiedOrder", .fieldtype = "_Bool", .offset = offsetof(struct WindowClause, copiedOrder), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RowMarkClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rti", .fieldtype = "unsigned int", .offset = offsetof(struct RowMarkClause, rti), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strength", .fieldtype = "enum LockClauseStrength", .offset = offsetof(struct RowMarkClause, strength), .size = sizeof(enum LockClauseStrength), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "waitPolicy", .fieldtype = "enum LockWaitPolicy", .offset = offsetof(struct RowMarkClause, waitPolicy), .size = sizeof(enum LockWaitPolicy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pushedDown", .fieldtype = "_Bool", .offset = offsetof(struct RowMarkClause, pushedDown), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct WithClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctes", .fieldtype = "struct List *", .offset = offsetof(struct WithClause, ctes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "recursive", .fieldtype = "_Bool", .offset = offsetof(struct WithClause, recursive), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct WithClause, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct InferClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexElems", .fieldtype = "struct List *", .offset = offsetof(struct InferClause, indexElems), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct InferClause, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "conname", .fieldtype = "char *", .offset = offsetof(struct InferClause, conname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct InferClause, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct OnConflictClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "action", .fieldtype = "enum OnConflictAction", .offset = offsetof(struct OnConflictClause, action), .size = sizeof(enum OnConflictAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "infer", .fieldtype = "struct InferClause *", .offset = offsetof(struct OnConflictClause, infer), .size = sizeof(struct InferClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 382, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targetList", .fieldtype = "struct List *", .offset = offsetof(struct OnConflictClause, targetList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct OnConflictClause, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct OnConflictClause, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CommonTableExpr, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctename", .fieldtype = "char *", .offset = offsetof(struct CommonTableExpr, ctename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "aliascolnames", .fieldtype = "struct List *", .offset = offsetof(struct CommonTableExpr, aliascolnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctematerialized", .fieldtype = "enum CTEMaterialize", .offset = offsetof(struct CommonTableExpr, ctematerialized), .size = sizeof(enum CTEMaterialize), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctequery", .fieldtype = "struct Node *", .offset = offsetof(struct CommonTableExpr, ctequery), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct CommonTableExpr, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cterecursive", .fieldtype = "_Bool", .offset = offsetof(struct CommonTableExpr, cterecursive), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cterefcount", .fieldtype = "int", .offset = offsetof(struct CommonTableExpr, cterefcount), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctecolnames", .fieldtype = "struct List *", .offset = offsetof(struct CommonTableExpr, ctecolnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctecoltypes", .fieldtype = "struct List *", .offset = offsetof(struct CommonTableExpr, ctecoltypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctecoltypmods", .fieldtype = "struct List *", .offset = offsetof(struct CommonTableExpr, ctecoltypmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctecolcollations", .fieldtype = "struct List *", .offset = offsetof(struct CommonTableExpr, ctecolcollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TriggerTransition, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct TriggerTransition, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "isNew", .fieldtype = "_Bool", .offset = offsetof(struct TriggerTransition, isNew), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isTable", .fieldtype = "_Bool", .offset = offsetof(struct TriggerTransition, isTable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RawStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt", .fieldtype = "struct Node *", .offset = offsetof(struct RawStmt, stmt), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "stmt_location", .fieldtype = "int", .offset = offsetof(struct RawStmt, stmt_location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt_len", .fieldtype = "int", .offset = offsetof(struct RawStmt, stmt_len), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct InsertStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct InsertStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cols", .fieldtype = "struct List *", .offset = offsetof(struct InsertStmt, cols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "selectStmt", .fieldtype = "struct Node *", .offset = offsetof(struct InsertStmt, selectStmt), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "onConflictClause", .fieldtype = "struct OnConflictClause *", .offset = offsetof(struct InsertStmt, onConflictClause), .size = sizeof(struct OnConflictClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 383, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returningList", .fieldtype = "struct List *", .offset = offsetof(struct InsertStmt, returningList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withClause", .fieldtype = "struct WithClause *", .offset = offsetof(struct InsertStmt, withClause), .size = sizeof(struct WithClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 381, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "override", .fieldtype = "enum OverridingKind", .offset = offsetof(struct InsertStmt, override), .size = sizeof(enum OverridingKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DeleteStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct DeleteStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "usingClause", .fieldtype = "struct List *", .offset = offsetof(struct DeleteStmt, usingClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct DeleteStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "returningList", .fieldtype = "struct List *", .offset = offsetof(struct DeleteStmt, returningList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withClause", .fieldtype = "struct WithClause *", .offset = offsetof(struct DeleteStmt, withClause), .size = sizeof(struct WithClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 381, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct UpdateStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct UpdateStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targetList", .fieldtype = "struct List *", .offset = offsetof(struct UpdateStmt, targetList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct UpdateStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "fromClause", .fieldtype = "struct List *", .offset = offsetof(struct UpdateStmt, fromClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returningList", .fieldtype = "struct List *", .offset = offsetof(struct UpdateStmt, returningList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withClause", .fieldtype = "struct WithClause *", .offset = offsetof(struct UpdateStmt, withClause), .size = sizeof(struct WithClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 381, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SelectStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "distinctClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, distinctClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "intoClause", .fieldtype = "struct IntoClause *", .offset = offsetof(struct SelectStmt, intoClause), .size = sizeof(struct IntoClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 151, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targetList", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, targetList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fromClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, fromClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct SelectStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "groupClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, groupClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "havingClause", .fieldtype = "struct Node *", .offset = offsetof(struct SelectStmt, havingClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "windowClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, windowClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "valuesLists", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, valuesLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, sortClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitOffset", .fieldtype = "struct Node *", .offset = offsetof(struct SelectStmt, limitOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "limitCount", .fieldtype = "struct Node *", .offset = offsetof(struct SelectStmt, limitCount), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "lockingClause", .fieldtype = "struct List *", .offset = offsetof(struct SelectStmt, lockingClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withClause", .fieldtype = "struct WithClause *", .offset = offsetof(struct SelectStmt, withClause), .size = sizeof(struct WithClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 381, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "op", .fieldtype = "enum SetOperation", .offset = offsetof(struct SelectStmt, op), .size = sizeof(enum SetOperation), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all", .fieldtype = "_Bool", .offset = offsetof(struct SelectStmt, all), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "larg", .fieldtype = "struct SelectStmt *", .offset = offsetof(struct SelectStmt, larg), .size = sizeof(struct SelectStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 233, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rarg", .fieldtype = "struct SelectStmt *", .offset = offsetof(struct SelectStmt, rarg), .size = sizeof(struct SelectStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 233, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SetOperationStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "op", .fieldtype = "enum SetOperation", .offset = offsetof(struct SetOperationStmt, op), .size = sizeof(enum SetOperation), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all", .fieldtype = "_Bool", .offset = offsetof(struct SetOperationStmt, all), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "larg", .fieldtype = "struct Node *", .offset = offsetof(struct SetOperationStmt, larg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "rarg", .fieldtype = "struct Node *", .offset = offsetof(struct SetOperationStmt, rarg), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "colTypes", .fieldtype = "struct List *", .offset = offsetof(struct SetOperationStmt, colTypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colTypmods", .fieldtype = "struct List *", .offset = offsetof(struct SetOperationStmt, colTypmods), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colCollations", .fieldtype = "struct List *", .offset = offsetof(struct SetOperationStmt, colCollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupClauses", .fieldtype = "struct List *", .offset = offsetof(struct SetOperationStmt, groupClauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateSchemaStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "schemaname", .fieldtype = "char *", .offset = offsetof(struct CreateSchemaStmt, schemaname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "authrole", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct CreateSchemaStmt, authrole), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "schemaElts", .fieldtype = "struct List *", .offset = offsetof(struct CreateSchemaStmt, schemaElts), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateSchemaStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTableStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterTableStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cmds", .fieldtype = "struct List *", .offset = offsetof(struct AlterTableStmt, cmds), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relkind", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterTableStmt, relkind), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterTableStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ReplicaIdentityStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "identity_type", .fieldtype = "char", .offset = offsetof(struct ReplicaIdentityStmt, identity_type), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct ReplicaIdentityStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTableCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subtype", .fieldtype = "enum AlterTableType", .offset = offsetof(struct AlterTableCmd, subtype), .size = sizeof(enum AlterTableType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct AlterTableCmd, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "num", .fieldtype = "short", .offset = offsetof(struct AlterTableCmd, num), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "newowner", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct AlterTableCmd, newowner), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "def", .fieldtype = "struct Node *", .offset = offsetof(struct AlterTableCmd, def), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct AlterTableCmd, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterTableCmd, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterCollationStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collname", .fieldtype = "struct List *", .offset = offsetof(struct AlterCollationStmt, collname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterDomainStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subtype", .fieldtype = "char", .offset = offsetof(struct AlterDomainStmt, subtype), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeName", .fieldtype = "struct List *", .offset = offsetof(struct AlterDomainStmt, typeName), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct AlterDomainStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "def", .fieldtype = "struct Node *", .offset = offsetof(struct AlterDomainStmt, def), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct AlterDomainStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterDomainStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct GrantStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_grant", .fieldtype = "_Bool", .offset = offsetof(struct GrantStmt, is_grant), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targtype", .fieldtype = "enum GrantTargetType", .offset = offsetof(struct GrantStmt, targtype), .size = sizeof(enum GrantTargetType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct GrantStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objects", .fieldtype = "struct List *", .offset = offsetof(struct GrantStmt, objects), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "privileges", .fieldtype = "struct List *", .offset = offsetof(struct GrantStmt, privileges), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grantees", .fieldtype = "struct List *", .offset = offsetof(struct GrantStmt, grantees), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grant_option", .fieldtype = "_Bool", .offset = offsetof(struct GrantStmt, grant_option), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct GrantStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ObjectWithArgs, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objname", .fieldtype = "struct List *", .offset = offsetof(struct ObjectWithArgs, objname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objargs", .fieldtype = "struct List *", .offset = offsetof(struct ObjectWithArgs, objargs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args_unspecified", .fieldtype = "_Bool", .offset = offsetof(struct ObjectWithArgs, args_unspecified), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AccessPriv, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "priv_name", .fieldtype = "char *", .offset = offsetof(struct AccessPriv, priv_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "cols", .fieldtype = "struct List *", .offset = offsetof(struct AccessPriv, cols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct GrantRoleStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "granted_roles", .fieldtype = "struct List *", .offset = offsetof(struct GrantRoleStmt, granted_roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grantee_roles", .fieldtype = "struct List *", .offset = offsetof(struct GrantRoleStmt, grantee_roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_grant", .fieldtype = "_Bool", .offset = offsetof(struct GrantRoleStmt, is_grant), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "admin_opt", .fieldtype = "_Bool", .offset = offsetof(struct GrantRoleStmt, admin_opt), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grantor", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct GrantRoleStmt, grantor), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct GrantRoleStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterDefaultPrivilegesStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterDefaultPrivilegesStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "action", .fieldtype = "struct GrantStmt *", .offset = offsetof(struct AlterDefaultPrivilegesStmt, action), .size = sizeof(struct GrantStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 238, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CopyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CopyStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct CopyStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "attlist", .fieldtype = "struct List *", .offset = offsetof(struct CopyStmt, attlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_from", .fieldtype = "_Bool", .offset = offsetof(struct CopyStmt, is_from), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_program", .fieldtype = "_Bool", .offset = offsetof(struct CopyStmt, is_program), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "filename", .fieldtype = "char *", .offset = offsetof(struct CopyStmt, filename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CopyStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct CopyStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct VariableSetStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "VariableSetKind", .offset = offsetof(struct VariableSetStmt, kind), .size = sizeof(VariableSetKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct VariableSetStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct VariableSetStmt, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_local", .fieldtype = "_Bool", .offset = offsetof(struct VariableSetStmt, is_local), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct VariableShowStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct VariableShowStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CreateStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tableElts", .fieldtype = "struct List *", .offset = offsetof(struct CreateStmt, tableElts), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inhRelations", .fieldtype = "struct List *", .offset = offsetof(struct CreateStmt, inhRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partbound", .fieldtype = "struct PartitionBoundSpec *", .offset = offsetof(struct CreateStmt, partbound), .size = sizeof(struct PartitionBoundSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 389, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partspec", .fieldtype = "struct PartitionSpec *", .offset = offsetof(struct CreateStmt, partspec), .size = sizeof(struct PartitionSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 388, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ofTypename", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateStmt, ofTypename), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constraints", .fieldtype = "struct List *", .offset = offsetof(struct CreateStmt, constraints), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oncommit", .fieldtype = "enum OnCommitAction", .offset = offsetof(struct CreateStmt, oncommit), .size = sizeof(enum OnCommitAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablespacename", .fieldtype = "char *", .offset = offsetof(struct CreateStmt, tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "accessMethod", .fieldtype = "char *", .offset = offsetof(struct CreateStmt, accessMethod), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Constraint, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "contype", .fieldtype = "enum ConstrType", .offset = offsetof(struct Constraint, contype), .size = sizeof(enum ConstrType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conname", .fieldtype = "char *", .offset = offsetof(struct Constraint, conname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "deferrable", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, deferrable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initdeferred", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, initdeferred), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "int", .offset = offsetof(struct Constraint, location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_no_inherit", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, is_no_inherit), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "raw_expr", .fieldtype = "struct Node *", .offset = offsetof(struct Constraint, raw_expr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "cooked_expr", .fieldtype = "char *", .offset = offsetof(struct Constraint, cooked_expr), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "generated_when", .fieldtype = "char", .offset = offsetof(struct Constraint, generated_when), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "keys", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, keys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "including", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, including), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exclusions", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, exclusions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexname", .fieldtype = "char *", .offset = offsetof(struct Constraint, indexname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "indexspace", .fieldtype = "char *", .offset = offsetof(struct Constraint, indexspace), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "reset_default_tblspc", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, reset_default_tblspc), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "access_method", .fieldtype = "char *", .offset = offsetof(struct Constraint, access_method), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "where_clause", .fieldtype = "struct Node *", .offset = offsetof(struct Constraint, where_clause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "pktable", .fieldtype = "struct RangeVar *", .offset = offsetof(struct Constraint, pktable), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fk_attrs", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, fk_attrs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pk_attrs", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, pk_attrs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fk_matchtype", .fieldtype = "char", .offset = offsetof(struct Constraint, fk_matchtype), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fk_upd_action", .fieldtype = "char", .offset = offsetof(struct Constraint, fk_upd_action), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fk_del_action", .fieldtype = "char", .offset = offsetof(struct Constraint, fk_del_action), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "old_conpfeqop", .fieldtype = "struct List *", .offset = offsetof(struct Constraint, old_conpfeqop), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "old_pktable_oid", .fieldtype = "unsigned int", .offset = offsetof(struct Constraint, old_pktable_oid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skip_validation", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, skip_validation), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initially_valid", .fieldtype = "_Bool", .offset = offsetof(struct Constraint, initially_valid), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateTableSpaceStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablespacename", .fieldtype = "char *", .offset = offsetof(struct CreateTableSpaceStmt, tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "owner", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct CreateTableSpaceStmt, owner), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "location", .fieldtype = "char *", .offset = offsetof(struct CreateTableSpaceStmt, location), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateTableSpaceStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropTableSpaceStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablespacename", .fieldtype = "char *", .offset = offsetof(struct DropTableSpaceStmt, tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropTableSpaceStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTableSpaceOptionsStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablespacename", .fieldtype = "char *", .offset = offsetof(struct AlterTableSpaceOptionsStmt, tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterTableSpaceOptionsStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isReset", .fieldtype = "_Bool", .offset = offsetof(struct AlterTableSpaceOptionsStmt, isReset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTableMoveAllStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "orig_tablespacename", .fieldtype = "char *", .offset = offsetof(struct AlterTableMoveAllStmt, orig_tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterTableMoveAllStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct AlterTableMoveAllStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "new_tablespacename", .fieldtype = "char *", .offset = offsetof(struct AlterTableMoveAllStmt, new_tablespacename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "nowait", .fieldtype = "_Bool", .offset = offsetof(struct AlterTableMoveAllStmt, nowait), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateExtensionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "extname", .fieldtype = "char *", .offset = offsetof(struct CreateExtensionStmt, extname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateExtensionStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateExtensionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterExtensionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "extname", .fieldtype = "char *", .offset = offsetof(struct AlterExtensionStmt, extname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterExtensionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterExtensionContentsStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "extname", .fieldtype = "char *", .offset = offsetof(struct AlterExtensionContentsStmt, extname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "action", .fieldtype = "int", .offset = offsetof(struct AlterExtensionContentsStmt, action), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterExtensionContentsStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct AlterExtensionContentsStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateFdwStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwname", .fieldtype = "char *", .offset = offsetof(struct CreateFdwStmt, fdwname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "func_options", .fieldtype = "struct List *", .offset = offsetof(struct CreateFdwStmt, func_options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateFdwStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterFdwStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwname", .fieldtype = "char *", .offset = offsetof(struct AlterFdwStmt, fdwname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "func_options", .fieldtype = "struct List *", .offset = offsetof(struct AlterFdwStmt, func_options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterFdwStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateForeignServerStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct CreateForeignServerStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "servertype", .fieldtype = "char *", .offset = offsetof(struct CreateForeignServerStmt, servertype), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "version", .fieldtype = "char *", .offset = offsetof(struct CreateForeignServerStmt, version), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "fdwname", .fieldtype = "char *", .offset = offsetof(struct CreateForeignServerStmt, fdwname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateForeignServerStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateForeignServerStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterForeignServerStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct AlterForeignServerStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "version", .fieldtype = "char *", .offset = offsetof(struct AlterForeignServerStmt, version), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterForeignServerStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "has_version", .fieldtype = "_Bool", .offset = offsetof(struct AlterForeignServerStmt, has_version), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "base", .fieldtype = "struct CreateStmt", .offset = offsetof(struct CreateForeignTableStmt, base), .size = sizeof(struct CreateStmt), .flags = TYPE_CAT_SCALAR, .node_type_id = 244, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct CreateForeignTableStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateForeignTableStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateUserMappingStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "user", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct CreateUserMappingStmt, user), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct CreateUserMappingStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateUserMappingStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateUserMappingStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterUserMappingStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "user", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct AlterUserMappingStmt, user), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct AlterUserMappingStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterUserMappingStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropUserMappingStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "user", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct DropUserMappingStmt, user), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "servername", .fieldtype = "char *", .offset = offsetof(struct DropUserMappingStmt, servername), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropUserMappingStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ImportForeignSchemaStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "server_name", .fieldtype = "char *", .offset = offsetof(struct ImportForeignSchemaStmt, server_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "remote_schema", .fieldtype = "char *", .offset = offsetof(struct ImportForeignSchemaStmt, remote_schema), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "local_schema", .fieldtype = "char *", .offset = offsetof(struct ImportForeignSchemaStmt, local_schema), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "list_type", .fieldtype = "enum ImportForeignSchemaType", .offset = offsetof(struct ImportForeignSchemaStmt, list_type), .size = sizeof(enum ImportForeignSchemaType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "table_list", .fieldtype = "struct List *", .offset = offsetof(struct ImportForeignSchemaStmt, table_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct ImportForeignSchemaStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreatePolicyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "policy_name", .fieldtype = "char *", .offset = offsetof(struct CreatePolicyStmt, policy_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "table", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CreatePolicyStmt, table), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cmd_name", .fieldtype = "char *", .offset = offsetof(struct CreatePolicyStmt, cmd_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "permissive", .fieldtype = "_Bool", .offset = offsetof(struct CreatePolicyStmt, permissive), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct CreatePolicyStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct Node *", .offset = offsetof(struct CreatePolicyStmt, qual), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "with_check", .fieldtype = "struct Node *", .offset = offsetof(struct CreatePolicyStmt, with_check), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterPolicyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "policy_name", .fieldtype = "char *", .offset = offsetof(struct AlterPolicyStmt, policy_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "table", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterPolicyStmt, table), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct AlterPolicyStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct Node *", .offset = offsetof(struct AlterPolicyStmt, qual), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "with_check", .fieldtype = "struct Node *", .offset = offsetof(struct AlterPolicyStmt, with_check), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateAmStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amname", .fieldtype = "char *", .offset = offsetof(struct CreateAmStmt, amname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "handler_name", .fieldtype = "struct List *", .offset = offsetof(struct CreateAmStmt, handler_name), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amtype", .fieldtype = "char", .offset = offsetof(struct CreateAmStmt, amtype), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateTrigStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "trigname", .fieldtype = "char *", .offset = offsetof(struct CreateTrigStmt, trigname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CreateTrigStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcname", .fieldtype = "struct List *", .offset = offsetof(struct CreateTrigStmt, funcname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct CreateTrigStmt, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "row", .fieldtype = "_Bool", .offset = offsetof(struct CreateTrigStmt, row), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "timing", .fieldtype = "short", .offset = offsetof(struct CreateTrigStmt, timing), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "events", .fieldtype = "short", .offset = offsetof(struct CreateTrigStmt, events), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "columns", .fieldtype = "struct List *", .offset = offsetof(struct CreateTrigStmt, columns), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whenClause", .fieldtype = "struct Node *", .offset = offsetof(struct CreateTrigStmt, whenClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "isconstraint", .fieldtype = "_Bool", .offset = offsetof(struct CreateTrigStmt, isconstraint), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "transitionRels", .fieldtype = "struct List *", .offset = offsetof(struct CreateTrigStmt, transitionRels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "deferrable", .fieldtype = "_Bool", .offset = offsetof(struct CreateTrigStmt, deferrable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initdeferred", .fieldtype = "_Bool", .offset = offsetof(struct CreateTrigStmt, initdeferred), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constrrel", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CreateTrigStmt, constrrel), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateEventTrigStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "trigname", .fieldtype = "char *", .offset = offsetof(struct CreateEventTrigStmt, trigname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "eventname", .fieldtype = "char *", .offset = offsetof(struct CreateEventTrigStmt, eventname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "whenclause", .fieldtype = "struct List *", .offset = offsetof(struct CreateEventTrigStmt, whenclause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcname", .fieldtype = "struct List *", .offset = offsetof(struct CreateEventTrigStmt, funcname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterEventTrigStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "trigname", .fieldtype = "char *", .offset = offsetof(struct AlterEventTrigStmt, trigname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "tgenabled", .fieldtype = "char", .offset = offsetof(struct AlterEventTrigStmt, tgenabled), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreatePLangStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct CreatePLangStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plname", .fieldtype = "char *", .offset = offsetof(struct CreatePLangStmt, plname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "plhandler", .fieldtype = "struct List *", .offset = offsetof(struct CreatePLangStmt, plhandler), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plinline", .fieldtype = "struct List *", .offset = offsetof(struct CreatePLangStmt, plinline), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plvalidator", .fieldtype = "struct List *", .offset = offsetof(struct CreatePLangStmt, plvalidator), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pltrusted", .fieldtype = "_Bool", .offset = offsetof(struct CreatePLangStmt, pltrusted), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateRoleStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt_type", .fieldtype = "enum RoleStmtType", .offset = offsetof(struct CreateRoleStmt, stmt_type), .size = sizeof(enum RoleStmtType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "role", .fieldtype = "char *", .offset = offsetof(struct CreateRoleStmt, role), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateRoleStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterRoleStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "role", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct AlterRoleStmt, role), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterRoleStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "action", .fieldtype = "int", .offset = offsetof(struct AlterRoleStmt, action), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterRoleSetStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "role", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct AlterRoleSetStmt, role), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "database", .fieldtype = "char *", .offset = offsetof(struct AlterRoleSetStmt, database), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "setstmt", .fieldtype = "struct VariableSetStmt *", .offset = offsetof(struct AlterRoleSetStmt, setstmt), .size = sizeof(struct VariableSetStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 270, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropRoleStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct DropRoleStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropRoleStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateSeqStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sequence", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CreateSeqStmt, sequence), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateSeqStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ownerId", .fieldtype = "unsigned int", .offset = offsetof(struct CreateSeqStmt, ownerId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_identity", .fieldtype = "_Bool", .offset = offsetof(struct CreateSeqStmt, for_identity), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateSeqStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterSeqStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sequence", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterSeqStmt, sequence), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterSeqStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_identity", .fieldtype = "_Bool", .offset = offsetof(struct AlterSeqStmt, for_identity), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterSeqStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DefineStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum ObjectType", .offset = offsetof(struct DefineStmt, kind), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oldstyle", .fieldtype = "_Bool", .offset = offsetof(struct DefineStmt, oldstyle), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "defnames", .fieldtype = "struct List *", .offset = offsetof(struct DefineStmt, defnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct DefineStmt, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "definition", .fieldtype = "struct List *", .offset = offsetof(struct DefineStmt, definition), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct DefineStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct DefineStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateDomainStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "domainname", .fieldtype = "struct List *", .offset = offsetof(struct CreateDomainStmt, domainname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeName", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateDomainStmt, typeName), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "collClause", .fieldtype = "struct CollateClause *", .offset = offsetof(struct CreateDomainStmt, collClause), .size = sizeof(struct CollateClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 353, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constraints", .fieldtype = "struct List *", .offset = offsetof(struct CreateDomainStmt, constraints), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateOpClassStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opclassname", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpClassStmt, opclassname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfamilyname", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpClassStmt, opfamilyname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amname", .fieldtype = "char *", .offset = offsetof(struct CreateOpClassStmt, amname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "datatype", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateOpClassStmt, datatype), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "items", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpClassStmt, items), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isDefault", .fieldtype = "_Bool", .offset = offsetof(struct CreateOpClassStmt, isDefault), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateOpClassItem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "itemtype", .fieldtype = "int", .offset = offsetof(struct CreateOpClassItem, itemtype), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct CreateOpClassItem, name), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "number", .fieldtype = "int", .offset = offsetof(struct CreateOpClassItem, number), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "order_family", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpClassItem, order_family), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "class_args", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpClassItem, class_args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "storedtype", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateOpClassItem, storedtype), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateOpFamilyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfamilyname", .fieldtype = "struct List *", .offset = offsetof(struct CreateOpFamilyStmt, opfamilyname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amname", .fieldtype = "char *", .offset = offsetof(struct CreateOpFamilyStmt, amname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterOpFamilyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opfamilyname", .fieldtype = "struct List *", .offset = offsetof(struct AlterOpFamilyStmt, opfamilyname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amname", .fieldtype = "char *", .offset = offsetof(struct AlterOpFamilyStmt, amname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "isDrop", .fieldtype = "_Bool", .offset = offsetof(struct AlterOpFamilyStmt, isDrop), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "items", .fieldtype = "struct List *", .offset = offsetof(struct AlterOpFamilyStmt, items), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objects", .fieldtype = "struct List *", .offset = offsetof(struct DropStmt, objects), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "removeType", .fieldtype = "enum ObjectType", .offset = offsetof(struct DropStmt, removeType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct DropStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "concurrent", .fieldtype = "_Bool", .offset = offsetof(struct DropStmt, concurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TruncateStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relations", .fieldtype = "struct List *", .offset = offsetof(struct TruncateStmt, relations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "restart_seqs", .fieldtype = "_Bool", .offset = offsetof(struct TruncateStmt, restart_seqs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct TruncateStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CommentStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct CommentStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct CommentStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "comment", .fieldtype = "char *", .offset = offsetof(struct CommentStmt, comment), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SecLabelStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct SecLabelStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct SecLabelStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "provider", .fieldtype = "char *", .offset = offsetof(struct SecLabelStmt, provider), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "label", .fieldtype = "char *", .offset = offsetof(struct SecLabelStmt, label), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DeclareCursorStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "portalname", .fieldtype = "char *", .offset = offsetof(struct DeclareCursorStmt, portalname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "int", .offset = offsetof(struct DeclareCursorStmt, options), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct DeclareCursorStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ClosePortalStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "portalname", .fieldtype = "char *", .offset = offsetof(struct ClosePortalStmt, portalname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct FetchStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "direction", .fieldtype = "enum FetchDirection", .offset = offsetof(struct FetchStmt, direction), .size = sizeof(enum FetchDirection), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "howMany", .fieldtype = "long", .offset = offsetof(struct FetchStmt, howMany), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "portalname", .fieldtype = "char *", .offset = offsetof(struct FetchStmt, portalname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "ismove", .fieldtype = "_Bool", .offset = offsetof(struct FetchStmt, ismove), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IndexStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "idxname", .fieldtype = "char *", .offset = offsetof(struct IndexStmt, idxname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct IndexStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "accessMethod", .fieldtype = "char *", .offset = offsetof(struct IndexStmt, accessMethod), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "tableSpace", .fieldtype = "char *", .offset = offsetof(struct IndexStmt, tableSpace), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "indexParams", .fieldtype = "struct List *", .offset = offsetof(struct IndexStmt, indexParams), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexIncludingParams", .fieldtype = "struct List *", .offset = offsetof(struct IndexStmt, indexIncludingParams), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct IndexStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct IndexStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "excludeOpNames", .fieldtype = "struct List *", .offset = offsetof(struct IndexStmt, excludeOpNames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "idxcomment", .fieldtype = "char *", .offset = offsetof(struct IndexStmt, idxcomment), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "indexOid", .fieldtype = "unsigned int", .offset = offsetof(struct IndexStmt, indexOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oldNode", .fieldtype = "unsigned int", .offset = offsetof(struct IndexStmt, oldNode), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "unique", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, unique), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "primary", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, primary), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isconstraint", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, isconstraint), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "deferrable", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, deferrable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initdeferred", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, initdeferred), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "transformed", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, transformed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "concurrent", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, concurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reset_default_tblspc", .fieldtype = "_Bool", .offset = offsetof(struct IndexStmt, reset_default_tblspc), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateStatsStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "defnames", .fieldtype = "struct List *", .offset = offsetof(struct CreateStatsStmt, defnames), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stat_types", .fieldtype = "struct List *", .offset = offsetof(struct CreateStatsStmt, stat_types), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exprs", .fieldtype = "struct List *", .offset = offsetof(struct CreateStatsStmt, exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relations", .fieldtype = "struct List *", .offset = offsetof(struct CreateStatsStmt, relations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stxcomment", .fieldtype = "char *", .offset = offsetof(struct CreateStatsStmt, stxcomment), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateStatsStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateFunctionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_procedure", .fieldtype = "_Bool", .offset = offsetof(struct CreateFunctionStmt, is_procedure), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct CreateFunctionStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcname", .fieldtype = "struct List *", .offset = offsetof(struct CreateFunctionStmt, funcname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parameters", .fieldtype = "struct List *", .offset = offsetof(struct CreateFunctionStmt, parameters), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returnType", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateFunctionStmt, returnType), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateFunctionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct FunctionParameter, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct FunctionParameter, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "argType", .fieldtype = "struct TypeName *", .offset = offsetof(struct FunctionParameter, argType), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mode", .fieldtype = "enum FunctionParameterMode", .offset = offsetof(struct FunctionParameter, mode), .size = sizeof(enum FunctionParameterMode), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "defexpr", .fieldtype = "struct Node *", .offset = offsetof(struct FunctionParameter, defexpr), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterFunctionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objtype", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterFunctionStmt, objtype), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "func", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct AlterFunctionStmt, func), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "actions", .fieldtype = "struct List *", .offset = offsetof(struct AlterFunctionStmt, actions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DoStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct DoStmt, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct InlineCodeBlock, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "source_text", .fieldtype = "char *", .offset = offsetof(struct InlineCodeBlock, source_text), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "langOid", .fieldtype = "unsigned int", .offset = offsetof(struct InlineCodeBlock, langOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "langIsTrusted", .fieldtype = "_Bool", .offset = offsetof(struct InlineCodeBlock, langIsTrusted), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "atomic", .fieldtype = "_Bool", .offset = offsetof(struct InlineCodeBlock, atomic), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CallStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funccall", .fieldtype = "struct FuncCall *", .offset = offsetof(struct CallStmt, funccall), .size = sizeof(struct FuncCall *), .flags = TYPE_CAT_POINTER, .node_type_id = 345, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcexpr", .fieldtype = "struct FuncExpr *", .offset = offsetof(struct CallStmt, funcexpr), .size = sizeof(struct FuncExpr *), .flags = TYPE_CAT_POINTER, .node_type_id = 111, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CallContext, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "atomic", .fieldtype = "_Bool", .offset = offsetof(struct CallContext, atomic), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RenameStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "renameType", .fieldtype = "enum ObjectType", .offset = offsetof(struct RenameStmt, renameType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relationType", .fieldtype = "enum ObjectType", .offset = offsetof(struct RenameStmt, relationType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct RenameStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct RenameStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "subname", .fieldtype = "char *", .offset = offsetof(struct RenameStmt, subname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "newname", .fieldtype = "char *", .offset = offsetof(struct RenameStmt, newname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct RenameStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct RenameStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterObjectDependsStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objectType", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterObjectDependsStmt, objectType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterObjectDependsStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct AlterObjectDependsStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "extname", .fieldtype = "struct Value *", .offset = offsetof(struct AlterObjectDependsStmt, extname), .size = sizeof(struct Value *), .flags = TYPE_CAT_POINTER, .node_type_id = 217, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterObjectSchemaStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objectType", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterObjectSchemaStmt, objectType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterObjectSchemaStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct AlterObjectSchemaStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "newschema", .fieldtype = "char *", .offset = offsetof(struct AlterObjectSchemaStmt, newschema), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterObjectSchemaStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterOwnerStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "objectType", .fieldtype = "enum ObjectType", .offset = offsetof(struct AlterOwnerStmt, objectType), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct AlterOwnerStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "object", .fieldtype = "struct Node *", .offset = offsetof(struct AlterOwnerStmt, object), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "newowner", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct AlterOwnerStmt, newowner), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterOperatorStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opername", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct AlterOperatorStmt, opername), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterOperatorStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RuleStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct RuleStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rulename", .fieldtype = "char *", .offset = offsetof(struct RuleStmt, rulename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "whereClause", .fieldtype = "struct Node *", .offset = offsetof(struct RuleStmt, whereClause), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "event", .fieldtype = "enum CmdType", .offset = offsetof(struct RuleStmt, event), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "instead", .fieldtype = "_Bool", .offset = offsetof(struct RuleStmt, instead), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "actions", .fieldtype = "struct List *", .offset = offsetof(struct RuleStmt, actions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct RuleStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct NotifyStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conditionname", .fieldtype = "char *", .offset = offsetof(struct NotifyStmt, conditionname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "payload", .fieldtype = "char *", .offset = offsetof(struct NotifyStmt, payload), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ListenStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conditionname", .fieldtype = "char *", .offset = offsetof(struct ListenStmt, conditionname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct UnlistenStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conditionname", .fieldtype = "char *", .offset = offsetof(struct UnlistenStmt, conditionname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TransactionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum TransactionStmtKind", .offset = offsetof(struct TransactionStmt, kind), .size = sizeof(enum TransactionStmtKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct TransactionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "savepoint_name", .fieldtype = "char *", .offset = offsetof(struct TransactionStmt, savepoint_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "gid", .fieldtype = "char *", .offset = offsetof(struct TransactionStmt, gid), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "chain", .fieldtype = "_Bool", .offset = offsetof(struct TransactionStmt, chain), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CompositeTypeStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typevar", .fieldtype = "struct RangeVar *", .offset = offsetof(struct CompositeTypeStmt, typevar), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coldeflist", .fieldtype = "struct List *", .offset = offsetof(struct CompositeTypeStmt, coldeflist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateEnumStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeName", .fieldtype = "struct List *", .offset = offsetof(struct CreateEnumStmt, typeName), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "vals", .fieldtype = "struct List *", .offset = offsetof(struct CreateEnumStmt, vals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateRangeStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeName", .fieldtype = "struct List *", .offset = offsetof(struct CreateRangeStmt, typeName), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "params", .fieldtype = "struct List *", .offset = offsetof(struct CreateRangeStmt, params), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterEnumStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typeName", .fieldtype = "struct List *", .offset = offsetof(struct AlterEnumStmt, typeName), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oldVal", .fieldtype = "char *", .offset = offsetof(struct AlterEnumStmt, oldVal), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "newVal", .fieldtype = "char *", .offset = offsetof(struct AlterEnumStmt, newVal), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "newValNeighbor", .fieldtype = "char *", .offset = offsetof(struct AlterEnumStmt, newValNeighbor), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "newValIsAfter", .fieldtype = "_Bool", .offset = offsetof(struct AlterEnumStmt, newValIsAfter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skipIfNewValExists", .fieldtype = "_Bool", .offset = offsetof(struct AlterEnumStmt, skipIfNewValExists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ViewStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "view", .fieldtype = "struct RangeVar *", .offset = offsetof(struct ViewStmt, view), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aliases", .fieldtype = "struct List *", .offset = offsetof(struct ViewStmt, aliases), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct ViewStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct ViewStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct ViewStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withCheckOption", .fieldtype = "enum ViewCheckOption", .offset = offsetof(struct ViewStmt, withCheckOption), .size = sizeof(enum ViewCheckOption), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct LoadStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "filename", .fieldtype = "char *", .offset = offsetof(struct LoadStmt, filename), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreatedbStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dbname", .fieldtype = "char *", .offset = offsetof(struct CreatedbStmt, dbname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreatedbStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterDatabaseStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dbname", .fieldtype = "char *", .offset = offsetof(struct AlterDatabaseStmt, dbname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterDatabaseStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterDatabaseSetStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dbname", .fieldtype = "char *", .offset = offsetof(struct AlterDatabaseSetStmt, dbname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "setstmt", .fieldtype = "struct VariableSetStmt *", .offset = offsetof(struct AlterDatabaseSetStmt, setstmt), .size = sizeof(struct VariableSetStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 270, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropdbStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dbname", .fieldtype = "char *", .offset = offsetof(struct DropdbStmt, dbname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropdbStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterSystemStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setstmt", .fieldtype = "struct VariableSetStmt *", .offset = offsetof(struct AlterSystemStmt, setstmt), .size = sizeof(struct VariableSetStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 270, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ClusterStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct ClusterStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexname", .fieldtype = "char *", .offset = offsetof(struct ClusterStmt, indexname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "int", .offset = offsetof(struct ClusterStmt, options), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct VacuumStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct VacuumStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rels", .fieldtype = "struct List *", .offset = offsetof(struct VacuumStmt, rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_vacuumcmd", .fieldtype = "_Bool", .offset = offsetof(struct VacuumStmt, is_vacuumcmd), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct VacuumRelation, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct VacuumRelation, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oid", .fieldtype = "unsigned int", .offset = offsetof(struct VacuumRelation, oid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "va_cols", .fieldtype = "struct List *", .offset = offsetof(struct VacuumRelation, va_cols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ExplainStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct ExplainStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct ExplainStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateTableAsStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct CreateTableAsStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "into", .fieldtype = "struct IntoClause *", .offset = offsetof(struct CreateTableAsStmt, into), .size = sizeof(struct IntoClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 151, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relkind", .fieldtype = "enum ObjectType", .offset = offsetof(struct CreateTableAsStmt, relkind), .size = sizeof(enum ObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_select_into", .fieldtype = "_Bool", .offset = offsetof(struct CreateTableAsStmt, is_select_into), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "if_not_exists", .fieldtype = "_Bool", .offset = offsetof(struct CreateTableAsStmt, if_not_exists), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RefreshMatViewStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "concurrent", .fieldtype = "_Bool", .offset = offsetof(struct RefreshMatViewStmt, concurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skipData", .fieldtype = "_Bool", .offset = offsetof(struct RefreshMatViewStmt, skipData), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct RefreshMatViewStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CheckPointStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DiscardStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "target", .fieldtype = "enum DiscardMode", .offset = offsetof(struct DiscardStmt, target), .size = sizeof(enum DiscardMode), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct LockStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relations", .fieldtype = "struct List *", .offset = offsetof(struct LockStmt, relations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mode", .fieldtype = "int", .offset = offsetof(struct LockStmt, mode), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nowait", .fieldtype = "_Bool", .offset = offsetof(struct LockStmt, nowait), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ConstraintsSetStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constraints", .fieldtype = "struct List *", .offset = offsetof(struct ConstraintsSetStmt, constraints), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "deferred", .fieldtype = "_Bool", .offset = offsetof(struct ConstraintsSetStmt, deferred), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ReindexStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum ReindexObjectType", .offset = offsetof(struct ReindexStmt, kind), .size = sizeof(enum ReindexObjectType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct RangeVar *", .offset = offsetof(struct ReindexStmt, relation), .size = sizeof(struct RangeVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 101, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "const char *", .offset = offsetof(struct ReindexStmt, name), .size = sizeof(const char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "int", .offset = offsetof(struct ReindexStmt, options), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "concurrent", .fieldtype = "_Bool", .offset = offsetof(struct ReindexStmt, concurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateConversionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conversion_name", .fieldtype = "struct List *", .offset = offsetof(struct CreateConversionStmt, conversion_name), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_encoding_name", .fieldtype = "char *", .offset = offsetof(struct CreateConversionStmt, for_encoding_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "to_encoding_name", .fieldtype = "char *", .offset = offsetof(struct CreateConversionStmt, to_encoding_name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "func_name", .fieldtype = "struct List *", .offset = offsetof(struct CreateConversionStmt, func_name), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "def", .fieldtype = "_Bool", .offset = offsetof(struct CreateConversionStmt, def), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateCastStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sourcetype", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateCastStmt, sourcetype), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targettype", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateCastStmt, targettype), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "func", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct CreateCastStmt, func), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "context", .fieldtype = "enum CoercionContext", .offset = offsetof(struct CreateCastStmt, context), .size = sizeof(enum CoercionContext), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inout", .fieldtype = "_Bool", .offset = offsetof(struct CreateCastStmt, inout), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateTransformStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct CreateTransformStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type_name", .fieldtype = "struct TypeName *", .offset = offsetof(struct CreateTransformStmt, type_name), .size = sizeof(struct TypeName *), .flags = TYPE_CAT_POINTER, .node_type_id = 361, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lang", .fieldtype = "char *", .offset = offsetof(struct CreateTransformStmt, lang), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "fromsql", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct CreateTransformStmt, fromsql), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tosql", .fieldtype = "struct ObjectWithArgs *", .offset = offsetof(struct CreateTransformStmt, tosql), .size = sizeof(struct ObjectWithArgs *), .flags = TYPE_CAT_POINTER, .node_type_id = 373, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PrepareStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct PrepareStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "argtypes", .fieldtype = "struct List *", .offset = offsetof(struct PrepareStmt, argtypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query", .fieldtype = "struct Node *", .offset = offsetof(struct PrepareStmt, query), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ExecuteStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct ExecuteStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "params", .fieldtype = "struct List *", .offset = offsetof(struct ExecuteStmt, params), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DeallocateStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct DeallocateStmt, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropOwnedStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct DropOwnedStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct DropOwnedStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ReassignOwnedStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "roles", .fieldtype = "struct List *", .offset = offsetof(struct ReassignOwnedStmt, roles), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "newrole", .fieldtype = "struct RoleSpec *", .offset = offsetof(struct ReassignOwnedStmt, newrole), .size = sizeof(struct RoleSpec *), .flags = TYPE_CAT_POINTER, .node_type_id = 385, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTSDictionaryStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dictname", .fieldtype = "struct List *", .offset = offsetof(struct AlterTSDictionaryStmt, dictname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterTSDictionaryStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterTSConfigurationStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum AlterTSConfigType", .offset = offsetof(struct AlterTSConfigurationStmt, kind), .size = sizeof(enum AlterTSConfigType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cfgname", .fieldtype = "struct List *", .offset = offsetof(struct AlterTSConfigurationStmt, cfgname), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tokentype", .fieldtype = "struct List *", .offset = offsetof(struct AlterTSConfigurationStmt, tokentype), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dicts", .fieldtype = "struct List *", .offset = offsetof(struct AlterTSConfigurationStmt, dicts), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "override", .fieldtype = "_Bool", .offset = offsetof(struct AlterTSConfigurationStmt, override), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "replace", .fieldtype = "_Bool", .offset = offsetof(struct AlterTSConfigurationStmt, replace), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct AlterTSConfigurationStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreatePublicationStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pubname", .fieldtype = "char *", .offset = offsetof(struct CreatePublicationStmt, pubname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreatePublicationStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tables", .fieldtype = "struct List *", .offset = offsetof(struct CreatePublicationStmt, tables), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_all_tables", .fieldtype = "_Bool", .offset = offsetof(struct CreatePublicationStmt, for_all_tables), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterPublicationStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pubname", .fieldtype = "char *", .offset = offsetof(struct AlterPublicationStmt, pubname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterPublicationStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tables", .fieldtype = "struct List *", .offset = offsetof(struct AlterPublicationStmt, tables), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "for_all_tables", .fieldtype = "_Bool", .offset = offsetof(struct AlterPublicationStmt, for_all_tables), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tableAction", .fieldtype = "enum DefElemAction", .offset = offsetof(struct AlterPublicationStmt, tableAction), .size = sizeof(enum DefElemAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateSubscriptionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subname", .fieldtype = "char *", .offset = offsetof(struct CreateSubscriptionStmt, subname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "conninfo", .fieldtype = "char *", .offset = offsetof(struct CreateSubscriptionStmt, conninfo), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "publication", .fieldtype = "struct List *", .offset = offsetof(struct CreateSubscriptionStmt, publication), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateSubscriptionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlterSubscriptionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum AlterSubscriptionType", .offset = offsetof(struct AlterSubscriptionStmt, kind), .size = sizeof(enum AlterSubscriptionType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subname", .fieldtype = "char *", .offset = offsetof(struct AlterSubscriptionStmt, subname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "conninfo", .fieldtype = "char *", .offset = offsetof(struct AlterSubscriptionStmt, conninfo), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "publication", .fieldtype = "struct List *", .offset = offsetof(struct AlterSubscriptionStmt, publication), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct AlterSubscriptionStmt, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropSubscriptionStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subname", .fieldtype = "char *", .offset = offsetof(struct DropSubscriptionStmt, subname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "missing_ok", .fieldtype = "_Bool", .offset = offsetof(struct DropSubscriptionStmt, missing_ok), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "behavior", .fieldtype = "enum DropBehavior", .offset = offsetof(struct DropSubscriptionStmt, behavior), .size = sizeof(enum DropBehavior), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlannerGlobal, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "boundParams", .fieldtype = "struct ParamListInfoData *", .offset = offsetof(struct PlannerGlobal, boundParams), .size = sizeof(struct ParamListInfoData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplans", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, subplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subroots", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, subroots), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rewindPlanIDs", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannerGlobal, rewindPlanIDs), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "finalrtable", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, finalrtable), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "finalrowmarks", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, finalrowmarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelations", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, resultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootResultRelations", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, rootResultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relationOids", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, relationOids), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "invalItems", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, invalItems), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramExecTypes", .fieldtype = "struct List *", .offset = offsetof(struct PlannerGlobal, paramExecTypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lastPHId", .fieldtype = "unsigned int", .offset = offsetof(struct PlannerGlobal, lastPHId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lastRowMarkId", .fieldtype = "unsigned int", .offset = offsetof(struct PlannerGlobal, lastRowMarkId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lastPlanNodeId", .fieldtype = "int", .offset = offsetof(struct PlannerGlobal, lastPlanNodeId), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "transientPlan", .fieldtype = "_Bool", .offset = offsetof(struct PlannerGlobal, transientPlan), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dependsOnRole", .fieldtype = "_Bool", .offset = offsetof(struct PlannerGlobal, dependsOnRole), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallelModeOK", .fieldtype = "_Bool", .offset = offsetof(struct PlannerGlobal, parallelModeOK), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallelModeNeeded", .fieldtype = "_Bool", .offset = offsetof(struct PlannerGlobal, parallelModeNeeded), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "maxParallelHazard", .fieldtype = "char", .offset = offsetof(struct PlannerGlobal, maxParallelHazard), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partition_directory", .fieldtype = "struct PartitionDirectoryData *", .offset = offsetof(struct PlannerGlobal, partition_directory), .size = sizeof(struct PartitionDirectoryData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlannerInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parse", .fieldtype = "struct Query *", .offset = offsetof(struct PlannerInfo, parse), .size = sizeof(struct Query *), .flags = TYPE_CAT_POINTER, .node_type_id = 228, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "glob", .fieldtype = "struct PlannerGlobal *", .offset = offsetof(struct PlannerInfo, glob), .size = sizeof(struct PlannerGlobal *), .flags = TYPE_CAT_POINTER, .node_type_id = 160, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query_level", .fieldtype = "unsigned int", .offset = offsetof(struct PlannerInfo, query_level), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent_root", .fieldtype = "struct PlannerInfo *", .offset = offsetof(struct PlannerInfo, parent_root), .size = sizeof(struct PlannerInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 159, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_params", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, plan_params), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outer_params", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannerInfo, outer_params), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "simple_rel_array", .fieldtype = "struct RelOptInfo **", .offset = offsetof(struct PlannerInfo, simple_rel_array), .size = sizeof(struct RelOptInfo **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "simple_rel_array_size", .fieldtype = "int", .offset = offsetof(struct PlannerInfo, simple_rel_array_size), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "simple_rte_array", .fieldtype = "struct RangeTblEntry **", .offset = offsetof(struct PlannerInfo, simple_rte_array), .size = sizeof(struct RangeTblEntry **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "append_rel_array", .fieldtype = "struct AppendRelInfo **", .offset = offsetof(struct PlannerInfo, append_rel_array), .size = sizeof(struct AppendRelInfo **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all_baserels", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannerInfo, all_baserels), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "nullable_baserels", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannerInfo, nullable_baserels), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "join_rel_list", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, join_rel_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join_rel_hash", .fieldtype = "struct HTAB *", .offset = offsetof(struct PlannerInfo, join_rel_hash), .size = sizeof(struct HTAB *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join_rel_level", .fieldtype = "struct List **", .offset = offsetof(struct PlannerInfo, join_rel_level), .size = sizeof(struct List **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join_cur_level", .fieldtype = "int", .offset = offsetof(struct PlannerInfo, join_cur_level), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "init_plans", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, init_plans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cte_plan_ids", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, cte_plan_ids), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "multiexpr_params", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, multiexpr_params), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eq_classes", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, eq_classes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_merging_done", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, ec_merging_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canon_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, canon_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "left_join_clauses", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, left_join_clauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "right_join_clauses", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, right_join_clauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "full_join_clauses", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, full_join_clauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join_info_list", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, join_info_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "append_rel_list", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, append_rel_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "placeholder_list", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, placeholder_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fkey_list", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, fkey_list), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "query_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, query_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "group_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, group_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "window_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, window_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "distinct_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, distinct_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sort_pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, sort_pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "part_schemes", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, part_schemes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initial_rels", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, initial_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "upper_rels", .fieldtype = "struct List *[7]", .offset = offsetof(struct PlannerInfo, upper_rels), .size = sizeof(struct List *[7]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "upper_targets", .fieldtype = "struct PathTarget *[7]", .offset = offsetof(struct PlannerInfo, upper_targets), .size = sizeof(struct PathTarget *[7]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "processed_tlist", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, processed_tlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grouping_map", .fieldtype = "short *", .offset = offsetof(struct PlannerInfo, grouping_map), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "minmax_aggs", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, minmax_aggs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "planner_cxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct PlannerInfo, planner_cxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "total_table_pages", .fieldtype = "double", .offset = offsetof(struct PlannerInfo, total_table_pages), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuple_fraction", .fieldtype = "double", .offset = offsetof(struct PlannerInfo, tuple_fraction), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limit_tuples", .fieldtype = "double", .offset = offsetof(struct PlannerInfo, limit_tuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual_security_level", .fieldtype = "unsigned int", .offset = offsetof(struct PlannerInfo, qual_security_level), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inhTargetKind", .fieldtype = "enum InheritanceKind", .offset = offsetof(struct PlannerInfo, inhTargetKind), .size = sizeof(enum InheritanceKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasJoinRTEs", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, hasJoinRTEs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasLateralRTEs", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, hasLateralRTEs), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasHavingQual", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, hasHavingQual), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasPseudoConstantQuals", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, hasPseudoConstantQuals), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasRecursion", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, hasRecursion), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wt_param_id", .fieldtype = "int", .offset = offsetof(struct PlannerInfo, wt_param_id), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "non_recursive_path", .fieldtype = "struct Path *", .offset = offsetof(struct PlannerInfo, non_recursive_path), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curOuterRels", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannerInfo, curOuterRels), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "curOuterParams", .fieldtype = "struct List *", .offset = offsetof(struct PlannerInfo, curOuterParams), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join_search_private", .fieldtype = "void *", .offset = offsetof(struct PlannerInfo, join_search_private), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partColsUpdated", .fieldtype = "_Bool", .offset = offsetof(struct PlannerInfo, partColsUpdated), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RelOptInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reloptkind", .fieldtype = "enum RelOptKind", .offset = offsetof(struct RelOptInfo, reloptkind), .size = sizeof(enum RelOptKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "rows", .fieldtype = "double", .offset = offsetof(struct RelOptInfo, rows), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consider_startup", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, consider_startup), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consider_param_startup", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, consider_param_startup), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consider_parallel", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, consider_parallel), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reltarget", .fieldtype = "struct PathTarget *", .offset = offsetof(struct RelOptInfo, reltarget), .size = sizeof(struct PathTarget *), .flags = TYPE_CAT_POINTER, .node_type_id = 201, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pathlist", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, pathlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ppilist", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, ppilist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partial_pathlist", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, partial_pathlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cheapest_startup_path", .fieldtype = "struct Path *", .offset = offsetof(struct RelOptInfo, cheapest_startup_path), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cheapest_total_path", .fieldtype = "struct Path *", .offset = offsetof(struct RelOptInfo, cheapest_total_path), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cheapest_unique_path", .fieldtype = "struct Path *", .offset = offsetof(struct RelOptInfo, cheapest_unique_path), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cheapest_parameterized_paths", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, cheapest_parameterized_paths), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "direct_lateral_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, direct_lateral_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "lateral_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, lateral_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "relid", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reltablespace", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, reltablespace), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtekind", .fieldtype = "enum RTEKind", .offset = offsetof(struct RelOptInfo, rtekind), .size = sizeof(enum RTEKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "min_attr", .fieldtype = "short", .offset = offsetof(struct RelOptInfo, min_attr), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "max_attr", .fieldtype = "short", .offset = offsetof(struct RelOptInfo, max_attr), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "attr_needed", .fieldtype = "struct Bitmapset **", .offset = offsetof(struct RelOptInfo, attr_needed), .size = sizeof(struct Bitmapset **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "attr_widths", .fieldtype = "int *", .offset = offsetof(struct RelOptInfo, attr_widths), .size = sizeof(int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "lateral_vars", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, lateral_vars), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lateral_referencers", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, lateral_referencers), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "indexlist", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, indexlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "statlist", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, statlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pages", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, pages), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuples", .fieldtype = "double", .offset = offsetof(struct RelOptInfo, tuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "allvisfrac", .fieldtype = "double", .offset = offsetof(struct RelOptInfo, allvisfrac), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eclass_indexes", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, eclass_indexes), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "subroot", .fieldtype = "struct PlannerInfo *", .offset = offsetof(struct RelOptInfo, subroot), .size = sizeof(struct PlannerInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 159, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan_params", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, subplan_params), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rel_parallel_workers", .fieldtype = "int", .offset = offsetof(struct RelOptInfo, rel_parallel_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "serverid", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, serverid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "userid", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, userid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "useridiscurrent", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, useridiscurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwroutine", .fieldtype = "struct FdwRoutine *", .offset = offsetof(struct RelOptInfo, fdwroutine), .size = sizeof(struct FdwRoutine *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_private", .fieldtype = "void *", .offset = offsetof(struct RelOptInfo, fdw_private), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "unique_for_rels", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, unique_for_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "non_unique_for_rels", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, non_unique_for_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "baserestrictinfo", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, baserestrictinfo), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "baserestrictcost", .fieldtype = "struct QualCost", .offset = offsetof(struct RelOptInfo, baserestrictcost), .size = sizeof(struct QualCost), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "baserestrict_min_security", .fieldtype = "unsigned int", .offset = offsetof(struct RelOptInfo, baserestrict_min_security), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "joininfo", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, joininfo), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "has_eclass_joins", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, has_eclass_joins), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "consider_partitionwise_join", .fieldtype = "_Bool", .offset = offsetof(struct RelOptInfo, consider_partitionwise_join), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "top_parent_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RelOptInfo, top_parent_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "part_scheme", .fieldtype = "struct PartitionSchemeData *", .offset = offsetof(struct RelOptInfo, part_scheme), .size = sizeof(struct PartitionSchemeData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nparts", .fieldtype = "int", .offset = offsetof(struct RelOptInfo, nparts), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "boundinfo", .fieldtype = "struct PartitionBoundInfoData *", .offset = offsetof(struct RelOptInfo, boundinfo), .size = sizeof(struct PartitionBoundInfoData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partition_qual", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, partition_qual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "part_rels", .fieldtype = "struct RelOptInfo **", .offset = offsetof(struct RelOptInfo, part_rels), .size = sizeof(struct RelOptInfo **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partexprs", .fieldtype = "struct List **", .offset = offsetof(struct RelOptInfo, partexprs), .size = sizeof(struct List **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nullable_partexprs", .fieldtype = "struct List **", .offset = offsetof(struct RelOptInfo, nullable_partexprs), .size = sizeof(struct List **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partitioned_child_rels", .fieldtype = "struct List *", .offset = offsetof(struct RelOptInfo, partitioned_child_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IndexOptInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexoid", .fieldtype = "unsigned int", .offset = offsetof(struct IndexOptInfo, indexoid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reltablespace", .fieldtype = "unsigned int", .offset = offsetof(struct IndexOptInfo, reltablespace), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rel", .fieldtype = "struct RelOptInfo *", .offset = offsetof(struct IndexOptInfo, rel), .size = sizeof(struct RelOptInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 161, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pages", .fieldtype = "unsigned int", .offset = offsetof(struct IndexOptInfo, pages), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuples", .fieldtype = "double", .offset = offsetof(struct IndexOptInfo, tuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tree_height", .fieldtype = "int", .offset = offsetof(struct IndexOptInfo, tree_height), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ncolumns", .fieldtype = "int", .offset = offsetof(struct IndexOptInfo, ncolumns), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nkeycolumns", .fieldtype = "int", .offset = offsetof(struct IndexOptInfo, nkeycolumns), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexkeys", .fieldtype = "int *", .offset = offsetof(struct IndexOptInfo, indexkeys), .size = sizeof(int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "indexcollations", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexOptInfo, indexcollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "opfamily", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexOptInfo, opfamily), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "opcintype", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexOptInfo, opcintype), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "sortopfamily", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexOptInfo, sortopfamily), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "reverse_sort", .fieldtype = "_Bool *", .offset = offsetof(struct IndexOptInfo, reverse_sort), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nulls_first", .fieldtype = "_Bool *", .offset = offsetof(struct IndexOptInfo, nulls_first), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canreturn", .fieldtype = "_Bool *", .offset = offsetof(struct IndexOptInfo, canreturn), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relam", .fieldtype = "unsigned int", .offset = offsetof(struct IndexOptInfo, relam), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexprs", .fieldtype = "struct List *", .offset = offsetof(struct IndexOptInfo, indexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indpred", .fieldtype = "struct List *", .offset = offsetof(struct IndexOptInfo, indpred), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indextlist", .fieldtype = "struct List *", .offset = offsetof(struct IndexOptInfo, indextlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indrestrictinfo", .fieldtype = "struct List *", .offset = offsetof(struct IndexOptInfo, indrestrictinfo), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "predOK", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, predOK), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "unique", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, unique), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "immediate", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, immediate), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hypothetical", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, hypothetical), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amcanorderbyop", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amcanorderbyop), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amoptionalkey", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amoptionalkey), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amsearcharray", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amsearcharray), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amsearchnulls", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amsearchnulls), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amhasgettuple", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amhasgettuple), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amhasgetbitmap", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amhasgetbitmap), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amcanparallel", .fieldtype = "_Bool", .offset = offsetof(struct IndexOptInfo, amcanparallel), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "amcostestimate", .fieldtype = "void (*)()", .offset = offsetof(struct IndexOptInfo, amcostestimate), .size = sizeof(void (*)()), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ForeignKeyOptInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "con_relid", .fieldtype = "unsigned int", .offset = offsetof(struct ForeignKeyOptInfo, con_relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ref_relid", .fieldtype = "unsigned int", .offset = offsetof(struct ForeignKeyOptInfo, ref_relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nkeys", .fieldtype = "int", .offset = offsetof(struct ForeignKeyOptInfo, nkeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conkey", .fieldtype = "short [32]", .offset = offsetof(struct ForeignKeyOptInfo, conkey), .size = sizeof(short [32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "confkey", .fieldtype = "short [32]", .offset = offsetof(struct ForeignKeyOptInfo, confkey), .size = sizeof(short [32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "conpfeqop", .fieldtype = "unsigned int [32]", .offset = offsetof(struct ForeignKeyOptInfo, conpfeqop), .size = sizeof(unsigned int [32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nmatched_ec", .fieldtype = "int", .offset = offsetof(struct ForeignKeyOptInfo, nmatched_ec), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nmatched_rcols", .fieldtype = "int", .offset = offsetof(struct ForeignKeyOptInfo, nmatched_rcols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nmatched_ri", .fieldtype = "int", .offset = offsetof(struct ForeignKeyOptInfo, nmatched_ri), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eclass", .fieldtype = "struct EquivalenceClass *[32]", .offset = offsetof(struct ForeignKeyOptInfo, eclass), .size = sizeof(struct EquivalenceClass *[32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rinfos", .fieldtype = "struct List *[32]", .offset = offsetof(struct ForeignKeyOptInfo, rinfos), .size = sizeof(struct List *[32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct StatisticExtInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "statOid", .fieldtype = "unsigned int", .offset = offsetof(struct StatisticExtInfo, statOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rel", .fieldtype = "struct RelOptInfo *", .offset = offsetof(struct StatisticExtInfo, rel), .size = sizeof(struct RelOptInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 161, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "char", .offset = offsetof(struct StatisticExtInfo, kind), .size = sizeof(char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "keys", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct StatisticExtInfo, keys), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct EquivalenceClass, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_opfamilies", .fieldtype = "struct List *", .offset = offsetof(struct EquivalenceClass, ec_opfamilies), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_collation", .fieldtype = "unsigned int", .offset = offsetof(struct EquivalenceClass, ec_collation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_members", .fieldtype = "struct List *", .offset = offsetof(struct EquivalenceClass, ec_members), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_sources", .fieldtype = "struct List *", .offset = offsetof(struct EquivalenceClass, ec_sources), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_derives", .fieldtype = "struct List *", .offset = offsetof(struct EquivalenceClass, ec_derives), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct EquivalenceClass, ec_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ec_has_const", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceClass, ec_has_const), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_has_volatile", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceClass, ec_has_volatile), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_below_outer_join", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceClass, ec_below_outer_join), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_broken", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceClass, ec_broken), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_sortref", .fieldtype = "unsigned int", .offset = offsetof(struct EquivalenceClass, ec_sortref), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_min_security", .fieldtype = "unsigned int", .offset = offsetof(struct EquivalenceClass, ec_min_security), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_max_security", .fieldtype = "unsigned int", .offset = offsetof(struct EquivalenceClass, ec_max_security), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ec_merged", .fieldtype = "struct EquivalenceClass *", .offset = offsetof(struct EquivalenceClass, ec_merged), .size = sizeof(struct EquivalenceClass *), .flags = TYPE_CAT_POINTER, .node_type_id = 198, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct EquivalenceMember, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "em_expr", .fieldtype = "struct Expr *", .offset = offsetof(struct EquivalenceMember, em_expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "em_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct EquivalenceMember, em_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "em_nullable_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct EquivalenceMember, em_nullable_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "em_is_const", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceMember, em_is_const), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "em_is_child", .fieldtype = "_Bool", .offset = offsetof(struct EquivalenceMember, em_is_child), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "em_datatype", .fieldtype = "unsigned int", .offset = offsetof(struct EquivalenceMember, em_datatype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PathKey, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pk_eclass", .fieldtype = "struct EquivalenceClass *", .offset = offsetof(struct PathKey, pk_eclass), .size = sizeof(struct EquivalenceClass *), .flags = TYPE_CAT_POINTER, .node_type_id = 198, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pk_opfamily", .fieldtype = "unsigned int", .offset = offsetof(struct PathKey, pk_opfamily), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pk_strategy", .fieldtype = "int", .offset = offsetof(struct PathKey, pk_strategy), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pk_nulls_first", .fieldtype = "_Bool", .offset = offsetof(struct PathKey, pk_nulls_first), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PathTarget, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exprs", .fieldtype = "struct List *", .offset = offsetof(struct PathTarget, exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortgrouprefs", .fieldtype = "unsigned int *", .offset = offsetof(struct PathTarget, sortgrouprefs), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "cost", .fieldtype = "struct QualCost", .offset = offsetof(struct PathTarget, cost), .size = sizeof(struct QualCost), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "width", .fieldtype = "int", .offset = offsetof(struct PathTarget, width), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ParamPathInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ppi_req_outer", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct ParamPathInfo, ppi_req_outer), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ppi_rows", .fieldtype = "double", .offset = offsetof(struct ParamPathInfo, ppi_rows), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ppi_clauses", .fieldtype = "struct List *", .offset = offsetof(struct ParamPathInfo, ppi_clauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Path, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pathtype", .fieldtype = "enum NodeTag", .offset = offsetof(struct Path, pathtype), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent", .fieldtype = "struct RelOptInfo *", .offset = offsetof(struct Path, parent), .size = sizeof(struct RelOptInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 161, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pathtarget", .fieldtype = "struct PathTarget *", .offset = offsetof(struct Path, pathtarget), .size = sizeof(struct PathTarget *), .flags = TYPE_CAT_POINTER, .node_type_id = 201, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "param_info", .fieldtype = "struct ParamPathInfo *", .offset = offsetof(struct Path, param_info), .size = sizeof(struct ParamPathInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 164, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_aware", .fieldtype = "_Bool", .offset = offsetof(struct Path, parallel_aware), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_safe", .fieldtype = "_Bool", .offset = offsetof(struct Path, parallel_safe), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_workers", .fieldtype = "int", .offset = offsetof(struct Path, parallel_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rows", .fieldtype = "double", .offset = offsetof(struct Path, rows), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startup_cost", .fieldtype = "double", .offset = offsetof(struct Path, startup_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "total_cost", .fieldtype = "double", .offset = offsetof(struct Path, total_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pathkeys", .fieldtype = "struct List *", .offset = offsetof(struct Path, pathkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct IndexPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexinfo", .fieldtype = "struct IndexOptInfo *", .offset = offsetof(struct IndexPath, indexinfo), .size = sizeof(struct IndexOptInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 162, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexclauses", .fieldtype = "struct List *", .offset = offsetof(struct IndexPath, indexclauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderbys", .fieldtype = "struct List *", .offset = offsetof(struct IndexPath, indexorderbys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderbycols", .fieldtype = "struct List *", .offset = offsetof(struct IndexPath, indexorderbycols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexscandir", .fieldtype = "enum ScanDirection", .offset = offsetof(struct IndexPath, indexscandir), .size = sizeof(enum ScanDirection), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indextotalcost", .fieldtype = "double", .offset = offsetof(struct IndexPath, indextotalcost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexselectivity", .fieldtype = "double", .offset = offsetof(struct IndexPath, indexselectivity), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IndexClause, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rinfo", .fieldtype = "struct RestrictInfo *", .offset = offsetof(struct IndexClause, rinfo), .size = sizeof(struct RestrictInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 202, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexquals", .fieldtype = "struct List *", .offset = offsetof(struct IndexClause, indexquals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lossy", .fieldtype = "_Bool", .offset = offsetof(struct IndexClause, lossy), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexcol", .fieldtype = "short", .offset = offsetof(struct IndexClause, indexcol), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexcols", .fieldtype = "struct List *", .offset = offsetof(struct IndexClause, indexcols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct BitmapHeapPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapqual", .fieldtype = "struct Path *", .offset = offsetof(struct BitmapHeapPath, bitmapqual), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct BitmapAndPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapquals", .fieldtype = "struct List *", .offset = offsetof(struct BitmapAndPath, bitmapquals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapselectivity", .fieldtype = "double", .offset = offsetof(struct BitmapAndPath, bitmapselectivity), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct BitmapOrPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapquals", .fieldtype = "struct List *", .offset = offsetof(struct BitmapOrPath, bitmapquals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapselectivity", .fieldtype = "double", .offset = offsetof(struct BitmapOrPath, bitmapselectivity), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct TidPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tidquals", .fieldtype = "struct List *", .offset = offsetof(struct TidPath, tidquals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct SubqueryScanPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct SubqueryScanPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct ForeignPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_outerpath", .fieldtype = "struct Path *", .offset = offsetof(struct ForeignPath, fdw_outerpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_private", .fieldtype = "struct List *", .offset = offsetof(struct ForeignPath, fdw_private), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct CustomPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "flags", .fieldtype = "unsigned int", .offset = offsetof(struct CustomPath, flags), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_paths", .fieldtype = "struct List *", .offset = offsetof(struct CustomPath, custom_paths), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_private", .fieldtype = "struct List *", .offset = offsetof(struct CustomPath, custom_private), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "methods", .fieldtype = "const struct CustomPathMethods *", .offset = offsetof(struct CustomPath, methods), .size = sizeof(const struct CustomPathMethods *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct AppendPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partitioned_rels", .fieldtype = "struct List *", .offset = offsetof(struct AppendPath, partitioned_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpaths", .fieldtype = "struct List *", .offset = offsetof(struct AppendPath, subpaths), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "first_partial_path", .fieldtype = "int", .offset = offsetof(struct AppendPath, first_partial_path), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limit_tuples", .fieldtype = "double", .offset = offsetof(struct AppendPath, limit_tuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct MergeAppendPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partitioned_rels", .fieldtype = "struct List *", .offset = offsetof(struct MergeAppendPath, partitioned_rels), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpaths", .fieldtype = "struct List *", .offset = offsetof(struct MergeAppendPath, subpaths), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limit_tuples", .fieldtype = "double", .offset = offsetof(struct MergeAppendPath, limit_tuples), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct GroupResultPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "quals", .fieldtype = "struct List *", .offset = offsetof(struct GroupResultPath, quals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct MaterialPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct MaterialPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct UniquePath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct UniquePath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "umethod", .fieldtype = "UniquePathMethod", .offset = offsetof(struct UniquePath, umethod), .size = sizeof(UniquePathMethod), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "in_operators", .fieldtype = "struct List *", .offset = offsetof(struct UniquePath, in_operators), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "uniq_exprs", .fieldtype = "struct List *", .offset = offsetof(struct UniquePath, uniq_exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct GatherPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct GatherPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "single_copy", .fieldtype = "_Bool", .offset = offsetof(struct GatherPath, single_copy), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_workers", .fieldtype = "int", .offset = offsetof(struct GatherPath, num_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct GatherMergePath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct GatherMergePath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_workers", .fieldtype = "int", .offset = offsetof(struct GatherMergePath, num_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct JoinPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct JoinPath, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inner_unique", .fieldtype = "_Bool", .offset = offsetof(struct JoinPath, inner_unique), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outerjoinpath", .fieldtype = "struct Path *", .offset = offsetof(struct JoinPath, outerjoinpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innerjoinpath", .fieldtype = "struct Path *", .offset = offsetof(struct JoinPath, innerjoinpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "joinrestrictinfo", .fieldtype = "struct List *", .offset = offsetof(struct JoinPath, joinrestrictinfo), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jpath", .fieldtype = "struct JoinPath", .offset = offsetof(struct MergePath, jpath), .size = sizeof(struct JoinPath), .flags = TYPE_CAT_SCALAR, .node_type_id = 174, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path_mergeclauses", .fieldtype = "struct List *", .offset = offsetof(struct MergePath, path_mergeclauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outersortkeys", .fieldtype = "struct List *", .offset = offsetof(struct MergePath, outersortkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innersortkeys", .fieldtype = "struct List *", .offset = offsetof(struct MergePath, innersortkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skip_mark_restore", .fieldtype = "_Bool", .offset = offsetof(struct MergePath, skip_mark_restore), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "materialize_inner", .fieldtype = "_Bool", .offset = offsetof(struct MergePath, materialize_inner), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jpath", .fieldtype = "struct JoinPath", .offset = offsetof(struct HashPath, jpath), .size = sizeof(struct JoinPath), .flags = TYPE_CAT_SCALAR, .node_type_id = 174, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path_hashclauses", .fieldtype = "struct List *", .offset = offsetof(struct HashPath, path_hashclauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_batches", .fieldtype = "int", .offset = offsetof(struct HashPath, num_batches), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inner_rows_total", .fieldtype = "double", .offset = offsetof(struct HashPath, inner_rows_total), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct ProjectionPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct ProjectionPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dummypp", .fieldtype = "_Bool", .offset = offsetof(struct ProjectionPath, dummypp), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct ProjectSetPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct ProjectSetPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct SortPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct SortPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct GroupPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct GroupPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupClause", .fieldtype = "struct List *", .offset = offsetof(struct GroupPath, groupClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct List *", .offset = offsetof(struct GroupPath, qual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct UpperUniquePath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct UpperUniquePath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numkeys", .fieldtype = "int", .offset = offsetof(struct UpperUniquePath, numkeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct AggPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct AggPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggstrategy", .fieldtype = "enum AggStrategy", .offset = offsetof(struct AggPath, aggstrategy), .size = sizeof(enum AggStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggsplit", .fieldtype = "enum AggSplit", .offset = offsetof(struct AggPath, aggsplit), .size = sizeof(enum AggSplit), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "double", .offset = offsetof(struct AggPath, numGroups), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupClause", .fieldtype = "struct List *", .offset = offsetof(struct AggPath, groupClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct List *", .offset = offsetof(struct AggPath, qual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct GroupingSetData, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "set", .fieldtype = "struct List *", .offset = offsetof(struct GroupingSetData, set), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "double", .offset = offsetof(struct GroupingSetData, numGroups), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RollupData, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupClause", .fieldtype = "struct List *", .offset = offsetof(struct RollupData, groupClause), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gsets", .fieldtype = "struct List *", .offset = offsetof(struct RollupData, gsets), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gsets_data", .fieldtype = "struct List *", .offset = offsetof(struct RollupData, gsets_data), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "double", .offset = offsetof(struct RollupData, numGroups), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashable", .fieldtype = "_Bool", .offset = offsetof(struct RollupData, hashable), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_hashed", .fieldtype = "_Bool", .offset = offsetof(struct RollupData, is_hashed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct GroupingSetsPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct GroupingSetsPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggstrategy", .fieldtype = "enum AggStrategy", .offset = offsetof(struct GroupingSetsPath, aggstrategy), .size = sizeof(enum AggStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rollups", .fieldtype = "struct List *", .offset = offsetof(struct GroupingSetsPath, rollups), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct List *", .offset = offsetof(struct GroupingSetsPath, qual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct MinMaxAggPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mmaggregates", .fieldtype = "struct List *", .offset = offsetof(struct MinMaxAggPath, mmaggregates), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "quals", .fieldtype = "struct List *", .offset = offsetof(struct MinMaxAggPath, quals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct WindowAggPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct WindowAggPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winclause", .fieldtype = "struct WindowClause *", .offset = offsetof(struct WindowAggPath, winclause), .size = sizeof(struct WindowClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 372, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct SetOpPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct SetOpPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cmd", .fieldtype = "enum SetOpCmd", .offset = offsetof(struct SetOpPath, cmd), .size = sizeof(enum SetOpCmd), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strategy", .fieldtype = "enum SetOpStrategy", .offset = offsetof(struct SetOpPath, strategy), .size = sizeof(enum SetOpStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "distinctList", .fieldtype = "struct List *", .offset = offsetof(struct SetOpPath, distinctList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "flagColIdx", .fieldtype = "short", .offset = offsetof(struct SetOpPath, flagColIdx), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "firstFlag", .fieldtype = "int", .offset = offsetof(struct SetOpPath, firstFlag), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "double", .offset = offsetof(struct SetOpPath, numGroups), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct RecursiveUnionPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "leftpath", .fieldtype = "struct Path *", .offset = offsetof(struct RecursiveUnionPath, leftpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rightpath", .fieldtype = "struct Path *", .offset = offsetof(struct RecursiveUnionPath, rightpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "distinctList", .fieldtype = "struct List *", .offset = offsetof(struct RecursiveUnionPath, distinctList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wtParam", .fieldtype = "int", .offset = offsetof(struct RecursiveUnionPath, wtParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "double", .offset = offsetof(struct RecursiveUnionPath, numGroups), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct LockRowsPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct LockRowsPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct LockRowsPath, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "epqParam", .fieldtype = "int", .offset = offsetof(struct LockRowsPath, epqParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct ModifyTablePath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "operation", .fieldtype = "enum CmdType", .offset = offsetof(struct ModifyTablePath, operation), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canSetTag", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTablePath, canSetTag), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nominalRelation", .fieldtype = "unsigned int", .offset = offsetof(struct ModifyTablePath, nominalRelation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootRelation", .fieldtype = "unsigned int", .offset = offsetof(struct ModifyTablePath, rootRelation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partColsUpdated", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTablePath, partColsUpdated), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelations", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, resultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpaths", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, subpaths), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subroots", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, subroots), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withCheckOptionLists", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, withCheckOptionLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returningLists", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, returningLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTablePath, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onconflict", .fieldtype = "struct OnConflictExpr *", .offset = offsetof(struct ModifyTablePath, onconflict), .size = sizeof(struct OnConflictExpr *), .flags = TYPE_CAT_POINTER, .node_type_id = 150, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "epqParam", .fieldtype = "int", .offset = offsetof(struct ModifyTablePath, epqParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path", .offset = offsetof(struct LimitPath, path), .size = sizeof(struct Path), .flags = TYPE_CAT_SCALAR, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subpath", .fieldtype = "struct Path *", .offset = offsetof(struct LimitPath, subpath), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitOffset", .fieldtype = "struct Node *", .offset = offsetof(struct LimitPath, limitOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "limitCount", .fieldtype = "struct Node *", .offset = offsetof(struct LimitPath, limitCount), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct RestrictInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "clause", .fieldtype = "struct Expr *", .offset = offsetof(struct RestrictInfo, clause), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "is_pushed_down", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, is_pushed_down), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outerjoin_delayed", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, outerjoin_delayed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "can_join", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, can_join), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pseudoconstant", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, pseudoconstant), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "leakproof", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, leakproof), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "security_level", .fieldtype = "unsigned int", .offset = offsetof(struct RestrictInfo, security_level), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "clause_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, clause_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "required_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, required_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "outer_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, outer_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "nullable_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, nullable_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "left_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, left_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "right_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct RestrictInfo, right_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "orclause", .fieldtype = "struct Expr *", .offset = offsetof(struct RestrictInfo, orclause), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent_ec", .fieldtype = "struct EquivalenceClass *", .offset = offsetof(struct RestrictInfo, parent_ec), .size = sizeof(struct EquivalenceClass *), .flags = TYPE_CAT_POINTER, .node_type_id = 198, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eval_cost", .fieldtype = "struct QualCost", .offset = offsetof(struct RestrictInfo, eval_cost), .size = sizeof(struct QualCost), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "norm_selec", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, norm_selec), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outer_selec", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, outer_selec), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mergeopfamilies", .fieldtype = "struct List *", .offset = offsetof(struct RestrictInfo, mergeopfamilies), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "left_ec", .fieldtype = "struct EquivalenceClass *", .offset = offsetof(struct RestrictInfo, left_ec), .size = sizeof(struct EquivalenceClass *), .flags = TYPE_CAT_POINTER, .node_type_id = 198, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "right_ec", .fieldtype = "struct EquivalenceClass *", .offset = offsetof(struct RestrictInfo, right_ec), .size = sizeof(struct EquivalenceClass *), .flags = TYPE_CAT_POINTER, .node_type_id = 198, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "left_em", .fieldtype = "struct EquivalenceMember *", .offset = offsetof(struct RestrictInfo, left_em), .size = sizeof(struct EquivalenceMember *), .flags = TYPE_CAT_POINTER, .node_type_id = 199, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "right_em", .fieldtype = "struct EquivalenceMember *", .offset = offsetof(struct RestrictInfo, right_em), .size = sizeof(struct EquivalenceMember *), .flags = TYPE_CAT_POINTER, .node_type_id = 199, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scansel_cache", .fieldtype = "struct List *", .offset = offsetof(struct RestrictInfo, scansel_cache), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outer_is_left", .fieldtype = "_Bool", .offset = offsetof(struct RestrictInfo, outer_is_left), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashjoinoperator", .fieldtype = "unsigned int", .offset = offsetof(struct RestrictInfo, hashjoinoperator), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "left_bucketsize", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, left_bucketsize), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "right_bucketsize", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, right_bucketsize), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "left_mcvfreq", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, left_mcvfreq), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "right_mcvfreq", .fieldtype = "double", .offset = offsetof(struct RestrictInfo, right_mcvfreq), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "xpr", .fieldtype = "struct Expr", .offset = offsetof(struct PlaceHolderVar, xpr), .size = sizeof(struct Expr), .flags = TYPE_CAT_SCALAR, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phexpr", .fieldtype = "struct Expr *", .offset = offsetof(struct PlaceHolderVar, phexpr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phrels", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlaceHolderVar, phrels), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "phid", .fieldtype = "unsigned int", .offset = offsetof(struct PlaceHolderVar, phid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phlevelsup", .fieldtype = "unsigned int", .offset = offsetof(struct PlaceHolderVar, phlevelsup), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SpecialJoinInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "min_lefthand", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct SpecialJoinInfo, min_lefthand), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "min_righthand", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct SpecialJoinInfo, min_righthand), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "syn_lefthand", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct SpecialJoinInfo, syn_lefthand), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "syn_righthand", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct SpecialJoinInfo, syn_righthand), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct SpecialJoinInfo, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lhs_strict", .fieldtype = "_Bool", .offset = offsetof(struct SpecialJoinInfo, lhs_strict), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "delay_upper_joins", .fieldtype = "_Bool", .offset = offsetof(struct SpecialJoinInfo, delay_upper_joins), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "semi_can_btree", .fieldtype = "_Bool", .offset = offsetof(struct SpecialJoinInfo, semi_can_btree), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "semi_can_hash", .fieldtype = "_Bool", .offset = offsetof(struct SpecialJoinInfo, semi_can_hash), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "semi_operators", .fieldtype = "struct List *", .offset = offsetof(struct SpecialJoinInfo, semi_operators), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "semi_rhs_exprs", .fieldtype = "struct List *", .offset = offsetof(struct SpecialJoinInfo, semi_rhs_exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AppendRelInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent_relid", .fieldtype = "unsigned int", .offset = offsetof(struct AppendRelInfo, parent_relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "child_relid", .fieldtype = "unsigned int", .offset = offsetof(struct AppendRelInfo, child_relid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent_reltype", .fieldtype = "unsigned int", .offset = offsetof(struct AppendRelInfo, parent_reltype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "child_reltype", .fieldtype = "unsigned int", .offset = offsetof(struct AppendRelInfo, child_reltype), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "translated_vars", .fieldtype = "struct List *", .offset = offsetof(struct AppendRelInfo, translated_vars), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent_reloid", .fieldtype = "unsigned int", .offset = offsetof(struct AppendRelInfo, parent_reloid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlaceHolderInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phid", .fieldtype = "unsigned int", .offset = offsetof(struct PlaceHolderInfo, phid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ph_var", .fieldtype = "struct PlaceHolderVar *", .offset = offsetof(struct PlaceHolderInfo, ph_var), .size = sizeof(struct PlaceHolderVar *), .flags = TYPE_CAT_POINTER, .node_type_id = 204, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ph_eval_at", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlaceHolderInfo, ph_eval_at), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ph_lateral", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlaceHolderInfo, ph_lateral), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ph_needed", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlaceHolderInfo, ph_needed), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ph_width", .fieldtype = "int", .offset = offsetof(struct PlaceHolderInfo, ph_width), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct MinMaxAggInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggfnoid", .fieldtype = "unsigned int", .offset = offsetof(struct MinMaxAggInfo, aggfnoid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggsortop", .fieldtype = "unsigned int", .offset = offsetof(struct MinMaxAggInfo, aggsortop), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "target", .fieldtype = "struct Expr *", .offset = offsetof(struct MinMaxAggInfo, target), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subroot", .fieldtype = "struct PlannerInfo *", .offset = offsetof(struct MinMaxAggInfo, subroot), .size = sizeof(struct PlannerInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 159, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "path", .fieldtype = "struct Path *", .offset = offsetof(struct MinMaxAggInfo, path), .size = sizeof(struct Path *), .flags = TYPE_CAT_POINTER, .node_type_id = 165, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pathcost", .fieldtype = "double", .offset = offsetof(struct MinMaxAggInfo, pathcost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "param", .fieldtype = "struct Param *", .offset = offsetof(struct MinMaxAggInfo, param), .size = sizeof(struct Param *), .flags = TYPE_CAT_POINTER, .node_type_id = 106, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlannerParamItem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "item", .fieldtype = "struct Node *", .offset = offsetof(struct PlannerParamItem, item), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "paramId", .fieldtype = "int", .offset = offsetof(struct PlannerParamItem, paramId), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlannedStmt, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "commandType", .fieldtype = "enum CmdType", .offset = offsetof(struct PlannedStmt, commandType), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "queryId", .fieldtype = "unsigned long", .offset = offsetof(struct PlannedStmt, queryId), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasReturning", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, hasReturning), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hasModifyingCTE", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, hasModifyingCTE), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canSetTag", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, canSetTag), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "transientPlan", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, transientPlan), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dependsOnRole", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, dependsOnRole), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallelModeNeeded", .fieldtype = "_Bool", .offset = offsetof(struct PlannedStmt, parallelModeNeeded), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jitFlags", .fieldtype = "int", .offset = offsetof(struct PlannedStmt, jitFlags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "planTree", .fieldtype = "struct Plan *", .offset = offsetof(struct PlannedStmt, planTree), .size = sizeof(struct Plan *), .flags = TYPE_CAT_POINTER, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtable", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, rtable), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelations", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, resultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootResultRelations", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, rootResultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplans", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, subplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rewindPlanIDs", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlannedStmt, rewindPlanIDs), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relationOids", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, relationOids), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "invalItems", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, invalItems), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramExecTypes", .fieldtype = "struct List *", .offset = offsetof(struct PlannedStmt, paramExecTypes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "utilityStmt", .fieldtype = "struct Node *", .offset = offsetof(struct PlannedStmt, utilityStmt), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "stmt_location", .fieldtype = "int", .offset = offsetof(struct PlannedStmt, stmt_location), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "stmt_len", .fieldtype = "int", .offset = offsetof(struct PlannedStmt, stmt_len), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct Plan, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startup_cost", .fieldtype = "double", .offset = offsetof(struct Plan, startup_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "total_cost", .fieldtype = "double", .offset = offsetof(struct Plan, total_cost), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_rows", .fieldtype = "double", .offset = offsetof(struct Plan, plan_rows), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_width", .fieldtype = "int", .offset = offsetof(struct Plan, plan_width), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_aware", .fieldtype = "_Bool", .offset = offsetof(struct Plan, parallel_aware), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_safe", .fieldtype = "_Bool", .offset = offsetof(struct Plan, parallel_safe), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan_node_id", .fieldtype = "int", .offset = offsetof(struct Plan, plan_node_id), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "targetlist", .fieldtype = "struct List *", .offset = offsetof(struct Plan, targetlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct List *", .offset = offsetof(struct Plan, qual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lefttree", .fieldtype = "struct Plan *", .offset = offsetof(struct Plan, lefttree), .size = sizeof(struct Plan *), .flags = TYPE_CAT_POINTER, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "righttree", .fieldtype = "struct Plan *", .offset = offsetof(struct Plan, righttree), .size = sizeof(struct Plan *), .flags = TYPE_CAT_POINTER, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initPlan", .fieldtype = "struct List *", .offset = offsetof(struct Plan, initPlan), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "extParam", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct Plan, extParam), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "allParam", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct Plan, allParam), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Result, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resconstantqual", .fieldtype = "struct Node *", .offset = offsetof(struct Result, resconstantqual), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct ProjectSet, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct ModifyTable, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "operation", .fieldtype = "enum CmdType", .offset = offsetof(struct ModifyTable, operation), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canSetTag", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTable, canSetTag), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nominalRelation", .fieldtype = "unsigned int", .offset = offsetof(struct ModifyTable, nominalRelation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootRelation", .fieldtype = "unsigned int", .offset = offsetof(struct ModifyTable, rootRelation), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partColsUpdated", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTable, partColsUpdated), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelations", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, resultRelations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelIndex", .fieldtype = "int", .offset = offsetof(struct ModifyTable, resultRelIndex), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootResultRelIndex", .fieldtype = "int", .offset = offsetof(struct ModifyTable, rootResultRelIndex), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plans", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, plans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "withCheckOptionLists", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, withCheckOptionLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returningLists", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, returningLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwPrivLists", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, fdwPrivLists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwDirectModifyPlans", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct ModifyTable, fdwDirectModifyPlans), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "epqParam", .fieldtype = "int", .offset = offsetof(struct ModifyTable, epqParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflictAction", .fieldtype = "enum OnConflictAction", .offset = offsetof(struct ModifyTable, onConflictAction), .size = sizeof(enum OnConflictAction), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "arbiterIndexes", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, arbiterIndexes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflictSet", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, onConflictSet), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "onConflictWhere", .fieldtype = "struct Node *", .offset = offsetof(struct ModifyTable, onConflictWhere), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "exclRelRTI", .fieldtype = "unsigned int", .offset = offsetof(struct ModifyTable, exclRelRTI), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exclRelTlist", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTable, exclRelTlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Append, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "appendplans", .fieldtype = "struct List *", .offset = offsetof(struct Append, appendplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "first_partial_plan", .fieldtype = "int", .offset = offsetof(struct Append, first_partial_plan), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "part_prune_info", .fieldtype = "struct PartitionPruneInfo *", .offset = offsetof(struct Append, part_prune_info), .size = sizeof(struct PartitionPruneInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 53, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct MergeAppend, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mergeplans", .fieldtype = "struct List *", .offset = offsetof(struct MergeAppend, mergeplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct MergeAppend, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortColIdx", .fieldtype = "short *", .offset = offsetof(struct MergeAppend, sortColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "sortOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct MergeAppend, sortOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "collations", .fieldtype = "unsigned int *", .offset = offsetof(struct MergeAppend, collations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "nullsFirst", .fieldtype = "_Bool *", .offset = offsetof(struct MergeAppend, nullsFirst), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "part_prune_info", .fieldtype = "struct PartitionPruneInfo *", .offset = offsetof(struct MergeAppend, part_prune_info), .size = sizeof(struct PartitionPruneInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 53, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct RecursiveUnion, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wtParam", .fieldtype = "int", .offset = offsetof(struct RecursiveUnion, wtParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct RecursiveUnion, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dupColIdx", .fieldtype = "short *", .offset = offsetof(struct RecursiveUnion, dupColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "dupOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct RecursiveUnion, dupOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "dupCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct RecursiveUnion, dupCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "numGroups", .fieldtype = "long", .offset = offsetof(struct RecursiveUnion, numGroups), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct BitmapAnd, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapplans", .fieldtype = "struct List *", .offset = offsetof(struct BitmapAnd, bitmapplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct BitmapOr, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isshared", .fieldtype = "_Bool", .offset = offsetof(struct BitmapOr, isshared), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapplans", .fieldtype = "struct List *", .offset = offsetof(struct BitmapOr, bitmapplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Scan, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scanrelid", .fieldtype = "unsigned int", .offset = offsetof(struct Scan, scanrelid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Scan, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scanrelid", .fieldtype = "unsigned int", .offset = offsetof(struct Scan, scanrelid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct SampleScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablesample", .fieldtype = "struct TableSampleClause *", .offset = offsetof(struct SampleScan, tablesample), .size = sizeof(struct TableSampleClause *), .flags = TYPE_CAT_POINTER, .node_type_id = 368, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct IndexScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexid", .fieldtype = "unsigned int", .offset = offsetof(struct IndexScan, indexid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqual", .fieldtype = "struct List *", .offset = offsetof(struct IndexScan, indexqual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqualorig", .fieldtype = "struct List *", .offset = offsetof(struct IndexScan, indexqualorig), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderby", .fieldtype = "struct List *", .offset = offsetof(struct IndexScan, indexorderby), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderbyorig", .fieldtype = "struct List *", .offset = offsetof(struct IndexScan, indexorderbyorig), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderbyops", .fieldtype = "struct List *", .offset = offsetof(struct IndexScan, indexorderbyops), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderdir", .fieldtype = "enum ScanDirection", .offset = offsetof(struct IndexScan, indexorderdir), .size = sizeof(enum ScanDirection), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct IndexOnlyScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexid", .fieldtype = "unsigned int", .offset = offsetof(struct IndexOnlyScan, indexid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqual", .fieldtype = "struct List *", .offset = offsetof(struct IndexOnlyScan, indexqual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderby", .fieldtype = "struct List *", .offset = offsetof(struct IndexOnlyScan, indexorderby), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indextlist", .fieldtype = "struct List *", .offset = offsetof(struct IndexOnlyScan, indextlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderdir", .fieldtype = "enum ScanDirection", .offset = offsetof(struct IndexOnlyScan, indexorderdir), .size = sizeof(enum ScanDirection), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct BitmapIndexScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexid", .fieldtype = "unsigned int", .offset = offsetof(struct BitmapIndexScan, indexid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isshared", .fieldtype = "_Bool", .offset = offsetof(struct BitmapIndexScan, isshared), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqual", .fieldtype = "struct List *", .offset = offsetof(struct BitmapIndexScan, indexqual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqualorig", .fieldtype = "struct List *", .offset = offsetof(struct BitmapIndexScan, indexqualorig), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct BitmapHeapScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapqualorig", .fieldtype = "struct List *", .offset = offsetof(struct BitmapHeapScan, bitmapqualorig), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct TidScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tidquals", .fieldtype = "struct List *", .offset = offsetof(struct TidScan, tidquals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct SubqueryScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan", .fieldtype = "struct Plan *", .offset = offsetof(struct SubqueryScan, subplan), .size = sizeof(struct Plan *), .flags = TYPE_CAT_POINTER, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct FunctionScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "functions", .fieldtype = "struct List *", .offset = offsetof(struct FunctionScan, functions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcordinality", .fieldtype = "_Bool", .offset = offsetof(struct FunctionScan, funcordinality), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct ValuesScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "values_lists", .fieldtype = "struct List *", .offset = offsetof(struct ValuesScan, values_lists), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct TableFuncScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tablefunc", .fieldtype = "struct TableFunc *", .offset = offsetof(struct TableFuncScan, tablefunc), .size = sizeof(struct TableFunc *), .flags = TYPE_CAT_POINTER, .node_type_id = 102, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct CteScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ctePlanId", .fieldtype = "int", .offset = offsetof(struct CteScan, ctePlanId), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cteParam", .fieldtype = "int", .offset = offsetof(struct CteScan, cteParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct NamedTuplestoreScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "enrname", .fieldtype = "char *", .offset = offsetof(struct NamedTuplestoreScan, enrname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct WorkTableScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wtParam", .fieldtype = "int", .offset = offsetof(struct WorkTableScan, wtParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct ForeignScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "operation", .fieldtype = "enum CmdType", .offset = offsetof(struct ForeignScan, operation), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fs_server", .fieldtype = "unsigned int", .offset = offsetof(struct ForeignScan, fs_server), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_exprs", .fieldtype = "struct List *", .offset = offsetof(struct ForeignScan, fdw_exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_private", .fieldtype = "struct List *", .offset = offsetof(struct ForeignScan, fdw_private), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_scan_tlist", .fieldtype = "struct List *", .offset = offsetof(struct ForeignScan, fdw_scan_tlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_recheck_quals", .fieldtype = "struct List *", .offset = offsetof(struct ForeignScan, fdw_recheck_quals), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fs_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct ForeignScan, fs_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "fsSystemCol", .fieldtype = "_Bool", .offset = offsetof(struct ForeignScan, fsSystemCol), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scan", .fieldtype = "struct Scan", .offset = offsetof(struct CustomScan, scan), .size = sizeof(struct Scan), .flags = TYPE_CAT_SCALAR, .node_type_id = 18, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "flags", .fieldtype = "unsigned int", .offset = offsetof(struct CustomScan, flags), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_plans", .fieldtype = "struct List *", .offset = offsetof(struct CustomScan, custom_plans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_exprs", .fieldtype = "struct List *", .offset = offsetof(struct CustomScan, custom_exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_private", .fieldtype = "struct List *", .offset = offsetof(struct CustomScan, custom_private), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_scan_tlist", .fieldtype = "struct List *", .offset = offsetof(struct CustomScan, custom_scan_tlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_relids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct CustomScan, custom_relids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "methods", .fieldtype = "const struct CustomScanMethods *", .offset = offsetof(struct CustomScan, methods), .size = sizeof(const struct CustomScanMethods *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Join, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct Join, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inner_unique", .fieldtype = "_Bool", .offset = offsetof(struct Join, inner_unique), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "joinqual", .fieldtype = "struct List *", .offset = offsetof(struct Join, joinqual), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join", .fieldtype = "struct Join", .offset = offsetof(struct NestLoop, join), .size = sizeof(struct Join), .flags = TYPE_CAT_SCALAR, .node_type_id = 35, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nestParams", .fieldtype = "struct List *", .offset = offsetof(struct NestLoop, nestParams), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct NestLoopParam, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramno", .fieldtype = "int", .offset = offsetof(struct NestLoopParam, paramno), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "paramval", .fieldtype = "struct Var *", .offset = offsetof(struct NestLoopParam, paramval), .size = sizeof(struct Var *), .flags = TYPE_CAT_POINTER, .node_type_id = 104, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join", .fieldtype = "struct Join", .offset = offsetof(struct MergeJoin, join), .size = sizeof(struct Join), .flags = TYPE_CAT_SCALAR, .node_type_id = 35, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skip_mark_restore", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoin, skip_mark_restore), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mergeclauses", .fieldtype = "struct List *", .offset = offsetof(struct MergeJoin, mergeclauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mergeFamilies", .fieldtype = "unsigned int *", .offset = offsetof(struct MergeJoin, mergeFamilies), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "mergeCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct MergeJoin, mergeCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "mergeStrategies", .fieldtype = "int *", .offset = offsetof(struct MergeJoin, mergeStrategies), .size = sizeof(int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "mergeNullsFirst", .fieldtype = "_Bool *", .offset = offsetof(struct MergeJoin, mergeNullsFirst), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "join", .fieldtype = "struct Join", .offset = offsetof(struct HashJoin, join), .size = sizeof(struct Join), .flags = TYPE_CAT_SCALAR, .node_type_id = 35, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashclauses", .fieldtype = "struct List *", .offset = offsetof(struct HashJoin, hashclauses), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashoperators", .fieldtype = "struct List *", .offset = offsetof(struct HashJoin, hashoperators), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashcollations", .fieldtype = "struct List *", .offset = offsetof(struct HashJoin, hashcollations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashkeys", .fieldtype = "struct List *", .offset = offsetof(struct HashJoin, hashkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Material, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Sort, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct Sort, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortColIdx", .fieldtype = "short *", .offset = offsetof(struct Sort, sortColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "sortOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct Sort, sortOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "collations", .fieldtype = "unsigned int *", .offset = offsetof(struct Sort, collations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "nullsFirst", .fieldtype = "_Bool *", .offset = offsetof(struct Sort, nullsFirst), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Group, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct Group, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grpColIdx", .fieldtype = "short *", .offset = offsetof(struct Group, grpColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "grpOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct Group, grpOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "grpCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct Group, grpCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Agg, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggstrategy", .fieldtype = "enum AggStrategy", .offset = offsetof(struct Agg, aggstrategy), .size = sizeof(enum AggStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggsplit", .fieldtype = "enum AggSplit", .offset = offsetof(struct Agg, aggsplit), .size = sizeof(enum AggSplit), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct Agg, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grpColIdx", .fieldtype = "short *", .offset = offsetof(struct Agg, grpColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "grpOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct Agg, grpOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "grpCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct Agg, grpCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "numGroups", .fieldtype = "long", .offset = offsetof(struct Agg, numGroups), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggParams", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct Agg, aggParams), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "groupingSets", .fieldtype = "struct List *", .offset = offsetof(struct Agg, groupingSets), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "chain", .fieldtype = "struct List *", .offset = offsetof(struct Agg, chain), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct WindowAgg, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "winref", .fieldtype = "unsigned int", .offset = offsetof(struct WindowAgg, winref), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partNumCols", .fieldtype = "int", .offset = offsetof(struct WindowAgg, partNumCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partColIdx", .fieldtype = "short *", .offset = offsetof(struct WindowAgg, partColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "partOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct WindowAgg, partOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "partCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct WindowAgg, partCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ordNumCols", .fieldtype = "int", .offset = offsetof(struct WindowAgg, ordNumCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordColIdx", .fieldtype = "short *", .offset = offsetof(struct WindowAgg, ordColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ordOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct WindowAgg, ordOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ordCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct WindowAgg, ordCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "frameOptions", .fieldtype = "int", .offset = offsetof(struct WindowAgg, frameOptions), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowAgg, startOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "endOffset", .fieldtype = "struct Node *", .offset = offsetof(struct WindowAgg, endOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "startInRangeFunc", .fieldtype = "unsigned int", .offset = offsetof(struct WindowAgg, startInRangeFunc), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "endInRangeFunc", .fieldtype = "unsigned int", .offset = offsetof(struct WindowAgg, endInRangeFunc), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeColl", .fieldtype = "unsigned int", .offset = offsetof(struct WindowAgg, inRangeColl), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeAsc", .fieldtype = "_Bool", .offset = offsetof(struct WindowAgg, inRangeAsc), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeNullsFirst", .fieldtype = "_Bool", .offset = offsetof(struct WindowAgg, inRangeNullsFirst), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Unique, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct Unique, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "uniqColIdx", .fieldtype = "short *", .offset = offsetof(struct Unique, uniqColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "uniqOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct Unique, uniqOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "uniqCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct Unique, uniqCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Gather, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_workers", .fieldtype = "int", .offset = offsetof(struct Gather, num_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rescan_param", .fieldtype = "int", .offset = offsetof(struct Gather, rescan_param), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "single_copy", .fieldtype = "_Bool", .offset = offsetof(struct Gather, single_copy), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "invisible", .fieldtype = "_Bool", .offset = offsetof(struct Gather, invisible), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initParam", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct Gather, initParam), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct GatherMerge, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_workers", .fieldtype = "int", .offset = offsetof(struct GatherMerge, num_workers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rescan_param", .fieldtype = "int", .offset = offsetof(struct GatherMerge, rescan_param), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct GatherMerge, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sortColIdx", .fieldtype = "short *", .offset = offsetof(struct GatherMerge, sortColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "sortOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct GatherMerge, sortOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "collations", .fieldtype = "unsigned int *", .offset = offsetof(struct GatherMerge, collations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "nullsFirst", .fieldtype = "_Bool *", .offset = offsetof(struct GatherMerge, nullsFirst), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initParam", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct GatherMerge, initParam), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Hash, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashkeys", .fieldtype = "struct List *", .offset = offsetof(struct Hash, hashkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skewTable", .fieldtype = "unsigned int", .offset = offsetof(struct Hash, skewTable), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skewColumn", .fieldtype = "short", .offset = offsetof(struct Hash, skewColumn), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "skewInherit", .fieldtype = "_Bool", .offset = offsetof(struct Hash, skewInherit), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rows_total", .fieldtype = "double", .offset = offsetof(struct Hash, rows_total), .size = sizeof(double), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct SetOp, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cmd", .fieldtype = "enum SetOpCmd", .offset = offsetof(struct SetOp, cmd), .size = sizeof(enum SetOpCmd), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strategy", .fieldtype = "enum SetOpStrategy", .offset = offsetof(struct SetOp, strategy), .size = sizeof(enum SetOpStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numCols", .fieldtype = "int", .offset = offsetof(struct SetOp, numCols), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "dupColIdx", .fieldtype = "short *", .offset = offsetof(struct SetOp, dupColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "dupOperators", .fieldtype = "unsigned int *", .offset = offsetof(struct SetOp, dupOperators), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "dupCollations", .fieldtype = "unsigned int *", .offset = offsetof(struct SetOp, dupCollations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "flagColIdx", .fieldtype = "short", .offset = offsetof(struct SetOp, flagColIdx), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "firstFlag", .fieldtype = "int", .offset = offsetof(struct SetOp, firstFlag), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numGroups", .fieldtype = "long", .offset = offsetof(struct SetOp, numGroups), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct LockRows, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowMarks", .fieldtype = "struct List *", .offset = offsetof(struct LockRows, rowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "epqParam", .fieldtype = "int", .offset = offsetof(struct LockRows, epqParam), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan", .offset = offsetof(struct Limit, plan), .size = sizeof(struct Plan), .flags = TYPE_CAT_SCALAR, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitOffset", .fieldtype = "struct Node *", .offset = offsetof(struct Limit, limitOffset), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "limitCount", .fieldtype = "struct Node *", .offset = offsetof(struct Limit, limitCount), .size = sizeof(struct Node *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_NODE},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlanRowMark, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rti", .fieldtype = "unsigned int", .offset = offsetof(struct PlanRowMark, rti), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prti", .fieldtype = "unsigned int", .offset = offsetof(struct PlanRowMark, prti), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowmarkId", .fieldtype = "unsigned int", .offset = offsetof(struct PlanRowMark, rowmarkId), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "markType", .fieldtype = "enum RowMarkType", .offset = offsetof(struct PlanRowMark, markType), .size = sizeof(enum RowMarkType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "allMarkTypes", .fieldtype = "int", .offset = offsetof(struct PlanRowMark, allMarkTypes), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "strength", .fieldtype = "enum LockClauseStrength", .offset = offsetof(struct PlanRowMark, strength), .size = sizeof(enum LockClauseStrength), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "waitPolicy", .fieldtype = "enum LockWaitPolicy", .offset = offsetof(struct PlanRowMark, waitPolicy), .size = sizeof(enum LockWaitPolicy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isParent", .fieldtype = "_Bool", .offset = offsetof(struct PlanRowMark, isParent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionPruneInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prune_infos", .fieldtype = "struct List *", .offset = offsetof(struct PartitionPruneInfo, prune_infos), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "other_subplans", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PartitionPruneInfo, other_subplans), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PartitionedRelPruneInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rtindex", .fieldtype = "unsigned int", .offset = offsetof(struct PartitionedRelPruneInfo, rtindex), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "present_parts", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PartitionedRelPruneInfo, present_parts), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "nparts", .fieldtype = "int", .offset = offsetof(struct PartitionedRelPruneInfo, nparts), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan_map", .fieldtype = "int *", .offset = offsetof(struct PartitionedRelPruneInfo, subplan_map), .size = sizeof(int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "subpart_map", .fieldtype = "int *", .offset = offsetof(struct PartitionedRelPruneInfo, subpart_map), .size = sizeof(int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "relid_map", .fieldtype = "unsigned int *", .offset = offsetof(struct PartitionedRelPruneInfo, relid_map), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "initial_pruning_steps", .fieldtype = "struct List *", .offset = offsetof(struct PartitionedRelPruneInfo, initial_pruning_steps), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exec_pruning_steps", .fieldtype = "struct List *", .offset = offsetof(struct PartitionedRelPruneInfo, exec_pruning_steps), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "execparamids", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PartitionedRelPruneInfo, execparamids), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "step", .fieldtype = "struct PartitionPruneStep", .offset = offsetof(struct PartitionPruneStepOp, step), .size = sizeof(struct PartitionPruneStep), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "opstrategy", .fieldtype = "unsigned short", .offset = offsetof(struct PartitionPruneStepOp, opstrategy), .size = sizeof(unsigned short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exprs", .fieldtype = "struct List *", .offset = offsetof(struct PartitionPruneStepOp, exprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cmpfns", .fieldtype = "struct List *", .offset = offsetof(struct PartitionPruneStepOp, cmpfns), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nullkeys", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PartitionPruneStepOp, nullkeys), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "step", .fieldtype = "struct PartitionPruneStep", .offset = offsetof(struct PartitionPruneStepCombine, step), .size = sizeof(struct PartitionPruneStep), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "combineOp", .fieldtype = "enum PartitionPruneCombineOp", .offset = offsetof(struct PartitionPruneStepCombine, combineOp), .size = sizeof(enum PartitionPruneCombineOp), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "source_stepids", .fieldtype = "struct List *", .offset = offsetof(struct PartitionPruneStepCombine, source_stepids), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlanInvalItem, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cacheId", .fieldtype = "int", .offset = offsetof(struct PlanInvalItem, cacheId), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashValue", .fieldtype = "unsigned int", .offset = offsetof(struct PlanInvalItem, hashValue), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TupleTableSlot, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_flags", .fieldtype = "unsigned short", .offset = offsetof(struct TupleTableSlot, tts_flags), .size = sizeof(unsigned short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_nvalid", .fieldtype = "short", .offset = offsetof(struct TupleTableSlot, tts_nvalid), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_ops", .fieldtype = "const struct TupleTableSlotOps *const", .offset = offsetof(struct TupleTableSlot, tts_ops), .size = sizeof(const struct TupleTableSlotOps *const), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_tupleDescriptor", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct TupleTableSlot, tts_tupleDescriptor), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_values", .fieldtype = "unsigned long *", .offset = offsetof(struct TupleTableSlot, tts_values), .size = sizeof(unsigned long *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "tts_isnull", .fieldtype = "_Bool *", .offset = offsetof(struct TupleTableSlot, tts_isnull), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_mcxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct TupleTableSlot, tts_mcxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_tid", .fieldtype = "struct ItemPointerData", .offset = offsetof(struct TupleTableSlot, tts_tid), .size = sizeof(struct ItemPointerData), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tts_tableOid", .fieldtype = "unsigned int", .offset = offsetof(struct TupleTableSlot, tts_tableOid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tag", .fieldtype = "struct Node", .offset = offsetof(struct ExprState, tag), .size = sizeof(struct Node), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "flags", .fieldtype = "unsigned char", .offset = offsetof(struct ExprState, flags), .size = sizeof(unsigned char), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resnull", .fieldtype = "_Bool", .offset = offsetof(struct ExprState, resnull), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resvalue", .fieldtype = "unsigned long", .offset = offsetof(struct ExprState, resvalue), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultslot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ExprState, resultslot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "steps", .fieldtype = "struct ExprEvalStep *", .offset = offsetof(struct ExprState, steps), .size = sizeof(struct ExprEvalStep *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "evalfunc", .fieldtype = "unsigned long (*)(struct ExprState *, struct ExprContext *, _Bool *)", .offset = offsetof(struct ExprState, evalfunc), .size = sizeof(unsigned long (*)(struct ExprState *, struct ExprContext *, _Bool *)), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Expr *", .offset = offsetof(struct ExprState, expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "evalfunc_private", .fieldtype = "void *", .offset = offsetof(struct ExprState, evalfunc_private), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "steps_len", .fieldtype = "int", .offset = offsetof(struct ExprState, steps_len), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "steps_alloc", .fieldtype = "int", .offset = offsetof(struct ExprState, steps_alloc), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent", .fieldtype = "struct PlanState *", .offset = offsetof(struct ExprState, parent), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ext_params", .fieldtype = "struct ParamListInfoData *", .offset = offsetof(struct ExprState, ext_params), .size = sizeof(struct ParamListInfoData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innermost_caseval", .fieldtype = "unsigned long *", .offset = offsetof(struct ExprState, innermost_caseval), .size = sizeof(unsigned long *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "innermost_casenull", .fieldtype = "_Bool *", .offset = offsetof(struct ExprState, innermost_casenull), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innermost_domainval", .fieldtype = "unsigned long *", .offset = offsetof(struct ExprState, innermost_domainval), .size = sizeof(unsigned long *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "innermost_domainnull", .fieldtype = "_Bool *", .offset = offsetof(struct ExprState, innermost_domainnull), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IndexInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_NumIndexAttrs", .fieldtype = "int", .offset = offsetof(struct IndexInfo, ii_NumIndexAttrs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_NumIndexKeyAttrs", .fieldtype = "int", .offset = offsetof(struct IndexInfo, ii_NumIndexKeyAttrs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_IndexAttrNumbers", .fieldtype = "short [32]", .offset = offsetof(struct IndexInfo, ii_IndexAttrNumbers), .size = sizeof(short [32]), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_Expressions", .fieldtype = "struct List *", .offset = offsetof(struct IndexInfo, ii_Expressions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_ExpressionsState", .fieldtype = "struct List *", .offset = offsetof(struct IndexInfo, ii_ExpressionsState), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_Predicate", .fieldtype = "struct List *", .offset = offsetof(struct IndexInfo, ii_Predicate), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_PredicateState", .fieldtype = "struct ExprState *", .offset = offsetof(struct IndexInfo, ii_PredicateState), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_ExclusionOps", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexInfo, ii_ExclusionOps), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_ExclusionProcs", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexInfo, ii_ExclusionProcs), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_ExclusionStrats", .fieldtype = "unsigned short *", .offset = offsetof(struct IndexInfo, ii_ExclusionStrats), .size = sizeof(unsigned short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_UniqueOps", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexInfo, ii_UniqueOps), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_UniqueProcs", .fieldtype = "unsigned int *", .offset = offsetof(struct IndexInfo, ii_UniqueProcs), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_UniqueStrats", .fieldtype = "unsigned short *", .offset = offsetof(struct IndexInfo, ii_UniqueStrats), .size = sizeof(unsigned short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ii_Unique", .fieldtype = "_Bool", .offset = offsetof(struct IndexInfo, ii_Unique), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_ReadyForInserts", .fieldtype = "_Bool", .offset = offsetof(struct IndexInfo, ii_ReadyForInserts), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_Concurrent", .fieldtype = "_Bool", .offset = offsetof(struct IndexInfo, ii_Concurrent), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_BrokenHotChain", .fieldtype = "_Bool", .offset = offsetof(struct IndexInfo, ii_BrokenHotChain), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_ParallelWorkers", .fieldtype = "int", .offset = offsetof(struct IndexInfo, ii_ParallelWorkers), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_Am", .fieldtype = "unsigned int", .offset = offsetof(struct IndexInfo, ii_Am), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_AmCache", .fieldtype = "void *", .offset = offsetof(struct IndexInfo, ii_AmCache), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ii_Context", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct IndexInfo, ii_Context), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ExprContext, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_scantuple", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ExprContext, ecxt_scantuple), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_innertuple", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ExprContext, ecxt_innertuple), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_outertuple", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ExprContext, ecxt_outertuple), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_per_query_memory", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct ExprContext, ecxt_per_query_memory), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_per_tuple_memory", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct ExprContext, ecxt_per_tuple_memory), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_param_exec_vals", .fieldtype = "struct ParamExecData *", .offset = offsetof(struct ExprContext, ecxt_param_exec_vals), .size = sizeof(struct ParamExecData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_param_list_info", .fieldtype = "struct ParamListInfoData *", .offset = offsetof(struct ExprContext, ecxt_param_list_info), .size = sizeof(struct ParamListInfoData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_aggvalues", .fieldtype = "unsigned long *", .offset = offsetof(struct ExprContext, ecxt_aggvalues), .size = sizeof(unsigned long *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ecxt_aggnulls", .fieldtype = "_Bool *", .offset = offsetof(struct ExprContext, ecxt_aggnulls), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "caseValue_datum", .fieldtype = "unsigned long", .offset = offsetof(struct ExprContext, caseValue_datum), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "caseValue_isNull", .fieldtype = "_Bool", .offset = offsetof(struct ExprContext, caseValue_isNull), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "domainValue_datum", .fieldtype = "unsigned long", .offset = offsetof(struct ExprContext, domainValue_datum), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "domainValue_isNull", .fieldtype = "_Bool", .offset = offsetof(struct ExprContext, domainValue_isNull), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_estate", .fieldtype = "struct EState *", .offset = offsetof(struct ExprContext, ecxt_estate), .size = sizeof(struct EState *), .flags = TYPE_CAT_POINTER, .node_type_id = 7, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ecxt_callbacks", .fieldtype = "struct ExprContext_CB *", .offset = offsetof(struct ExprContext, ecxt_callbacks), .size = sizeof(struct ExprContext_CB *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ReturnSetInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "econtext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct ReturnSetInfo, econtext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expectedDesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct ReturnSetInfo, expectedDesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "allowedModes", .fieldtype = "int", .offset = offsetof(struct ReturnSetInfo, allowedModes), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "returnMode", .fieldtype = "SetFunctionReturnMode", .offset = offsetof(struct ReturnSetInfo, returnMode), .size = sizeof(SetFunctionReturnMode), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "isDone", .fieldtype = "ExprDoneCond", .offset = offsetof(struct ReturnSetInfo, isDone), .size = sizeof(ExprDoneCond), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setResult", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct ReturnSetInfo, setResult), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setDesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct ReturnSetInfo, setDesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ProjectionInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pi_state", .fieldtype = "struct ExprState", .offset = offsetof(struct ProjectionInfo, pi_state), .size = sizeof(struct ExprState), .flags = TYPE_CAT_SCALAR, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pi_exprContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct ProjectionInfo, pi_exprContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct JunkFilter, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jf_targetList", .fieldtype = "struct List *", .offset = offsetof(struct JunkFilter, jf_targetList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jf_cleanTupType", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct JunkFilter, jf_cleanTupType), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jf_cleanMap", .fieldtype = "short *", .offset = offsetof(struct JunkFilter, jf_cleanMap), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "jf_resultSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct JunkFilter, jf_resultSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jf_junkAttNo", .fieldtype = "short", .offset = offsetof(struct JunkFilter, jf_junkAttNo), .size = sizeof(short), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct OnConflictSetState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oc_Existing", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct OnConflictSetState, oc_Existing), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oc_ProjSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct OnConflictSetState, oc_ProjSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oc_ProjInfo", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct OnConflictSetState, oc_ProjInfo), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "oc_WhereClause", .fieldtype = "struct ExprState *", .offset = offsetof(struct OnConflictSetState, oc_WhereClause), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ResultRelInfo, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_RangeTableIndex", .fieldtype = "unsigned int", .offset = offsetof(struct ResultRelInfo, ri_RangeTableIndex), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_RelationDesc", .fieldtype = "struct RelationData *", .offset = offsetof(struct ResultRelInfo, ri_RelationDesc), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_NumIndices", .fieldtype = "int", .offset = offsetof(struct ResultRelInfo, ri_NumIndices), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_IndexRelationDescs", .fieldtype = "struct RelationData **", .offset = offsetof(struct ResultRelInfo, ri_IndexRelationDescs), .size = sizeof(struct RelationData **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_IndexRelationInfo", .fieldtype = "struct IndexInfo **", .offset = offsetof(struct ResultRelInfo, ri_IndexRelationInfo), .size = sizeof(struct IndexInfo **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigDesc", .fieldtype = "struct TriggerDesc *", .offset = offsetof(struct ResultRelInfo, ri_TrigDesc), .size = sizeof(struct TriggerDesc *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigFunctions", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct ResultRelInfo, ri_TrigFunctions), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigWhenExprs", .fieldtype = "struct ExprState **", .offset = offsetof(struct ResultRelInfo, ri_TrigWhenExprs), .size = sizeof(struct ExprState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigInstrument", .fieldtype = "struct Instrumentation *", .offset = offsetof(struct ResultRelInfo, ri_TrigInstrument), .size = sizeof(struct Instrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_ReturningSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ResultRelInfo, ri_ReturningSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigOldSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ResultRelInfo, ri_TrigOldSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_TrigNewSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ResultRelInfo, ri_TrigNewSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_FdwRoutine", .fieldtype = "struct FdwRoutine *", .offset = offsetof(struct ResultRelInfo, ri_FdwRoutine), .size = sizeof(struct FdwRoutine *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_FdwState", .fieldtype = "void *", .offset = offsetof(struct ResultRelInfo, ri_FdwState), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_usesFdwDirectModify", .fieldtype = "_Bool", .offset = offsetof(struct ResultRelInfo, ri_usesFdwDirectModify), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_WithCheckOptions", .fieldtype = "struct List *", .offset = offsetof(struct ResultRelInfo, ri_WithCheckOptions), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_WithCheckOptionExprs", .fieldtype = "struct List *", .offset = offsetof(struct ResultRelInfo, ri_WithCheckOptionExprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_ConstraintExprs", .fieldtype = "struct ExprState **", .offset = offsetof(struct ResultRelInfo, ri_ConstraintExprs), .size = sizeof(struct ExprState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_GeneratedExprs", .fieldtype = "struct ExprState **", .offset = offsetof(struct ResultRelInfo, ri_GeneratedExprs), .size = sizeof(struct ExprState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_junkFilter", .fieldtype = "struct JunkFilter *", .offset = offsetof(struct ResultRelInfo, ri_junkFilter), .size = sizeof(struct JunkFilter *), .flags = TYPE_CAT_POINTER, .node_type_id = 4, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_returningList", .fieldtype = "struct List *", .offset = offsetof(struct ResultRelInfo, ri_returningList), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_projectReturning", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct ResultRelInfo, ri_projectReturning), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_onConflictArbiterIndexes", .fieldtype = "struct List *", .offset = offsetof(struct ResultRelInfo, ri_onConflictArbiterIndexes), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_onConflict", .fieldtype = "struct OnConflictSetState *", .offset = offsetof(struct ResultRelInfo, ri_onConflict), .size = sizeof(struct OnConflictSetState *), .flags = TYPE_CAT_POINTER, .node_type_id = 5, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_PartitionCheck", .fieldtype = "struct List *", .offset = offsetof(struct ResultRelInfo, ri_PartitionCheck), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_PartitionCheckExpr", .fieldtype = "struct ExprState *", .offset = offsetof(struct ResultRelInfo, ri_PartitionCheckExpr), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_PartitionRoot", .fieldtype = "struct RelationData *", .offset = offsetof(struct ResultRelInfo, ri_PartitionRoot), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_PartitionInfo", .fieldtype = "struct PartitionRoutingInfo *", .offset = offsetof(struct ResultRelInfo, ri_PartitionInfo), .size = sizeof(struct PartitionRoutingInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ri_CopyMultiInsertBuffer", .fieldtype = "struct CopyMultiInsertBuffer *", .offset = offsetof(struct ResultRelInfo, ri_CopyMultiInsertBuffer), .size = sizeof(struct CopyMultiInsertBuffer *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct EState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_direction", .fieldtype = "enum ScanDirection", .offset = offsetof(struct EState, es_direction), .size = sizeof(enum ScanDirection), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_snapshot", .fieldtype = "struct SnapshotData *", .offset = offsetof(struct EState, es_snapshot), .size = sizeof(struct SnapshotData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_crosscheck_snapshot", .fieldtype = "struct SnapshotData *", .offset = offsetof(struct EState, es_crosscheck_snapshot), .size = sizeof(struct SnapshotData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_range_table", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_range_table), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_range_table_size", .fieldtype = "unsigned int", .offset = offsetof(struct EState, es_range_table_size), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_relations", .fieldtype = "struct RelationData **", .offset = offsetof(struct EState, es_relations), .size = sizeof(struct RelationData **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_rowmarks", .fieldtype = "struct ExecRowMark **", .offset = offsetof(struct EState, es_rowmarks), .size = sizeof(struct ExecRowMark **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_plannedstmt", .fieldtype = "struct PlannedStmt *", .offset = offsetof(struct EState, es_plannedstmt), .size = sizeof(struct PlannedStmt *), .flags = TYPE_CAT_POINTER, .node_type_id = 229, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_sourceText", .fieldtype = "const char *", .offset = offsetof(struct EState, es_sourceText), .size = sizeof(const char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "es_junkFilter", .fieldtype = "struct JunkFilter *", .offset = offsetof(struct EState, es_junkFilter), .size = sizeof(struct JunkFilter *), .flags = TYPE_CAT_POINTER, .node_type_id = 4, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_output_cid", .fieldtype = "unsigned int", .offset = offsetof(struct EState, es_output_cid), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_result_relations", .fieldtype = "struct ResultRelInfo *", .offset = offsetof(struct EState, es_result_relations), .size = sizeof(struct ResultRelInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 6, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_num_result_relations", .fieldtype = "int", .offset = offsetof(struct EState, es_num_result_relations), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_result_relation_info", .fieldtype = "struct ResultRelInfo *", .offset = offsetof(struct EState, es_result_relation_info), .size = sizeof(struct ResultRelInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 6, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_root_result_relations", .fieldtype = "struct ResultRelInfo *", .offset = offsetof(struct EState, es_root_result_relations), .size = sizeof(struct ResultRelInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 6, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_num_root_result_relations", .fieldtype = "int", .offset = offsetof(struct EState, es_num_root_result_relations), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_partition_directory", .fieldtype = "struct PartitionDirectoryData *", .offset = offsetof(struct EState, es_partition_directory), .size = sizeof(struct PartitionDirectoryData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_tuple_routing_result_relations", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_tuple_routing_result_relations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_trig_target_relations", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_trig_target_relations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_param_list_info", .fieldtype = "struct ParamListInfoData *", .offset = offsetof(struct EState, es_param_list_info), .size = sizeof(struct ParamListInfoData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_param_exec_vals", .fieldtype = "struct ParamExecData *", .offset = offsetof(struct EState, es_param_exec_vals), .size = sizeof(struct ParamExecData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_queryEnv", .fieldtype = "struct QueryEnvironment *", .offset = offsetof(struct EState, es_queryEnv), .size = sizeof(struct QueryEnvironment *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_query_cxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct EState, es_query_cxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_tupleTable", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_tupleTable), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_processed", .fieldtype = "unsigned long", .offset = offsetof(struct EState, es_processed), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_top_eflags", .fieldtype = "int", .offset = offsetof(struct EState, es_top_eflags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_instrument", .fieldtype = "int", .offset = offsetof(struct EState, es_instrument), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_finished", .fieldtype = "_Bool", .offset = offsetof(struct EState, es_finished), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_exprcontexts", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_exprcontexts), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_subplanstates", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_subplanstates), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_auxmodifytables", .fieldtype = "struct List *", .offset = offsetof(struct EState, es_auxmodifytables), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_per_tuple_exprcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct EState, es_per_tuple_exprcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_epqTupleSlot", .fieldtype = "struct TupleTableSlot **", .offset = offsetof(struct EState, es_epqTupleSlot), .size = sizeof(struct TupleTableSlot **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_epqScanDone", .fieldtype = "_Bool *", .offset = offsetof(struct EState, es_epqScanDone), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_use_parallel_mode", .fieldtype = "_Bool", .offset = offsetof(struct EState, es_use_parallel_mode), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_query_dsa", .fieldtype = "struct dsa_area *", .offset = offsetof(struct EState, es_query_dsa), .size = sizeof(struct dsa_area *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_jit_flags", .fieldtype = "int", .offset = offsetof(struct EState, es_jit_flags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_jit", .fieldtype = "struct JitContext *", .offset = offsetof(struct EState, es_jit), .size = sizeof(struct JitContext *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "es_jit_worker_instr", .fieldtype = "struct JitInstrumentation *", .offset = offsetof(struct EState, es_jit_worker_instr), .size = sizeof(struct JitInstrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AggrefExprState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggref", .fieldtype = "struct Aggref *", .offset = offsetof(struct AggrefExprState, aggref), .size = sizeof(struct Aggref *), .flags = TYPE_CAT_POINTER, .node_type_id = 107, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggno", .fieldtype = "int", .offset = offsetof(struct AggrefExprState, aggno), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct WindowFuncExprState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wfunc", .fieldtype = "struct WindowFunc *", .offset = offsetof(struct WindowFuncExprState, wfunc), .size = sizeof(struct WindowFunc *), .flags = TYPE_CAT_POINTER, .node_type_id = 109, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct WindowFuncExprState, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggfilter", .fieldtype = "struct ExprState *", .offset = offsetof(struct WindowFuncExprState, aggfilter), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "wfuncno", .fieldtype = "int", .offset = offsetof(struct WindowFuncExprState, wfuncno), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SetExprState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "expr", .fieldtype = "struct Expr *", .offset = offsetof(struct SetExprState, expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct SetExprState, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elidedFuncState", .fieldtype = "struct ExprState *", .offset = offsetof(struct SetExprState, elidedFuncState), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "func", .fieldtype = "struct FmgrInfo", .offset = offsetof(struct SetExprState, func), .size = sizeof(struct FmgrInfo), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcResultStore", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct SetExprState, funcResultStore), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcResultSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct SetExprState, funcResultSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcResultDesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct SetExprState, funcResultDesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcReturnsTuple", .fieldtype = "_Bool", .offset = offsetof(struct SetExprState, funcReturnsTuple), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcReturnsSet", .fieldtype = "_Bool", .offset = offsetof(struct SetExprState, funcReturnsSet), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setArgsValid", .fieldtype = "_Bool", .offset = offsetof(struct SetExprState, setArgsValid), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "shutdown_reg", .fieldtype = "_Bool", .offset = offsetof(struct SetExprState, shutdown_reg), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fcinfo", .fieldtype = "struct FunctionCallInfoBaseData *", .offset = offsetof(struct SetExprState, fcinfo), .size = sizeof(struct FunctionCallInfoBaseData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SubPlanState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan", .fieldtype = "struct SubPlan *", .offset = offsetof(struct SubPlanState, subplan), .size = sizeof(struct SubPlan *), .flags = TYPE_CAT_POINTER, .node_type_id = 119, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "planstate", .fieldtype = "struct PlanState *", .offset = offsetof(struct SubPlanState, planstate), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parent", .fieldtype = "struct PlanState *", .offset = offsetof(struct SubPlanState, parent), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "testexpr", .fieldtype = "struct ExprState *", .offset = offsetof(struct SubPlanState, testexpr), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct SubPlanState, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curTuple", .fieldtype = "struct HeapTupleData *", .offset = offsetof(struct SubPlanState, curTuple), .size = sizeof(struct HeapTupleData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curArray", .fieldtype = "unsigned long", .offset = offsetof(struct SubPlanState, curArray), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "descRight", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct SubPlanState, descRight), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "projLeft", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct SubPlanState, projLeft), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "projRight", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct SubPlanState, projRight), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtable", .fieldtype = "struct TupleHashTableData *", .offset = offsetof(struct SubPlanState, hashtable), .size = sizeof(struct TupleHashTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashnulls", .fieldtype = "struct TupleHashTableData *", .offset = offsetof(struct SubPlanState, hashnulls), .size = sizeof(struct TupleHashTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "havehashrows", .fieldtype = "_Bool", .offset = offsetof(struct SubPlanState, havehashrows), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "havenullrows", .fieldtype = "_Bool", .offset = offsetof(struct SubPlanState, havenullrows), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtablecxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct SubPlanState, hashtablecxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtempcxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct SubPlanState, hashtempcxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innerecontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct SubPlanState, innerecontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "keyColIdx", .fieldtype = "short *", .offset = offsetof(struct SubPlanState, keyColIdx), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "tab_eq_funcoids", .fieldtype = "unsigned int *", .offset = offsetof(struct SubPlanState, tab_eq_funcoids), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "tab_collations", .fieldtype = "unsigned int *", .offset = offsetof(struct SubPlanState, tab_collations), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "tab_hash_funcs", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct SubPlanState, tab_hash_funcs), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tab_eq_funcs", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct SubPlanState, tab_eq_funcs), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lhs_hash_funcs", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct SubPlanState, lhs_hash_funcs), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cur_eq_funcs", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct SubPlanState, cur_eq_funcs), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cur_eq_comp", .fieldtype = "struct ExprState *", .offset = offsetof(struct SubPlanState, cur_eq_comp), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct AlternativeSubPlanState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan", .fieldtype = "struct AlternativeSubPlan *", .offset = offsetof(struct AlternativeSubPlanState, subplan), .size = sizeof(struct AlternativeSubPlan *), .flags = TYPE_CAT_POINTER, .node_type_id = 120, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplans", .fieldtype = "struct List *", .offset = offsetof(struct AlternativeSubPlanState, subplans), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "active", .fieldtype = "int", .offset = offsetof(struct AlternativeSubPlanState, active), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DomainConstraintState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "constrainttype", .fieldtype = "enum DomainConstraintType", .offset = offsetof(struct DomainConstraintState, constrainttype), .size = sizeof(enum DomainConstraintType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "name", .fieldtype = "char *", .offset = offsetof(struct DomainConstraintState, name), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "check_expr", .fieldtype = "struct Expr *", .offset = offsetof(struct DomainConstraintState, check_expr), .size = sizeof(struct Expr *), .flags = TYPE_CAT_POINTER, .node_type_id = 103, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "check_exprstate", .fieldtype = "struct ExprState *", .offset = offsetof(struct DomainConstraintState, check_exprstate), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct PlanState, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plan", .fieldtype = "struct Plan *", .offset = offsetof(struct PlanState, plan), .size = sizeof(struct Plan *), .flags = TYPE_CAT_POINTER, .node_type_id = 9, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "state", .fieldtype = "struct EState *", .offset = offsetof(struct PlanState, state), .size = sizeof(struct EState *), .flags = TYPE_CAT_POINTER, .node_type_id = 7, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ExecProcNode", .fieldtype = "struct TupleTableSlot *(*)(struct PlanState *)", .offset = offsetof(struct PlanState, ExecProcNode), .size = sizeof(struct TupleTableSlot *(*)(struct PlanState *)), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ExecProcNodeReal", .fieldtype = "struct TupleTableSlot *(*)(struct PlanState *)", .offset = offsetof(struct PlanState, ExecProcNodeReal), .size = sizeof(struct TupleTableSlot *(*)(struct PlanState *)), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "instrument", .fieldtype = "struct Instrumentation *", .offset = offsetof(struct PlanState, instrument), .size = sizeof(struct Instrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "worker_instrument", .fieldtype = "struct WorkerInstrumentation *", .offset = offsetof(struct PlanState, worker_instrument), .size = sizeof(struct WorkerInstrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "worker_jit_instrument", .fieldtype = "struct SharedJitInstrumentation *", .offset = offsetof(struct PlanState, worker_jit_instrument), .size = sizeof(struct SharedJitInstrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "qual", .fieldtype = "struct ExprState *", .offset = offsetof(struct PlanState, qual), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lefttree", .fieldtype = "struct PlanState *", .offset = offsetof(struct PlanState, lefttree), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "righttree", .fieldtype = "struct PlanState *", .offset = offsetof(struct PlanState, righttree), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initPlan", .fieldtype = "struct List *", .offset = offsetof(struct PlanState, initPlan), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subPlan", .fieldtype = "struct List *", .offset = offsetof(struct PlanState, subPlan), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "chgParam", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct PlanState, chgParam), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ps_ResultTupleDesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct PlanState, ps_ResultTupleDesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps_ResultTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct PlanState, ps_ResultTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps_ExprContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct PlanState, ps_ExprContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps_ProjInfo", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct PlanState, ps_ProjInfo), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scandesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct PlanState, scandesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scanops", .fieldtype = "const struct TupleTableSlotOps *", .offset = offsetof(struct PlanState, scanops), .size = sizeof(const struct TupleTableSlotOps *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outerops", .fieldtype = "const struct TupleTableSlotOps *", .offset = offsetof(struct PlanState, outerops), .size = sizeof(const struct TupleTableSlotOps *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "innerops", .fieldtype = "const struct TupleTableSlotOps *", .offset = offsetof(struct PlanState, innerops), .size = sizeof(const struct TupleTableSlotOps *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultops", .fieldtype = "const struct TupleTableSlotOps *", .offset = offsetof(struct PlanState, resultops), .size = sizeof(const struct TupleTableSlotOps *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scanopsfixed", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, scanopsfixed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outeropsfixed", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, outeropsfixed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inneropsfixed", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, inneropsfixed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultopsfixed", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, resultopsfixed), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "scanopsset", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, scanopsset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "outeropsset", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, outeropsset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inneropsset", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, inneropsset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultopsset", .fieldtype = "_Bool", .offset = offsetof(struct PlanState, resultopsset), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct ResultState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resconstantqual", .fieldtype = "struct ExprState *", .offset = offsetof(struct ResultState, resconstantqual), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rs_done", .fieldtype = "_Bool", .offset = offsetof(struct ResultState, rs_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rs_checkqual", .fieldtype = "_Bool", .offset = offsetof(struct ResultState, rs_checkqual), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct ProjectSetState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elems", .fieldtype = "struct Node **", .offset = offsetof(struct ProjectSetState, elems), .size = sizeof(struct Node **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "elemdone", .fieldtype = "ExprDoneCond *", .offset = offsetof(struct ProjectSetState, elemdone), .size = sizeof(ExprDoneCond *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nelems", .fieldtype = "int", .offset = offsetof(struct ProjectSetState, nelems), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pending_srf_tuples", .fieldtype = "_Bool", .offset = offsetof(struct ProjectSetState, pending_srf_tuples), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "argcontext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct ProjectSetState, argcontext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct ModifyTableState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "operation", .fieldtype = "enum CmdType", .offset = offsetof(struct ModifyTableState, operation), .size = sizeof(enum CmdType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "canSetTag", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTableState, canSetTag), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_done", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTableState, mt_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_plans", .fieldtype = "struct PlanState **", .offset = offsetof(struct ModifyTableState, mt_plans), .size = sizeof(struct PlanState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_nplans", .fieldtype = "int", .offset = offsetof(struct ModifyTableState, mt_nplans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_whichplan", .fieldtype = "int", .offset = offsetof(struct ModifyTableState, mt_whichplan), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_scans", .fieldtype = "struct TupleTableSlot **", .offset = offsetof(struct ModifyTableState, mt_scans), .size = sizeof(struct TupleTableSlot **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "resultRelInfo", .fieldtype = "struct ResultRelInfo *", .offset = offsetof(struct ModifyTableState, resultRelInfo), .size = sizeof(struct ResultRelInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 6, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rootResultRelInfo", .fieldtype = "struct ResultRelInfo *", .offset = offsetof(struct ModifyTableState, rootResultRelInfo), .size = sizeof(struct ResultRelInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 6, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_arowmarks", .fieldtype = "struct List **", .offset = offsetof(struct ModifyTableState, mt_arowmarks), .size = sizeof(struct List **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_epqstate", .fieldtype = "struct EPQState", .offset = offsetof(struct ModifyTableState, mt_epqstate), .size = sizeof(struct EPQState), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fireBSTriggers", .fieldtype = "_Bool", .offset = offsetof(struct ModifyTableState, fireBSTriggers), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_excludedtlist", .fieldtype = "struct List *", .offset = offsetof(struct ModifyTableState, mt_excludedtlist), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_root_tuple_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ModifyTableState, mt_root_tuple_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_partition_tuple_routing", .fieldtype = "struct PartitionTupleRouting *", .offset = offsetof(struct ModifyTableState, mt_partition_tuple_routing), .size = sizeof(struct PartitionTupleRouting *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_transition_capture", .fieldtype = "struct TransitionCaptureState *", .offset = offsetof(struct ModifyTableState, mt_transition_capture), .size = sizeof(struct TransitionCaptureState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_oc_transition_capture", .fieldtype = "struct TransitionCaptureState *", .offset = offsetof(struct ModifyTableState, mt_oc_transition_capture), .size = sizeof(struct TransitionCaptureState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mt_per_subplan_tupconv_maps", .fieldtype = "struct TupleConversionMap **", .offset = offsetof(struct ModifyTableState, mt_per_subplan_tupconv_maps), .size = sizeof(struct TupleConversionMap **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct AppendState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "appendplans", .fieldtype = "struct PlanState **", .offset = offsetof(struct AppendState, appendplans), .size = sizeof(struct PlanState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_nplans", .fieldtype = "int", .offset = offsetof(struct AppendState, as_nplans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_whichplan", .fieldtype = "int", .offset = offsetof(struct AppendState, as_whichplan), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_first_partial_plan", .fieldtype = "int", .offset = offsetof(struct AppendState, as_first_partial_plan), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_pstate", .fieldtype = "struct ParallelAppendState *", .offset = offsetof(struct AppendState, as_pstate), .size = sizeof(struct ParallelAppendState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pstate_len", .fieldtype = "unsigned long", .offset = offsetof(struct AppendState, pstate_len), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_prune_state", .fieldtype = "struct PartitionPruneState *", .offset = offsetof(struct AppendState, as_prune_state), .size = sizeof(struct PartitionPruneState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "as_valid_subplans", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct AppendState, as_valid_subplans), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "choose_next_subplan", .fieldtype = "_Bool (*)(struct AppendState *)", .offset = offsetof(struct AppendState, choose_next_subplan), .size = sizeof(_Bool (*)(struct AppendState *)), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct MergeAppendState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mergeplans", .fieldtype = "struct PlanState **", .offset = offsetof(struct MergeAppendState, mergeplans), .size = sizeof(struct PlanState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_nplans", .fieldtype = "int", .offset = offsetof(struct MergeAppendState, ms_nplans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_nkeys", .fieldtype = "int", .offset = offsetof(struct MergeAppendState, ms_nkeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_sortkeys", .fieldtype = "struct SortSupportData *", .offset = offsetof(struct MergeAppendState, ms_sortkeys), .size = sizeof(struct SortSupportData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_slots", .fieldtype = "struct TupleTableSlot **", .offset = offsetof(struct MergeAppendState, ms_slots), .size = sizeof(struct TupleTableSlot **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_heap", .fieldtype = "struct binaryheap *", .offset = offsetof(struct MergeAppendState, ms_heap), .size = sizeof(struct binaryheap *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_initialized", .fieldtype = "_Bool", .offset = offsetof(struct MergeAppendState, ms_initialized), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_noopscan", .fieldtype = "_Bool", .offset = offsetof(struct MergeAppendState, ms_noopscan), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_prune_state", .fieldtype = "struct PartitionPruneState *", .offset = offsetof(struct MergeAppendState, ms_prune_state), .size = sizeof(struct PartitionPruneState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ms_valid_subplans", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct MergeAppendState, ms_valid_subplans), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct RecursiveUnionState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "recursing", .fieldtype = "_Bool", .offset = offsetof(struct RecursiveUnionState, recursing), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "intermediate_empty", .fieldtype = "_Bool", .offset = offsetof(struct RecursiveUnionState, intermediate_empty), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "working_table", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct RecursiveUnionState, working_table), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "intermediate_table", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct RecursiveUnionState, intermediate_table), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqfuncoids", .fieldtype = "unsigned int *", .offset = offsetof(struct RecursiveUnionState, eqfuncoids), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "hashfunctions", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct RecursiveUnionState, hashfunctions), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tempContext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct RecursiveUnionState, tempContext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtable", .fieldtype = "struct TupleHashTableData *", .offset = offsetof(struct RecursiveUnionState, hashtable), .size = sizeof(struct TupleHashTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tableContext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct RecursiveUnionState, tableContext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct BitmapAndState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapplans", .fieldtype = "struct PlanState **", .offset = offsetof(struct BitmapAndState, bitmapplans), .size = sizeof(struct PlanState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nplans", .fieldtype = "int", .offset = offsetof(struct BitmapAndState, nplans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct BitmapOrState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapplans", .fieldtype = "struct PlanState **", .offset = offsetof(struct BitmapOrState, bitmapplans), .size = sizeof(struct PlanState **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nplans", .fieldtype = "int", .offset = offsetof(struct BitmapOrState, nplans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct ScanState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss_currentRelation", .fieldtype = "struct RelationData *", .offset = offsetof(struct ScanState, ss_currentRelation), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss_currentScanDesc", .fieldtype = "struct TableScanDescData *", .offset = offsetof(struct ScanState, ss_currentScanDesc), .size = sizeof(struct TableScanDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss_ScanTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct ScanState, ss_ScanTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct SeqScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pscan_len", .fieldtype = "unsigned long", .offset = offsetof(struct SeqScanState, pscan_len), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct SampleScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "args", .fieldtype = "struct List *", .offset = offsetof(struct SampleScanState, args), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "repeatable", .fieldtype = "struct ExprState *", .offset = offsetof(struct SampleScanState, repeatable), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tsmroutine", .fieldtype = "struct TsmRoutine *", .offset = offsetof(struct SampleScanState, tsmroutine), .size = sizeof(struct TsmRoutine *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tsm_state", .fieldtype = "void *", .offset = offsetof(struct SampleScanState, tsm_state), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "use_bulkread", .fieldtype = "_Bool", .offset = offsetof(struct SampleScanState, use_bulkread), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "use_pagemode", .fieldtype = "_Bool", .offset = offsetof(struct SampleScanState, use_pagemode), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "begun", .fieldtype = "_Bool", .offset = offsetof(struct SampleScanState, begun), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "seed", .fieldtype = "unsigned int", .offset = offsetof(struct SampleScanState, seed), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "donetuples", .fieldtype = "long", .offset = offsetof(struct SampleScanState, donetuples), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "haveblock", .fieldtype = "_Bool", .offset = offsetof(struct SampleScanState, haveblock), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "done", .fieldtype = "_Bool", .offset = offsetof(struct SampleScanState, done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct IndexScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqualorig", .fieldtype = "struct ExprState *", .offset = offsetof(struct IndexScanState, indexqualorig), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexorderbyorig", .fieldtype = "struct List *", .offset = offsetof(struct IndexScanState, indexorderbyorig), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_ScanKeys", .fieldtype = "struct ScanKeyData *", .offset = offsetof(struct IndexScanState, iss_ScanKeys), .size = sizeof(struct ScanKeyData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_NumScanKeys", .fieldtype = "int", .offset = offsetof(struct IndexScanState, iss_NumScanKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_OrderByKeys", .fieldtype = "struct ScanKeyData *", .offset = offsetof(struct IndexScanState, iss_OrderByKeys), .size = sizeof(struct ScanKeyData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_NumOrderByKeys", .fieldtype = "int", .offset = offsetof(struct IndexScanState, iss_NumOrderByKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_RuntimeKeys", .fieldtype = "IndexRuntimeKeyInfo *", .offset = offsetof(struct IndexScanState, iss_RuntimeKeys), .size = sizeof(IndexRuntimeKeyInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_NumRuntimeKeys", .fieldtype = "int", .offset = offsetof(struct IndexScanState, iss_NumRuntimeKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_RuntimeKeysReady", .fieldtype = "_Bool", .offset = offsetof(struct IndexScanState, iss_RuntimeKeysReady), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_RuntimeContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct IndexScanState, iss_RuntimeContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_RelationDesc", .fieldtype = "struct RelationData *", .offset = offsetof(struct IndexScanState, iss_RelationDesc), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_ScanDesc", .fieldtype = "struct IndexScanDescData *", .offset = offsetof(struct IndexScanState, iss_ScanDesc), .size = sizeof(struct IndexScanDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_ReorderQueue", .fieldtype = "struct pairingheap *", .offset = offsetof(struct IndexScanState, iss_ReorderQueue), .size = sizeof(struct pairingheap *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_ReachedEnd", .fieldtype = "_Bool", .offset = offsetof(struct IndexScanState, iss_ReachedEnd), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_OrderByValues", .fieldtype = "unsigned long *", .offset = offsetof(struct IndexScanState, iss_OrderByValues), .size = sizeof(unsigned long *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "iss_OrderByNulls", .fieldtype = "_Bool *", .offset = offsetof(struct IndexScanState, iss_OrderByNulls), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_SortSupport", .fieldtype = "struct SortSupportData *", .offset = offsetof(struct IndexScanState, iss_SortSupport), .size = sizeof(struct SortSupportData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_OrderByTypByVals", .fieldtype = "_Bool *", .offset = offsetof(struct IndexScanState, iss_OrderByTypByVals), .size = sizeof(_Bool *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "iss_OrderByTypLens", .fieldtype = "short *", .offset = offsetof(struct IndexScanState, iss_OrderByTypLens), .size = sizeof(short *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "iss_PscanLen", .fieldtype = "unsigned long", .offset = offsetof(struct IndexScanState, iss_PscanLen), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct IndexOnlyScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "indexqual", .fieldtype = "struct ExprState *", .offset = offsetof(struct IndexOnlyScanState, indexqual), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_ScanKeys", .fieldtype = "struct ScanKeyData *", .offset = offsetof(struct IndexOnlyScanState, ioss_ScanKeys), .size = sizeof(struct ScanKeyData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_NumScanKeys", .fieldtype = "int", .offset = offsetof(struct IndexOnlyScanState, ioss_NumScanKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_OrderByKeys", .fieldtype = "struct ScanKeyData *", .offset = offsetof(struct IndexOnlyScanState, ioss_OrderByKeys), .size = sizeof(struct ScanKeyData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_NumOrderByKeys", .fieldtype = "int", .offset = offsetof(struct IndexOnlyScanState, ioss_NumOrderByKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_RuntimeKeys", .fieldtype = "IndexRuntimeKeyInfo *", .offset = offsetof(struct IndexOnlyScanState, ioss_RuntimeKeys), .size = sizeof(IndexRuntimeKeyInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_NumRuntimeKeys", .fieldtype = "int", .offset = offsetof(struct IndexOnlyScanState, ioss_NumRuntimeKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_RuntimeKeysReady", .fieldtype = "_Bool", .offset = offsetof(struct IndexOnlyScanState, ioss_RuntimeKeysReady), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_RuntimeContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct IndexOnlyScanState, ioss_RuntimeContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_RelationDesc", .fieldtype = "struct RelationData *", .offset = offsetof(struct IndexOnlyScanState, ioss_RelationDesc), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_ScanDesc", .fieldtype = "struct IndexScanDescData *", .offset = offsetof(struct IndexOnlyScanState, ioss_ScanDesc), .size = sizeof(struct IndexScanDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_TableSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct IndexOnlyScanState, ioss_TableSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_VMBuffer", .fieldtype = "int", .offset = offsetof(struct IndexOnlyScanState, ioss_VMBuffer), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ioss_PscanLen", .fieldtype = "unsigned long", .offset = offsetof(struct IndexOnlyScanState, ioss_PscanLen), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct BitmapIndexScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_result", .fieldtype = "struct TIDBitmap *", .offset = offsetof(struct BitmapIndexScanState, biss_result), .size = sizeof(struct TIDBitmap *), .flags = TYPE_CAT_POINTER, .node_type_id = 404, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_ScanKeys", .fieldtype = "struct ScanKeyData *", .offset = offsetof(struct BitmapIndexScanState, biss_ScanKeys), .size = sizeof(struct ScanKeyData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_NumScanKeys", .fieldtype = "int", .offset = offsetof(struct BitmapIndexScanState, biss_NumScanKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_RuntimeKeys", .fieldtype = "IndexRuntimeKeyInfo *", .offset = offsetof(struct BitmapIndexScanState, biss_RuntimeKeys), .size = sizeof(IndexRuntimeKeyInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_NumRuntimeKeys", .fieldtype = "int", .offset = offsetof(struct BitmapIndexScanState, biss_NumRuntimeKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_ArrayKeys", .fieldtype = "IndexArrayKeyInfo *", .offset = offsetof(struct BitmapIndexScanState, biss_ArrayKeys), .size = sizeof(IndexArrayKeyInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_NumArrayKeys", .fieldtype = "int", .offset = offsetof(struct BitmapIndexScanState, biss_NumArrayKeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_RuntimeKeysReady", .fieldtype = "_Bool", .offset = offsetof(struct BitmapIndexScanState, biss_RuntimeKeysReady), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_RuntimeContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct BitmapIndexScanState, biss_RuntimeContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_RelationDesc", .fieldtype = "struct RelationData *", .offset = offsetof(struct BitmapIndexScanState, biss_RelationDesc), .size = sizeof(struct RelationData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "biss_ScanDesc", .fieldtype = "struct IndexScanDescData *", .offset = offsetof(struct BitmapIndexScanState, biss_ScanDesc), .size = sizeof(struct IndexScanDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct BitmapHeapScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bitmapqualorig", .fieldtype = "struct ExprState *", .offset = offsetof(struct BitmapHeapScanState, bitmapqualorig), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tbm", .fieldtype = "struct TIDBitmap *", .offset = offsetof(struct BitmapHeapScanState, tbm), .size = sizeof(struct TIDBitmap *), .flags = TYPE_CAT_POINTER, .node_type_id = 404, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tbmiterator", .fieldtype = "struct TBMIterator *", .offset = offsetof(struct BitmapHeapScanState, tbmiterator), .size = sizeof(struct TBMIterator *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tbmres", .fieldtype = "struct TBMIterateResult *", .offset = offsetof(struct BitmapHeapScanState, tbmres), .size = sizeof(struct TBMIterateResult *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "can_skip_fetch", .fieldtype = "_Bool", .offset = offsetof(struct BitmapHeapScanState, can_skip_fetch), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "return_empty_tuples", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, return_empty_tuples), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "vmbuffer", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, vmbuffer), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pvmbuffer", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, pvmbuffer), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exact_pages", .fieldtype = "long", .offset = offsetof(struct BitmapHeapScanState, exact_pages), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lossy_pages", .fieldtype = "long", .offset = offsetof(struct BitmapHeapScanState, lossy_pages), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prefetch_iterator", .fieldtype = "struct TBMIterator *", .offset = offsetof(struct BitmapHeapScanState, prefetch_iterator), .size = sizeof(struct TBMIterator *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prefetch_pages", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, prefetch_pages), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prefetch_target", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, prefetch_target), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "prefetch_maximum", .fieldtype = "int", .offset = offsetof(struct BitmapHeapScanState, prefetch_maximum), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pscan_len", .fieldtype = "unsigned long", .offset = offsetof(struct BitmapHeapScanState, pscan_len), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initialized", .fieldtype = "_Bool", .offset = offsetof(struct BitmapHeapScanState, initialized), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "shared_tbmiterator", .fieldtype = "struct TBMSharedIterator *", .offset = offsetof(struct BitmapHeapScanState, shared_tbmiterator), .size = sizeof(struct TBMSharedIterator *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "shared_prefetch_iterator", .fieldtype = "struct TBMSharedIterator *", .offset = offsetof(struct BitmapHeapScanState, shared_prefetch_iterator), .size = sizeof(struct TBMSharedIterator *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pstate", .fieldtype = "struct ParallelBitmapHeapState *", .offset = offsetof(struct BitmapHeapScanState, pstate), .size = sizeof(struct ParallelBitmapHeapState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct TidScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_tidexprs", .fieldtype = "struct List *", .offset = offsetof(struct TidScanState, tss_tidexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_isCurrentOf", .fieldtype = "_Bool", .offset = offsetof(struct TidScanState, tss_isCurrentOf), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_NumTids", .fieldtype = "int", .offset = offsetof(struct TidScanState, tss_NumTids), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_TidPtr", .fieldtype = "int", .offset = offsetof(struct TidScanState, tss_TidPtr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_TidList", .fieldtype = "struct ItemPointerData *", .offset = offsetof(struct TidScanState, tss_TidList), .size = sizeof(struct ItemPointerData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tss_htup", .fieldtype = "struct HeapTupleData", .offset = offsetof(struct TidScanState, tss_htup), .size = sizeof(struct HeapTupleData), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct SubqueryScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subplan", .fieldtype = "struct PlanState *", .offset = offsetof(struct SubqueryScanState, subplan), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct FunctionScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eflags", .fieldtype = "int", .offset = offsetof(struct FunctionScanState, eflags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordinality", .fieldtype = "_Bool", .offset = offsetof(struct FunctionScanState, ordinality), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "simple", .fieldtype = "_Bool", .offset = offsetof(struct FunctionScanState, simple), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordinal", .fieldtype = "long", .offset = offsetof(struct FunctionScanState, ordinal), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nfuncs", .fieldtype = "int", .offset = offsetof(struct FunctionScanState, nfuncs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcstates", .fieldtype = "struct FunctionScanPerFuncState *", .offset = offsetof(struct FunctionScanState, funcstates), .size = sizeof(struct FunctionScanPerFuncState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "argcontext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct FunctionScanState, argcontext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct ValuesScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct ValuesScanState, rowcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "exprlists", .fieldtype = "struct List **", .offset = offsetof(struct ValuesScanState, exprlists), .size = sizeof(struct List **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "array_len", .fieldtype = "int", .offset = offsetof(struct ValuesScanState, array_len), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curr_idx", .fieldtype = "int", .offset = offsetof(struct ValuesScanState, curr_idx), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct TableFuncScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "docexpr", .fieldtype = "struct ExprState *", .offset = offsetof(struct TableFuncScanState, docexpr), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rowexpr", .fieldtype = "struct ExprState *", .offset = offsetof(struct TableFuncScanState, rowexpr), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "colexprs", .fieldtype = "struct List *", .offset = offsetof(struct TableFuncScanState, colexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "coldefexprs", .fieldtype = "struct List *", .offset = offsetof(struct TableFuncScanState, coldefexprs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ns_names", .fieldtype = "struct List *", .offset = offsetof(struct TableFuncScanState, ns_names), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ns_uris", .fieldtype = "struct List *", .offset = offsetof(struct TableFuncScanState, ns_uris), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "notnulls", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct TableFuncScanState, notnulls), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "opaque", .fieldtype = "void *", .offset = offsetof(struct TableFuncScanState, opaque), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "routine", .fieldtype = "const struct TableFuncRoutine *", .offset = offsetof(struct TableFuncScanState, routine), .size = sizeof(const struct TableFuncRoutine *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "in_functions", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct TableFuncScanState, in_functions), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "typioparams", .fieldtype = "unsigned int *", .offset = offsetof(struct TableFuncScanState, typioparams), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "ordinal", .fieldtype = "long", .offset = offsetof(struct TableFuncScanState, ordinal), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "perTableCxt", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct TableFuncScanState, perTableCxt), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tupstore", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct TableFuncScanState, tupstore), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct CteScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eflags", .fieldtype = "int", .offset = offsetof(struct CteScanState, eflags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "readptr", .fieldtype = "int", .offset = offsetof(struct CteScanState, readptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cteplanstate", .fieldtype = "struct PlanState *", .offset = offsetof(struct CteScanState, cteplanstate), .size = sizeof(struct PlanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "leader", .fieldtype = "struct CteScanState *", .offset = offsetof(struct CteScanState, leader), .size = sizeof(struct CteScanState *), .flags = TYPE_CAT_POINTER, .node_type_id = 79, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "cte_table", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct CteScanState, cte_table), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eof_cte", .fieldtype = "_Bool", .offset = offsetof(struct CteScanState, eof_cte), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct NamedTuplestoreScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "readptr", .fieldtype = "int", .offset = offsetof(struct NamedTuplestoreScanState, readptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tupdesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct NamedTuplestoreScanState, tupdesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "relation", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct NamedTuplestoreScanState, relation), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct WorkTableScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "rustate", .fieldtype = "struct RecursiveUnionState *", .offset = offsetof(struct WorkTableScanState, rustate), .size = sizeof(struct RecursiveUnionState *), .flags = TYPE_CAT_POINTER, .node_type_id = 64, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct ForeignScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_recheck_quals", .fieldtype = "struct ExprState *", .offset = offsetof(struct ForeignScanState, fdw_recheck_quals), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pscan_len", .fieldtype = "unsigned long", .offset = offsetof(struct ForeignScanState, pscan_len), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdwroutine", .fieldtype = "struct FdwRoutine *", .offset = offsetof(struct ForeignScanState, fdwroutine), .size = sizeof(struct FdwRoutine *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "fdw_state", .fieldtype = "void *", .offset = offsetof(struct ForeignScanState, fdw_state), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct CustomScanState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "flags", .fieldtype = "unsigned int", .offset = offsetof(struct CustomScanState, flags), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "custom_ps", .fieldtype = "struct List *", .offset = offsetof(struct CustomScanState, custom_ps), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pscan_len", .fieldtype = "unsigned long", .offset = offsetof(struct CustomScanState, pscan_len), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "methods", .fieldtype = "const struct CustomExecMethods *", .offset = offsetof(struct CustomScanState, methods), .size = sizeof(const struct CustomExecMethods *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct JoinState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "jointype", .fieldtype = "enum JoinType", .offset = offsetof(struct JoinState, jointype), .size = sizeof(enum JoinType), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "single_match", .fieldtype = "_Bool", .offset = offsetof(struct JoinState, single_match), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "joinqual", .fieldtype = "struct ExprState *", .offset = offsetof(struct JoinState, joinqual), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "js", .fieldtype = "struct JoinState", .offset = offsetof(struct NestLoopState, js), .size = sizeof(struct JoinState), .flags = TYPE_CAT_SCALAR, .node_type_id = 84, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nl_NeedNewOuter", .fieldtype = "_Bool", .offset = offsetof(struct NestLoopState, nl_NeedNewOuter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nl_MatchedOuter", .fieldtype = "_Bool", .offset = offsetof(struct NestLoopState, nl_MatchedOuter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nl_NullInnerTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct NestLoopState, nl_NullInnerTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "js", .fieldtype = "struct JoinState", .offset = offsetof(struct MergeJoinState, js), .size = sizeof(struct JoinState), .flags = TYPE_CAT_SCALAR, .node_type_id = 84, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_NumClauses", .fieldtype = "int", .offset = offsetof(struct MergeJoinState, mj_NumClauses), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_Clauses", .fieldtype = "struct MergeJoinClauseData *", .offset = offsetof(struct MergeJoinState, mj_Clauses), .size = sizeof(struct MergeJoinClauseData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_JoinState", .fieldtype = "int", .offset = offsetof(struct MergeJoinState, mj_JoinState), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_SkipMarkRestore", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_SkipMarkRestore), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_ExtraMarks", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_ExtraMarks), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_ConstFalseJoin", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_ConstFalseJoin), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_FillOuter", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_FillOuter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_FillInner", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_FillInner), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_MatchedOuter", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_MatchedOuter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_MatchedInner", .fieldtype = "_Bool", .offset = offsetof(struct MergeJoinState, mj_MatchedInner), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_OuterTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct MergeJoinState, mj_OuterTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_InnerTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct MergeJoinState, mj_InnerTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_MarkedTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct MergeJoinState, mj_MarkedTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_NullOuterTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct MergeJoinState, mj_NullOuterTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_NullInnerTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct MergeJoinState, mj_NullInnerTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_OuterEContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct MergeJoinState, mj_OuterEContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "mj_InnerEContext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct MergeJoinState, mj_InnerEContext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "js", .fieldtype = "struct JoinState", .offset = offsetof(struct HashJoinState, js), .size = sizeof(struct JoinState), .flags = TYPE_CAT_SCALAR, .node_type_id = 84, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashclauses", .fieldtype = "struct ExprState *", .offset = offsetof(struct HashJoinState, hashclauses), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_OuterHashKeys", .fieldtype = "struct List *", .offset = offsetof(struct HashJoinState, hj_OuterHashKeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_HashOperators", .fieldtype = "struct List *", .offset = offsetof(struct HashJoinState, hj_HashOperators), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_Collations", .fieldtype = "struct List *", .offset = offsetof(struct HashJoinState, hj_Collations), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_HashTable", .fieldtype = "struct HashJoinTableData *", .offset = offsetof(struct HashJoinState, hj_HashTable), .size = sizeof(struct HashJoinTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_CurHashValue", .fieldtype = "unsigned int", .offset = offsetof(struct HashJoinState, hj_CurHashValue), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_CurBucketNo", .fieldtype = "int", .offset = offsetof(struct HashJoinState, hj_CurBucketNo), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_CurSkewBucketNo", .fieldtype = "int", .offset = offsetof(struct HashJoinState, hj_CurSkewBucketNo), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_CurTuple", .fieldtype = "struct HashJoinTupleData *", .offset = offsetof(struct HashJoinState, hj_CurTuple), .size = sizeof(struct HashJoinTupleData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_OuterTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct HashJoinState, hj_OuterTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_HashTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct HashJoinState, hj_HashTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_NullOuterTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct HashJoinState, hj_NullOuterTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_NullInnerTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct HashJoinState, hj_NullInnerTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_FirstOuterTupleSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct HashJoinState, hj_FirstOuterTupleSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_JoinState", .fieldtype = "int", .offset = offsetof(struct HashJoinState, hj_JoinState), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_MatchedOuter", .fieldtype = "_Bool", .offset = offsetof(struct HashJoinState, hj_MatchedOuter), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hj_OuterNotEmpty", .fieldtype = "_Bool", .offset = offsetof(struct HashJoinState, hj_OuterNotEmpty), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct MaterialState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eflags", .fieldtype = "int", .offset = offsetof(struct MaterialState, eflags), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eof_underlying", .fieldtype = "_Bool", .offset = offsetof(struct MaterialState, eof_underlying), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuplestorestate", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct MaterialState, tuplestorestate), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct SortState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "randomAccess", .fieldtype = "_Bool", .offset = offsetof(struct SortState, randomAccess), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bounded", .fieldtype = "_Bool", .offset = offsetof(struct SortState, bounded), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bound", .fieldtype = "long", .offset = offsetof(struct SortState, bound), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sort_Done", .fieldtype = "_Bool", .offset = offsetof(struct SortState, sort_Done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bounded_Done", .fieldtype = "_Bool", .offset = offsetof(struct SortState, bounded_Done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "bound_Done", .fieldtype = "long", .offset = offsetof(struct SortState, bound_Done), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuplesortstate", .fieldtype = "void *", .offset = offsetof(struct SortState, tuplesortstate), .size = sizeof(void *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "am_worker", .fieldtype = "_Bool", .offset = offsetof(struct SortState, am_worker), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "shared_info", .fieldtype = "struct SharedSortInfo *", .offset = offsetof(struct SortState, shared_info), .size = sizeof(struct SharedSortInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct GroupState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqfunction", .fieldtype = "struct ExprState *", .offset = offsetof(struct GroupState, eqfunction), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grp_done", .fieldtype = "_Bool", .offset = offsetof(struct GroupState, grp_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct AggState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggs", .fieldtype = "struct List *", .offset = offsetof(struct AggState, aggs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numaggs", .fieldtype = "int", .offset = offsetof(struct AggState, numaggs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numtrans", .fieldtype = "int", .offset = offsetof(struct AggState, numtrans), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggstrategy", .fieldtype = "enum AggStrategy", .offset = offsetof(struct AggState, aggstrategy), .size = sizeof(enum AggStrategy), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggsplit", .fieldtype = "enum AggSplit", .offset = offsetof(struct AggState, aggsplit), .size = sizeof(enum AggSplit), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phase", .fieldtype = "struct AggStatePerPhaseData *", .offset = offsetof(struct AggState, phase), .size = sizeof(struct AggStatePerPhaseData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numphases", .fieldtype = "int", .offset = offsetof(struct AggState, numphases), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "current_phase", .fieldtype = "int", .offset = offsetof(struct AggState, current_phase), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "peragg", .fieldtype = "struct AggStatePerAggData *", .offset = offsetof(struct AggState, peragg), .size = sizeof(struct AggStatePerAggData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pertrans", .fieldtype = "struct AggStatePerTransData *", .offset = offsetof(struct AggState, pertrans), .size = sizeof(struct AggStatePerTransData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct AggState, hashcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggcontexts", .fieldtype = "struct ExprContext **", .offset = offsetof(struct AggState, aggcontexts), .size = sizeof(struct ExprContext **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tmpcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct AggState, tmpcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curaggcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct AggState, curaggcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curperagg", .fieldtype = "struct AggStatePerAggData *", .offset = offsetof(struct AggState, curperagg), .size = sizeof(struct AggStatePerAggData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curpertrans", .fieldtype = "struct AggStatePerTransData *", .offset = offsetof(struct AggState, curpertrans), .size = sizeof(struct AggStatePerTransData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "input_done", .fieldtype = "_Bool", .offset = offsetof(struct AggState, input_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_done", .fieldtype = "_Bool", .offset = offsetof(struct AggState, agg_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "projected_set", .fieldtype = "int", .offset = offsetof(struct AggState, projected_set), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "current_set", .fieldtype = "int", .offset = offsetof(struct AggState, current_set), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grouped_cols", .fieldtype = "struct Bitmapset *", .offset = offsetof(struct AggState, grouped_cols), .size = sizeof(struct Bitmapset *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_BITMAPSET},
+	{.fieldname = "all_grouped_cols", .fieldtype = "struct List *", .offset = offsetof(struct AggState, all_grouped_cols), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "maxsets", .fieldtype = "int", .offset = offsetof(struct AggState, maxsets), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "phases", .fieldtype = "struct AggStatePerPhaseData *", .offset = offsetof(struct AggState, phases), .size = sizeof(struct AggStatePerPhaseData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sort_in", .fieldtype = "struct Tuplesortstate *", .offset = offsetof(struct AggState, sort_in), .size = sizeof(struct Tuplesortstate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sort_out", .fieldtype = "struct Tuplesortstate *", .offset = offsetof(struct AggState, sort_out), .size = sizeof(struct Tuplesortstate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "sort_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct AggState, sort_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pergroups", .fieldtype = "struct AggStatePerGroupData **", .offset = offsetof(struct AggState, pergroups), .size = sizeof(struct AggStatePerGroupData **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grp_firstTuple", .fieldtype = "struct HeapTupleData *", .offset = offsetof(struct AggState, grp_firstTuple), .size = sizeof(struct HeapTupleData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "table_filled", .fieldtype = "_Bool", .offset = offsetof(struct AggState, table_filled), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "num_hashes", .fieldtype = "int", .offset = offsetof(struct AggState, num_hashes), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "perhash", .fieldtype = "struct AggStatePerHashData *", .offset = offsetof(struct AggState, perhash), .size = sizeof(struct AggStatePerHashData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hash_pergroup", .fieldtype = "struct AggStatePerGroupData **", .offset = offsetof(struct AggState, hash_pergroup), .size = sizeof(struct AggStatePerGroupData **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all_pergroups", .fieldtype = "struct AggStatePerGroupData **", .offset = offsetof(struct AggState, all_pergroups), .size = sizeof(struct AggStatePerGroupData **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "combinedproj", .fieldtype = "struct ProjectionInfo *", .offset = offsetof(struct AggState, combinedproj), .size = sizeof(struct ProjectionInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = 3, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ss", .fieldtype = "struct ScanState", .offset = offsetof(struct WindowAggState, ss), .size = sizeof(struct ScanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 67, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funcs", .fieldtype = "struct List *", .offset = offsetof(struct WindowAggState, funcs), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numfuncs", .fieldtype = "int", .offset = offsetof(struct WindowAggState, numfuncs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numaggs", .fieldtype = "int", .offset = offsetof(struct WindowAggState, numaggs), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "perfunc", .fieldtype = "struct WindowStatePerFuncData *", .offset = offsetof(struct WindowAggState, perfunc), .size = sizeof(struct WindowStatePerFuncData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "peragg", .fieldtype = "struct WindowStatePerAggData *", .offset = offsetof(struct WindowAggState, peragg), .size = sizeof(struct WindowStatePerAggData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partEqfunction", .fieldtype = "struct ExprState *", .offset = offsetof(struct WindowAggState, partEqfunction), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ordEqfunction", .fieldtype = "struct ExprState *", .offset = offsetof(struct WindowAggState, ordEqfunction), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "buffer", .fieldtype = "struct Tuplestorestate *", .offset = offsetof(struct WindowAggState, buffer), .size = sizeof(struct Tuplestorestate *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "current_ptr", .fieldtype = "int", .offset = offsetof(struct WindowAggState, current_ptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "framehead_ptr", .fieldtype = "int", .offset = offsetof(struct WindowAggState, framehead_ptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frametail_ptr", .fieldtype = "int", .offset = offsetof(struct WindowAggState, frametail_ptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grouptail_ptr", .fieldtype = "int", .offset = offsetof(struct WindowAggState, grouptail_ptr), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "spooled_rows", .fieldtype = "long", .offset = offsetof(struct WindowAggState, spooled_rows), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "currentpos", .fieldtype = "long", .offset = offsetof(struct WindowAggState, currentpos), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frameheadpos", .fieldtype = "long", .offset = offsetof(struct WindowAggState, frameheadpos), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frametailpos", .fieldtype = "long", .offset = offsetof(struct WindowAggState, frametailpos), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_winobj", .fieldtype = "struct WindowObjectData *", .offset = offsetof(struct WindowAggState, agg_winobj), .size = sizeof(struct WindowObjectData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggregatedbase", .fieldtype = "long", .offset = offsetof(struct WindowAggState, aggregatedbase), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggregatedupto", .fieldtype = "long", .offset = offsetof(struct WindowAggState, aggregatedupto), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frameOptions", .fieldtype = "int", .offset = offsetof(struct WindowAggState, frameOptions), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startOffset", .fieldtype = "struct ExprState *", .offset = offsetof(struct WindowAggState, startOffset), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "endOffset", .fieldtype = "struct ExprState *", .offset = offsetof(struct WindowAggState, endOffset), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startOffsetValue", .fieldtype = "unsigned long", .offset = offsetof(struct WindowAggState, startOffsetValue), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "endOffsetValue", .fieldtype = "unsigned long", .offset = offsetof(struct WindowAggState, endOffsetValue), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startInRangeFunc", .fieldtype = "struct FmgrInfo", .offset = offsetof(struct WindowAggState, startInRangeFunc), .size = sizeof(struct FmgrInfo), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "endInRangeFunc", .fieldtype = "struct FmgrInfo", .offset = offsetof(struct WindowAggState, endInRangeFunc), .size = sizeof(struct FmgrInfo), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeColl", .fieldtype = "unsigned int", .offset = offsetof(struct WindowAggState, inRangeColl), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeAsc", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, inRangeAsc), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "inRangeNullsFirst", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, inRangeNullsFirst), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "currentgroup", .fieldtype = "long", .offset = offsetof(struct WindowAggState, currentgroup), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frameheadgroup", .fieldtype = "long", .offset = offsetof(struct WindowAggState, frameheadgroup), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frametailgroup", .fieldtype = "long", .offset = offsetof(struct WindowAggState, frametailgroup), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "groupheadpos", .fieldtype = "long", .offset = offsetof(struct WindowAggState, groupheadpos), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grouptailpos", .fieldtype = "long", .offset = offsetof(struct WindowAggState, grouptailpos), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partcontext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct WindowAggState, partcontext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "aggcontext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct WindowAggState, aggcontext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "curaggcontext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct WindowAggState, curaggcontext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tmpcontext", .fieldtype = "struct ExprContext *", .offset = offsetof(struct WindowAggState, tmpcontext), .size = sizeof(struct ExprContext *), .flags = TYPE_CAT_POINTER, .node_type_id = 2, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all_first", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, all_first), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "all_done", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, all_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "partition_spooled", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, partition_spooled), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "more_partitions", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, more_partitions), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "framehead_valid", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, framehead_valid), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frametail_valid", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, frametail_valid), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grouptail_valid", .fieldtype = "_Bool", .offset = offsetof(struct WindowAggState, grouptail_valid), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "first_part_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, first_part_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "framehead_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, framehead_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "frametail_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, frametail_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "agg_row_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, agg_row_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "temp_slot_1", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, temp_slot_1), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "temp_slot_2", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct WindowAggState, temp_slot_2), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct UniqueState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqfunction", .fieldtype = "struct ExprState *", .offset = offsetof(struct UniqueState, eqfunction), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct GatherState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initialized", .fieldtype = "_Bool", .offset = offsetof(struct GatherState, initialized), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "need_to_scan_locally", .fieldtype = "_Bool", .offset = offsetof(struct GatherState, need_to_scan_locally), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuples_needed", .fieldtype = "long", .offset = offsetof(struct GatherState, tuples_needed), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "funnel_slot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct GatherState, funnel_slot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pei", .fieldtype = "struct ParallelExecutorInfo *", .offset = offsetof(struct GatherState, pei), .size = sizeof(struct ParallelExecutorInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nworkers_launched", .fieldtype = "int", .offset = offsetof(struct GatherState, nworkers_launched), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nreaders", .fieldtype = "int", .offset = offsetof(struct GatherState, nreaders), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nextreader", .fieldtype = "int", .offset = offsetof(struct GatherState, nextreader), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reader", .fieldtype = "struct TupleQueueReader **", .offset = offsetof(struct GatherState, reader), .size = sizeof(struct TupleQueueReader **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct GatherMergeState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "initialized", .fieldtype = "_Bool", .offset = offsetof(struct GatherMergeState, initialized), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_initialized", .fieldtype = "_Bool", .offset = offsetof(struct GatherMergeState, gm_initialized), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "need_to_scan_locally", .fieldtype = "_Bool", .offset = offsetof(struct GatherMergeState, need_to_scan_locally), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tuples_needed", .fieldtype = "long", .offset = offsetof(struct GatherMergeState, tuples_needed), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tupDesc", .fieldtype = "struct TupleDescData *", .offset = offsetof(struct GatherMergeState, tupDesc), .size = sizeof(struct TupleDescData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_nkeys", .fieldtype = "int", .offset = offsetof(struct GatherMergeState, gm_nkeys), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_sortkeys", .fieldtype = "struct SortSupportData *", .offset = offsetof(struct GatherMergeState, gm_sortkeys), .size = sizeof(struct SortSupportData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pei", .fieldtype = "struct ParallelExecutorInfo *", .offset = offsetof(struct GatherMergeState, pei), .size = sizeof(struct ParallelExecutorInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nworkers_launched", .fieldtype = "int", .offset = offsetof(struct GatherMergeState, nworkers_launched), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "nreaders", .fieldtype = "int", .offset = offsetof(struct GatherMergeState, nreaders), .size = sizeof(int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_slots", .fieldtype = "struct TupleTableSlot **", .offset = offsetof(struct GatherMergeState, gm_slots), .size = sizeof(struct TupleTableSlot **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "reader", .fieldtype = "struct TupleQueueReader **", .offset = offsetof(struct GatherMergeState, reader), .size = sizeof(struct TupleQueueReader **), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_tuple_buffers", .fieldtype = "struct GMReaderTupleBuffer *", .offset = offsetof(struct GatherMergeState, gm_tuple_buffers), .size = sizeof(struct GMReaderTupleBuffer *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "gm_heap", .fieldtype = "struct binaryheap *", .offset = offsetof(struct GatherMergeState, gm_heap), .size = sizeof(struct binaryheap *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct HashState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtable", .fieldtype = "struct HashJoinTableData *", .offset = offsetof(struct HashState, hashtable), .size = sizeof(struct HashJoinTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashkeys", .fieldtype = "struct List *", .offset = offsetof(struct HashState, hashkeys), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "shared_info", .fieldtype = "struct SharedHashInfo *", .offset = offsetof(struct HashState, shared_info), .size = sizeof(struct SharedHashInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hinstrument", .fieldtype = "struct HashInstrumentation *", .offset = offsetof(struct HashState, hinstrument), .size = sizeof(struct HashInstrumentation *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "parallel_state", .fieldtype = "struct ParallelHashJoinState *", .offset = offsetof(struct HashState, parallel_state), .size = sizeof(struct ParallelHashJoinState *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct SetOpState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqfunction", .fieldtype = "struct ExprState *", .offset = offsetof(struct SetOpState, eqfunction), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "eqfuncoids", .fieldtype = "unsigned int *", .offset = offsetof(struct SetOpState, eqfuncoids), .size = sizeof(unsigned int *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_INT},
+	{.fieldname = "hashfunctions", .fieldtype = "struct FmgrInfo *", .offset = offsetof(struct SetOpState, hashfunctions), .size = sizeof(struct FmgrInfo *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "setop_done", .fieldtype = "_Bool", .offset = offsetof(struct SetOpState, setop_done), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "numOutput", .fieldtype = "long", .offset = offsetof(struct SetOpState, numOutput), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "pergroup", .fieldtype = "struct SetOpStatePerGroupData *", .offset = offsetof(struct SetOpState, pergroup), .size = sizeof(struct SetOpStatePerGroupData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "grp_firstTuple", .fieldtype = "struct HeapTupleData *", .offset = offsetof(struct SetOpState, grp_firstTuple), .size = sizeof(struct HeapTupleData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashtable", .fieldtype = "struct TupleHashTableData *", .offset = offsetof(struct SetOpState, hashtable), .size = sizeof(struct TupleHashTableData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "tableContext", .fieldtype = "struct MemoryContextData *", .offset = offsetof(struct SetOpState, tableContext), .size = sizeof(struct MemoryContextData *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "table_filled", .fieldtype = "_Bool", .offset = offsetof(struct SetOpState, table_filled), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "hashiter", .fieldtype = "struct tuplehash_iterator", .offset = offsetof(struct SetOpState, hashiter), .size = sizeof(struct tuplehash_iterator), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct LockRowsState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lr_arowMarks", .fieldtype = "struct List *", .offset = offsetof(struct LockRowsState, lr_arowMarks), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lr_epqstate", .fieldtype = "struct EPQState", .offset = offsetof(struct LockRowsState, lr_epqstate), .size = sizeof(struct EPQState), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "ps", .fieldtype = "struct PlanState", .offset = offsetof(struct LimitState, ps), .size = sizeof(struct PlanState), .flags = TYPE_CAT_SCALAR, .node_type_id = 58, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitOffset", .fieldtype = "struct ExprState *", .offset = offsetof(struct LimitState, limitOffset), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "limitCount", .fieldtype = "struct ExprState *", .offset = offsetof(struct LimitState, limitCount), .size = sizeof(struct ExprState *), .flags = TYPE_CAT_POINTER, .node_type_id = 152, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "offset", .fieldtype = "long", .offset = offsetof(struct LimitState, offset), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "count", .fieldtype = "long", .offset = offsetof(struct LimitState, count), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "noCount", .fieldtype = "_Bool", .offset = offsetof(struct LimitState, noCount), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "lstate", .fieldtype = "LimitStateCond", .offset = offsetof(struct LimitState, lstate), .size = sizeof(LimitStateCond), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "position", .fieldtype = "long", .offset = offsetof(struct LimitState, position), .size = sizeof(long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "subSlot", .fieldtype = "struct TupleTableSlot *", .offset = offsetof(struct LimitState, subSlot), .size = sizeof(struct TupleTableSlot *), .flags = TYPE_CAT_POINTER, .node_type_id = 8, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct ExtensibleNode, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "extnodename", .fieldtype = "const char *", .offset = offsetof(struct ExtensibleNode, extnodename), .size = sizeof(const char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct IdentifySystemCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct BaseBackupCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct BaseBackupCmd, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct CreateReplicationSlotCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "slotname", .fieldtype = "char *", .offset = offsetof(struct CreateReplicationSlotCmd, slotname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "kind", .fieldtype = "enum ReplicationKind", .offset = offsetof(struct CreateReplicationSlotCmd, kind), .size = sizeof(enum ReplicationKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "plugin", .fieldtype = "char *", .offset = offsetof(struct CreateReplicationSlotCmd, plugin), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "temporary", .fieldtype = "_Bool", .offset = offsetof(struct CreateReplicationSlotCmd, temporary), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct CreateReplicationSlotCmd, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct DropReplicationSlotCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "slotname", .fieldtype = "char *", .offset = offsetof(struct DropReplicationSlotCmd, slotname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "wait", .fieldtype = "_Bool", .offset = offsetof(struct DropReplicationSlotCmd, wait), .size = sizeof(_Bool), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct StartReplicationCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "kind", .fieldtype = "enum ReplicationKind", .offset = offsetof(struct StartReplicationCmd, kind), .size = sizeof(enum ReplicationKind), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "slotname", .fieldtype = "char *", .offset = offsetof(struct StartReplicationCmd, slotname), .size = sizeof(char *), .flags = TYPE_CAT_POINTER, .node_type_id = -1, .known_type_id = KNOWN_TYPE_STRING},
+	{.fieldname = "timeline", .fieldtype = "unsigned int", .offset = offsetof(struct StartReplicationCmd, timeline), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "startpoint", .fieldtype = "unsigned long", .offset = offsetof(struct StartReplicationCmd, startpoint), .size = sizeof(unsigned long), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "options", .fieldtype = "struct List *", .offset = offsetof(struct StartReplicationCmd, options), .size = sizeof(struct List *), .flags = TYPE_CAT_POINTER, .node_type_id = 223, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct TimeLineHistoryCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "timeline", .fieldtype = "unsigned int", .offset = offsetof(struct TimeLineHistoryCmd, timeline), .size = sizeof(unsigned int), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN},
+	{.fieldname = "type", .fieldtype = "enum NodeTag", .offset = offsetof(struct SQLCmd, type), .size = sizeof(enum NodeTag), .flags = TYPE_CAT_SCALAR, .node_type_id = -1, .known_type_id = KNOWN_TYPE_UNKNOWN}
+};
+
diff --git i/src/include/nodes/nodes.h w/src/include/nodes/nodes.h
index 3cbb08df92a..0dc6e09d18f 100644
--- i/src/include/nodes/nodes.h
+++ w/src/include/nodes/nodes.h
@@ -605,6 +605,10 @@ castNodeImpl(NodeTag type, void *ptr)
 struct Bitmapset;				/* not to include bitmapset.h here */
 struct StringInfoData;			/* not to include stringinfo.h here */
 
+struct NodeStat;
+extern struct NodeStat measure_node_size(Node *node);
+extern void log_node_size(const char *context, Node *node);
+
 extern void outNode(struct StringInfoData *str, const void *obj);
 extern void outToken(struct StringInfoData *str, const char *s);
 extern void outBitmapset(struct StringInfoData *str,
diff --git i/src/include/nodes/pg_list.h w/src/include/nodes/pg_list.h
index 409d840e793..666e20bdded 100644
--- i/src/include/nodes/pg_list.h
+++ w/src/include/nodes/pg_list.h
@@ -58,6 +58,9 @@ typedef struct List
 	/* If elements == initial_elements, it's not a separate allocation */
 } List;
 
+typedef List OidList;
+typedef List IntList;
+
 /*
  * The *only* valid representation of an empty list is NIL; in other
  * words, a non-NIL list is guaranteed to have length >= 1.
diff --git i/src/include/nodes/value.h w/src/include/nodes/value.h
index 871ffa8fa9f..d2d79795877 100644
--- i/src/include/nodes/value.h
+++ w/src/include/nodes/value.h
@@ -49,6 +49,12 @@ typedef struct Value
 	}			val;
 } Value;
 
+typedef Value Integer;
+typedef Value Float;
+typedef Value String;
+typedef Value BitString;
+typedef Value Null;
+
 #define intVal(v)		(((Value *)(v))->val.ival)
 #define floatVal(v)		atof(((Value *)(v))->val.str)
 #define strVal(v)		(((Value *)(v))->val.str)
#2Fabien COELHO
coelho@cri.ensmp.fr
In reply to: Andres Freund (#1)
Re: WIP: Generic functions for Node types using generated metadata

Hello Andres,

Just my 0.02 €:

There's been a lot of complaints over the years about how annoying it is
to keep the out/read/copy/equalfuncs.c functions in sync with the actual
underlying structs.

There've been various calls for automating their generation, but no
actual patches that I am aware of.

I started something a while back, AFAICR after spending stupid time
looking for a stupid missing field copy or whatever. I wrote a (simple)
perl script deriving all (most) node utility functions for the header
files.

I gave up as the idea did not gather much momentum from committers, so I
assumed the effort would be rejected in the end. AFAICR the feedback
spirit was something like "node definition do not change often, we can
manage it by hand".

There also recently has been discussion about generating more efficient
memory layout for node trees that we know are read only (e.g. plan trees
inside the plancache), and about copying such trees more efficiently
(e.g. by having one big allocation, and then just adjusting pointers).

If pointers are relative to the start, it could be just indexes that do
not need much adjusting.

One way to approach this problem would be to to parse the type
definitions, and directly generate code for the various functions. But
that does mean that such a code-generator needs to be expanded for each
such functions.

No big deal for the effort I made. The issue was more dealing with
exceptions (eg "we do not serialize this field because it is not used for
some reason") and understanding some implicit assumptions in the struct
declarations.

An alternative approach is to have a parser of the node definitions that
doesn't generate code directly, but instead generates metadata. And then
use that metadata to write node aware functions. This seems more
promising to me.

Hmmm. The approach we had in an (old) research project was to write the
meta data, and derive all struct & utility functions from these. It is
simpler this way because you save parsing some C, and it can be made
language agnostic (i.e. serializing the data structure from a language and
reading its value from another).

I'm fairly sure this metadata can also be used to write the other
currently existing node functions.

Beware of strange exceptions…

With regards to using libclang for the parsing: I chose that because it
seemed the easiest to experiment with, compared to annotating all the
structs with enough metadata to be able to easily parse them from a perl
script.

I did not find this an issue when I tried, because the annotation needed
is basically the type name of the field.

The node definitions are after all distributed over quite a few headers.

Yep.

I think it might even be the correct way forward, over inventing our own
mini-languages and writing ad-hoc parsers for those. It sure is easier
to understand plain C code, compared to having to understand various
embeded mini-languages consisting out of macros.

Dunno.

The obvious drawback is that it'd require more people to install
libclang - a significant imposition.

Indeed. A perl-only dependence would be much simpler that relying on a
particular library from a particular compiler to compile postgres,
possibly with an unrelated compiler.

Alternatively we could annotate the code enough to be able to write our
own parser, or use some other C parser.

If you can dictate some conventions, eg one line/one field, simple perl
regexpr would work well I think, you would not need a parser per se.

I don't really want to invest significantly more time into this without
first debating the general idea.

That what I did, and I quitted quickly:-)

On the general idea, I'm 100% convinced that stupid utility functions
should be either generic or generated, not maintained by hand.

--
Fabien.

#3Fabien COELHO
coelho@cri.ensmp.fr
In reply to: Fabien COELHO (#2)
Re: WIP: Generic functions for Node types using generated metadata

Hallo Andres,

There've been various calls for automating their generation, but no
actual patches that I am aware of.

I started something a while back

I have found this thread:

/messages/by-id/E1cq93r-0004ey-Mp@gemulon.postgresql.org

It seems that comments from committers discouraged me to go on… :-) For
instance Robert wanted a "checker", which is basically harder than a
generator because you have to parse both sides and then compare.

Basically there was no consensus at the time (March 2017), so I gave up.
It seems that I even distroyed the branch I was working on, so the no
doubt magnificent perl script I wrote is also lost.

--
Fabien.

#4Andres Freund
andres@anarazel.de
In reply to: Andres Freund (#1)
12 attachment(s)
Re: WIP: Generic functions for Node types using generated metadata

Hi,

On 2019-08-28 16:41:36 -0700, Andres Freund wrote:

There's been a lot of complaints over the years about how annoying it is
to keep the out/read/copy/equalfuncs.c functions in sync with the actual
underlying structs.

There've been various calls for automating their generation, but no
actual patches that I am aware of.

There also recently has been discussion about generating more efficient
memory layout for node trees that we know are read only (e.g. plan trees
inside the plancache), and about copying such trees more efficiently
(e.g. by having one big allocation, and then just adjusting pointers).

One way to approach this problem would be to to parse the type
definitions, and directly generate code for the various functions. But
that does mean that such a code-generator needs to be expanded for each
such functions.

An alternative approach is to have a parser of the node definitions that
doesn't generate code directly, but instead generates metadata. And then
use that metadata to write node aware functions. This seems more
promising to me.

In the attached, *very experimental WIP*, patch I've played around with
this approach. I have written a small C program that uses libclang
(more on that later) to parse relevant headers, and generate metadata
about node types.

[more detailed explanation of the approach]

Attached is a patchset that implements this approach. At the end the patchset
entirely replaces
src/backend/nodes/{copyfuncs.c,equalfuncs.c,outfuncs.c,readfuncs.c, read.c}
with relatively generic code using the metadata mentioned above.

To show how nice this is, here's the diffstat for the most relevant
commits in the series:

1) WIP: Introduce compile-time node type metadata collection & reimplement node funcs.
18 files changed, 3192 insertions(+), 30 deletions(-)

2) WIP: Add generated node metadata.
1 file changed, 7279 insertions(+)

3) WIP: Remove manually maintained out/read/copy/equalfuncs code.
11 files changed, 49 insertions(+), 17277 deletions(-)

Even including the full auto-generated metadata, it's still a quite
substantial win.

Using that metadata one can do stuff that wasn't feasible before. As an
example, the last patch in the series implements a version of
copyObject() (badly named copyObjectRo()) that copies an object into a
single allocation. That's quite worthwhile memory-usage wise:

PREPARE foo AS SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, pg_catalog.array_to_string(c.reloptions || array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', '), c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid) LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid) WHERE c.oid = '1259';
EXECUTE foo ;

With single-allocation:
CachedPlan: 24504 total in 2 blocks; 664 free (0 chunks); 23840 used
Grand total: 24504 bytes in 2 blocks; 664 free (0 chunks); 23840 used

Default:
CachedPlan: 65536 total in 7 blocks; 16016 free (0 chunks); 49520 used
Grand total: 65536 bytes in 7 blocks; 16016 free (0 chunks); 49520 used

And with a bit more elbow grease we could expand that logic so that
copyObject from such a "block allocated" node tree would already know
how much memory to allocate, memcpy() the source over to the target, and
just adjust the pointer offsets.

We could also use this to have a version of IsA() that supported our
form of inheritance. In a quick hack I wrote a function that computes a
per-node-type bitmap indicating whether other nodetypes are subtypes of
that node. While there's still a bug (it doesn't correctly handle node
types that are just typedefed to each other), it already allows to
produce:
type T_JoinState has 3 subtypes
child: T_NestLoopState
child: T_MergeJoinState
child: T_HashJoinState
type T_Expr has 44 subtypes
child: T_Var
child: T_Const
child: T_Param
child: T_Aggref
child: T_GroupingFunc
child: T_WindowFunc
child: T_SubscriptingRef
child: T_FuncExpr
child: T_NamedArgExpr

It seems quite useful to be able to assert such relationsship.

I *suspect* that it'll be quite OK performancewise, compared to bespoke
code, but I have *NOT* measured that.

I now have. When testing with COPY_PARSE_PLAN_TREES,
WRITE_READ_PARSE_PLAN_TREES the "generic" code is a bit slower, but not
much (< %5).

To some degree that's possibly inherent, but I think the bigger issue
right now is that the new code does more appendStringInfo() calls,
because it outputs the field name separately. Also, the slightly
expanded node format adds a few more tokens, which needs to be parsed
(pg_strtok (or rather its replacement) is the slowest bit.

I think with a bit of optimization we can get that back, and the
facilities allow us to make much bigger wins. So I think this is quite
good.

With regards to using libclang for the parsing: I chose that because it
seemed the easiest to experiment with, compared to annotating all the
structs with enough metadata to be able to easily parse them from a perl
script. The node definitions are after all distributed over quite a few
headers.

I think it might even be the correct way forward, over inventing our own
mini-languages and writing ad-hoc parsers for those. It sure is easier
to understand plain C code, compared to having to understand various
embeded mini-languages consisting out of macros.

The obvious drawback is that it'd require more people to install
libclang - a significant imposition. I think it might be OK if we only
required it to be installed when changing node types (although it's not
necessarily trivial how to detect that node types haven't changed, if we
wanted to allow other code changes in the relevant headers), and stored
the generated code in the repository.

Alternatively we could annotate the code enough to be able to write our
own parser, or use some other C parser.

Still using libclang. The .c file containing the metadata is now part of
the source tree (i.e. would be checked in), and would only need to be
regenerated when one of the relevant headers change (but obviously such
a change could be unimportant).

The one set of fields this currently can not deal with is the various
arrays that we directly reference from nodes. For e.g.

typedef struct Sort
{
Plan plan;
int numCols; /* number of sort-key columns */
AttrNumber *sortColIdx; /* their indexes in the target list */
Oid *sortOperators; /* OIDs of operators to sort them by */
Oid *collations; /* OIDs of collations */
bool *nullsFirst; /* NULLS FIRST/LAST directions */
} Sort;

the generic code has no way of knowing that sortColIdx, sortOperators,
collations, nullsFirst are all numCols long arrays.

I can see various ways of dealing with that:

1) We could convert them all to lists, now that we have fast arbitrary
access. But that'd add a lot of indirection / separate allocations.

2) We could add annotations to the sourcecode, to declare that
association. That's probably not trivial, but wouldn't be that hard -
one disadvantage is that we probably couldn't use that declaration
for automated asserts etc.

3) We could introduce a few macros to create array type that include the
length of the members. That'd duplicate the lenght for each of those
arrays, but I have a bit of a hard time believing that that's a
meaningful enough overhead.

I'm thinking of a macro that'd be used like
ARRAY_FIELD(AttrNumber) *sortColIdx;
that'd generate code like
struct
{
size_t nmembers;
AttrNumber members[FLEXIBLE_ARRAY_MEMBER];
} *sortColIdx;

plus a set of macros (or perhaps inline functions + macros) to access
them.

I've implemented 3), which seems to work well. But it's a fair bit of
macro magic.

Basically, one can define a type to be array supported, by once using
PGARR_DEFINE_TYPE(element_type); which defines a struct type that has a
members array of type element_type. After that variables of the array
type can be defined using PGARR(element_type) (as members in a struct,
variables, ...).

Macros like pgarr_size(arr), pgarr_empty(arr), pgarr_at(arr, at) can be
used to query (and in the last case also modify) the array.

pgarr_append(element_type, arr, newel) can be used to append to the
array. Unfortunately I haven't figured out a satisfying a way to write
pgarr_append() without specifying the element_type. Either there's
multiple-evaluation of any of the types (for checking whether the
capacity needs to be increased), only `newel`s that can have their
address taken are supported (so it can be passed to a helper function),
or compiler specific magic has to be used (__typeof__ solves this
nicely).

The array can be allocated (using pgarr_alloc_ro(type, capacity)) so
that a certain number of elements fit inline.

Boring stuff aside, there's a few more parts of the patchseries:

1) Move int->string routines to src/common, and expand.

The current pg_*toa routines are quite incomplete (no unsigned
support), are terribly named, and require unnecessary strlen() calls
to recompute the length of the number, even though the routines
already know them.

Fix all of that, and move to src/common/string.c for good measure.

2) WIP: Move stringinfo to common/

The metadata collection program needed a string buffer. PQExpBuffer
is weird, and has less functionality.

3) WIP: Improve and expand stringinfo.[ch].

Expands the set of functions exposed, to allow appending various
numeric types etc. Also improve efficiency by moving code to inline
functions - that's beneficial because the size is often known, which
can make the copy faster.

The code is also available at
https://github.com/anarazel/postgres/tree/header
https://git.postgresql.org/gitweb/?p=users/andresfreund/postgres.git;a=summary
(in the header branch).

While working on this I evolved the node string format a bit:

1) Node types start with the their "normal" name, rather than
uppercase. There seems little point in having such a divergence.

2) The node type is followed by the node-type id. That allows to more
quickly locate the corresponding node metadata (array and one name
recheck, rather than a binary search). I.e. the node starts with
"{Scan 18 " rather than "{SCAN " as before.

3) Nodes that contain other nodes as sub-types "inline", still emit {}
for the subtype. There's no functional need for this, but I found the
output otherwise much harder to read. E.g. for mergejoin we'd have
something like

{MergeJoin 37 :join {Join 35 :plan {Plan ...} :jointype JOIN_INNER ...} :skip_mark_restore true ...}

4) As seen in the above example, enums are decoded to their string
values. I found that makes the output easier to read. Again, not
functionally required.

5) Value nodes aren't emitted without a {Value ...} anymore. I changed
this when I expanded the WRITE/READ tests, and encountered failures
because the old encoding is not entirely rountrip safe
(e.g. -INT32_MIN will be parsed as a float at raw parse time, but
after write/read, it'll be parsed as an integer). While that could be
fixed in other ways (e.g. by emitting a trailing . for all floats), I
also found it to be clearer this way - Value nodes are otherwise
undistinguishable from raw strings, raw numbers etc, which is not
great.

It'd also be easier to now just change the node format to something else.

Comments?

Todo / Questions:
- lots of cleanup
- better error checking when looking up node definitions
- better dealing with node types that are just typedef'ed to another type
- don't use full tokenizer in all places, too expensive

Greetings,

Andres Freund

Attachments:

v2-0001-FIX-ExprState.tag-to-actually-just-be-a-tag.patch.gzapplication/x-patch-gzipDownload
v2-0002-Introduce-separate-type-for-location-information.patch.gzapplication/x-patch-gzipDownload
v2-0003-WIP-Introduce-strongly-typed-array-type.patch.gzapplication/x-patch-gzipDownload
v2-0004-Move-int-string-routines-to-src-common-and-expand.patch.gzapplication/x-patch-gzipDownload
v2-0005-WIP-Move-stringinfo-to-common.patch.gzapplication/x-patch-gzipDownload
v2-0006-WIP-Improve-and-expand-stringinfo.-ch.patch.gzapplication/x-patch-gzipDownload
v2-0007-Change-out-readfuncs-to-handle-floats-precisely.patch.gzapplication/x-patch-gzipDownload
v2-0008-WIP-Introduce-compile-time-node-type-metadata-col.patch.gzapplication/x-patch-gzipDownload
v2-0009-WIP-Add-generated-node-metadata.patch.gzapplication/x-patch-gzipDownload
��`�]v2-0009-WIP-Add-generated-node-metadata.patch��ms�H�&�~��+����=�3M��}��]�2�K��)����=cc4�Q(������� ��`��t�����%���G����x�n���;2���t8��3�������xIYz��`�|�%�����;o����+����{=��O�����eB�w�����������G~��	�mI�?|�3��w��?��f����G�B
�:��������f{�Yd}�Wg��?�{�����������WT�r�nE"�P���(^�wk��K?�������C����k��g����/��C�.�i��_�=d�&��_����l��I������������_��_x�&�����F��_������}<�r����I2{�������w�AH�-�hE���	��$�����x�H]��5[���������a�����]�;�/���w���!"�����)?��|�����o��\���b9-[���$O��a�]s#I����?��{�����3�������"�R���eH�o���`�$X��������=��4������dQ��5����[b���A�U�H�wa���IJ�e&dV�4�n6q���O�fA���
��?�����p����+���/�.���yF�G��������_?�����z��������_�������_���S����_���w�v$i6�H��������k��)�o}�_������?0����L�����<�2Jw���X��
A�!j2b�����.��k�5����0��7����o��OA���Z�@�e.��1�L������>�
�n2f�*��ty#C�	����L�5I�avM�Z:g��z�L�7sM�]Z�o���Jb]�`��s������;�&����71��\����f�wE-^�o:�b��C����]�u*�G�*��&~_�MTG�e��U�$
c���:���8}�TV
[�b�$ S��������R��_dh�����dEv	1l��\I�cH�����&i�D~����f���E	d(SW��A��7g�������V��R����*sJ���4�9�)���n�{r�3�8�"�����
�V?m��!����kjwj�x�^1�0��i���16����)eVH����ZI}cA�� �F�R�v��o(�i�5,S��k~$��V������Ly���
�����c
��b�����$�����J@�,�S?m#����2�9�"�@�,�sa�xZ+i�`_�0�pA����=����e�;�H��1?Z��zS14]*C��0%p
�J����Bi';�5�H,x�d�����#�_�2
��� �&�v|���`U��#c����cJ�Z��+_�
2�!���0�����	�AezB����V����8�T�O(xb��
_�vC�L��@1�p�~���Z!Sc��Eb�����$�V�h�f� F���!N*������Ll���-����Y���#�����VU�Z��9=�
`@{�0�5���s������V��b���������10�7	��w�����:�3Oc��&����;�R�����pLI�|�U�5�R``C�D��*-��f���9�	�������:~N+%�
	�Y���2�Y�����EolX	��`��l����_W�.��d�e8�S#t�_���rE�)a*��cJ�&��+���W�6"u�����bKf��3���Z|H��$l �`�����?�����To3S`��&�!w<����zM�!{��e���� ����������j�+��z_DO~x����D%7�L
�.m~>��6yJO"C�%U���b�e��^�i�M�Q�1$	����i����a!U+%�E���gZ%M:���|d������fA2D�=-5Y/��lZ�M
�j�R���L^m��)ZMX�K5�eU	�������q{�/+�M�$�I�U5�a�bH��tf� 3;W������U���!������v�i��z��[PsC�X��Y�Hw�N��r���O{R^��z'�F�JG��z
�"j��^�y�7���=I��Z���!�L�@�����!�AN�@3�z��^�gx9f$k�R��Ur��b�[[�"�x�r�j�v�b\�kX�DH3��g���!�T!��5�H���60�U���aj�U��������]��`�!�����V3e�T��F"��a�Gy��^���t�bH���<��!����H����j�8��Rq�]���Wd�v��)l�<������Zqc���dSA2��������L�����aL1�"g[/�t�L_��1�L���)�Gl�p9�&d��(����j���`)X��~����J����)L�1$AZr�;$ZB2DAi�����g��,G��f
�{�^�������]�.X��^�yj�+
S�X���2����`�4Hu�l�Q�����F�3��,����g�)�R����C�u�f�����?���4�9�.2c�gYi�?�i�]�d�W�V����f��~]�x�����ly)p�x�+���fz�T�������k���yAaz��+����&'��{b�MU�<�hU�+f��r�&��� �L���	3������<���$�d�s]I�g�R��[���A!���l��&,��"�Ext����4�L�qtI���M��������O�AJ�\du2����!��x���6/��������S�R����O����'��mL`��2���}���[c��C�T�?Q���71��� 4��������~�
����!�4���,x";d�f�h�T~�|b7$$��z��vT���@T��F��~�DA�bH�F����?�������!��b�,�/�qY)��#��I0�����
���=}����*�..����D��:��QR�H���c1��}������ \�`9�W��Z!f��%-(0	�\���j����J�2�.����$�;��fa�]J�cH*u�V��aM�
]x=T5�$������Z���x������Y=i1	
�!m
z��$����VN��%A^�K}����1�#K1e��K�����>��{~�P)�A�U��$�������3�2�tJ�.J�o���B���\���C�G�R��
i`$C�t����_Y�:0��IS�iS�KV�4v�M�
8C�Td��W���~:70O?��I8�$qm��D�e��=�7��V�Y����_t�������=	��5�K�{B�=�����M3D2�����C��$+�}����R��L���c�i����:P4y� ��r HfW
u"3]dFc9�!�3��A�I
gy.#0t	�1r��q����d��D�F���6�2��e
*A�[�!L~��j����c�.f4�������UB�)q�&�HmP�i�3$�����91�����HF�^?Ov�,�����}�3	�VW�(�lPY�i��RN9��M����F�k�B���I�������"���2{����R�\��&p%%��[�U?���)�-�X�T������naC�����]�����`;DY�*��������e�����X��8ClQ�������V��(�$C�TH��^�x#����.�`���B�Z	�	�E����H���56�����vyS�B�^\�W%
�)m&���
3�[U��ZeAG���~M�����]�@/��������2G�>����%���8�Z�ZAfnUI�U�b�E�R�Z/���A���h���)e��1�
���s9��W����*
'%�)GobR+��'-O*�)qR�����z�
�shX���\�U/�A���Yb(���d1UO@�rfe�N��ay	c�Z�N�^X[�a��k&�b��j�X��V�2��{���Zyf�b�*(S�����Kj��#1e��=V/��r�(��L�z�@��GM��J�2$N���ZI����` j�K:��0�e�kV�t��L��2�cm�&�$S���^Z�N+
�!m��`/k5qbF��7]��R<�^�����0�L�C��V��(��j2�!���V/���,G�
f�,���
3{�X���\�}��
���%��C?�.>44K)��f
�jB���]eGod��Yr�:�!��0h,]-��K'0L	�\d�����|	c��P�J�Y,jS������d��e����0
]����o�=7�A����_��pI��B�����6s��y�|�l��:�,�_��y��
�U0S���,��|z�&�$CZ�4>g�N����Y�EU,S�L9M��5(6V�ipv�L#�Z���g����fzA��5��������IG��1�5_�V������H�ef/��\�g��q��{}��I��i2�s�u���w,6D��mF������zm*j�k���7T-���;H�^����\4i�% |��c��V�lc�-32n�D��5
��o�-�z�@z������Q��T���5�~h���KRh��9��
i�)�o?r}��6�t���
�U�2X��7�k���\����Y����)3k`R�B��������|����313���(�	�B���X��J�ff��s�������f��2�W�XK�:<L��P�U��[����nHH2R+�A!r�b��B�c���1�a�?M�b��9x-t�K?q�[�F���[~-�T�jRu�"��$���|]�[zb6���#�@��rmp�]�8�2����P�-/����Y)�YM��&�2:�.��=����NM���"K����M!�Y���{k�����-P
�vWI���I�$[�W�m��?c���0N�U�d��v������y�hX��1\����4cov����d�%�bQ��y�%��S��!��|�N����t#.`t9b&��Q��g>50�I	c�L_����5R�r*��"@LP��l�E=k��I���d�*�^�Z�AE5z4Q�����-j������N�bH��XhMT+��*��X��j]���������t��3���37_����Y+����N���^T��
�0��e�&�?��0{�����1�@(v��=�<oj����|k?�F0l�k��uV��LG�R�]��r������E��Q ���g��E�@R�`J2N>(���nA��������6V�2$Bq�/�����Y�b����!�C���U�����1��Ai�v���lpY������2�w�k3����L��8vwH2�����3�4�b�]��i����1�@1����p���o�<sA�)I�!��y�^�����4��}��_#�j������V��;�5�s����_�$��-�
������N�2��q���6�S�b:�k��N?�7ZM�`$�/�`�>%��F��L;X�{U(C��GW���V�y�U�l�!p,m�1��3�[\l��Wn����0��x��,�ff@���J�*:YaD�Fn����.c�P�"���TZ�U�p���p��]q��%��\%�
\�P{{�@�WqP��-]���)PF*L�"��x k�6���VA�2��Y�8�3��Ok5�o���JIh���3��P�&��l��6��M_/�g�����U*+y��!������z��=�N�s?�g�����*�L�Z:5.7����`�O��!�RgcY�'��e���N��;-���X3]�R�IOE���"������WC%�)i�7Yl��k�(��{8�$q��a�+�gy\oq�(3W-������|��qm��g&:L&
4�A�N��f�/j��M�f��L����h(�Ae��f�����c��|�5
^��vHS�T���d�<�S�tZ�!������9�����T��Pf�������j����8Ve4s�Nr�b���(h�d���dJ�"B��`5���z�@3�m��z�A����g�H5�L��i�1��gi�Q�2�y���4�
l�
Q�2%�A����+��+�7+������';�����M�K�u���,��tV��w�����V��������r\��u�����*�@����.Y
���8�(��������������+ ��W5��7�-�M��r�?�$��ox�h�t����k�����o(����)�8{�Jnp7k�3��Y��.]��
�x�5f�U�r+��������O�,������\��h����xg��um����TK@�z`l�]�W�&�
;�!�^�;���;<���}��/��Z
D�e��13;�U�o�\z���6�|L4���L��J����7��VT3��h���J��3����g
���o$�Q�y�Lz�'J�	I������&�QL8�����M,��%�'Y�_61
���7��dd���K��w�
kX�_v Y������93/5-3�5,Sd����8n0Y�2���|Y�G�}��3k� U^��x�R%G��N������U��'�\W�;�j;��&}�����2rj,��_v�lO��e������
��/�b7����-�H�5n6h�{��d�d�f���ifXU�XfIxi;����m�(��D*h�B�v����e=�$��������1vs�o�V���)Pyt6���b0-�[�@N���x�]G��9-��l�)b������e��&�E9���3���+�&S��?�<+�dZQ%��Bd�,��" �;�zP�g�hXV�ttO(�E������I	rb��2R��z��
S�Y�;���z>4��$U�=��fZ��h^���T����a��|r�&1������dl��,w�nc��49yr]�,7)��}wY��d��k��3���W=��1��1)G����B*�(#�)�Y4]�2�d����1^7�c������K�����M��L�Z^��@�,Qs��6�	]%�<a,u7��:Mb��Q�G�*�!mfJ��Z)�A+mL�[�b�~e��B���4�B���D�?�kt��8,�
]���2R��|d�}?-=���T�5��l��1�C�8���Y_<��[���������1�~^��}liYUa!r$C�x$K�a$,M�����2E�J����7��`�P(1�5�x�d��D�)Y���A��Z���~���h?�$(C�L��V%��Pd	�4)���e�i?K��dlj�k�
��Y���f�M�oU$S������k��&
%�Y&��D�Z]o��92hG������\�N�<�o��Y�f.P�2_�
�(
:D�X�d���<�!�����fhg�K��~�f{isdT����u���O����6�3�@��������7Ie�Y�0�b��%�����~Q
ls�b�)g���ir_"�� Y���!�A�c"a�{���aM�:1C
K�1
�����U��)�LZ4�)��&8��`�"	��5��e���1�f��T��2��:��ue�� CX1w��a�����l���MfE��x-k�]m��&����"��k�l[��9��f�%�)x��nQb�5h�
8�}��|v��E�h��7��V==��4y��
��_�Z�z}}��3�g��Ra��������:�u$�$C�|['�L�f�qV+�A��
��7��Q{�)7��l3�{��u��Mk��M<S2xo��z\�1H3��Np���&�)�w~�\'�<�Mu�oo��o�I�M"z��(�{f�m�Ee�?��`��`F�@�������^}��\���?����_�WU"R���%yR���6���J����p���3������=5o�L�-x���4����
�y�D�i9JCugb2���N]�o[�f7��n����J�r1i��e�4�O-�y�6x
���y�dv�����^�3��q�]@jf�l��t8S��~���Rn��&�)wl����q���W����p����������������~���_M�^�d�v�}bx��`���)���?)�����C���	���b���WB�m�X��[_�����S�����H��L����h�@�a?��U�������������w���������}���(�A�`)��c?G���q�7������������WT9���O����lfQ�}nPC����Y\�����d��~��Q��?�� -�f�_o����X����>?��
;�6��`��7�����|���]�7"*4i��:�L��=kS�j��p^����5pM���%��ns�������/W�?�~�'f�d�O��d�O����(�L����L�?�1;����?���d����Oq�zx����FEycN<�[<���fT@&_��6������#���Z�!����{��k�Tg��5���'0�r�t������_����F}�g~��x%_������?�w�T	��(~����K	EC�-�y�����q���;�d�CtB�������2��a
*Y+���@CI����g��N��V�F���1$;g���\q�JO@�5%���[��
y(�[:����%59���r�|�����6`/��|I�/.� f)�2�v���+���6	v�%�"�>�59�\T�0E/0�p/HQ ���7��`�fs�b%K���'�-c��'��c�"B��f$��e�E1]�t�������i/�3�@�p���E���1]%.���1f���!��4<-�}T��X�4��mjTA��,x���)��dI�y�/n��]�|���B�'� �� {Y�9�}Cl�8
����4���)�_�"�bx��;1�s�*_��M�f�4f2i���������W����[��"��y�1������+���!^����Y�1���,�x����	�H�
����u��<��On�/�gR�fl�_���*nc�UO���?��0n����������Bb����) �?mI�0�}RP&�E���c�a#�^L�l�Xh���9��gnw�9��\�]p*��W�uy�����|��_��F�=�I��L{PX����e�h����l��%L7���F���.��2�(�e��)C��;��T�9CA�i�Z+��u�F���iT������)���-T9�dLM��b���6-��B�D�t�qDV��vO�.]��B��Lp;9�bd'����[*�s�n�V�Xn�����8��5��d��k�5i,!��f�� '���J�i6,IK.�DA�����&HY�@�l�� �����Gw/O��8��CtY[���M��������1H��>��vx����4��}K���c9�1���� R����I|��_�"���(�_��s����:o�%��R��&�b��������(Q����d������J4��D%#��$*��B���I'`�l�J�=fQ���}��rjr8\[n��W�;�*����ksb�%�0���7s������|I���;��Xr�s����=;�q,x�n���U��C�(��m�.���3��U�b��{UNYBD�L�R�,I�P�8�����4�E�t�$�r��>3M�FP���7{���6�����+��{�i�k���5�D��r	3�n�tUO~��`���
I��i���7t���������������%���y�%���+���|�A��)?hd����/9ZS��u�j�E�3�����'���$�n�h���$;�%*;�B��x}��"�����[��i�_�;��!"�����mK�����Q��t>�s>�J}����8��D.�ezrHd�0r�.����F�+A�:@����K��%��kA�3�W��||�/D��d����1���F/n
D��� GLWwH~]#
U����U�������'!�L�)��'������$�d4 ��S�����_�Q�q�s��J�G�T�,�H�K��Cc�n$���������������P��?F;���m�����}����{2>�@&����s����X�����Y��z��>�'��N�tM~�RC�a8�\y�,�&�8�YuOWu�!YRp��F{����t�h��2V�bcnX2�1&Z�*t��d�& ��Z0����f�����������`�
�K;�I����l/����MF=$�����_~�>��������^c/��I����2>r}�VRv�A��l��?s��.�9���������Y������#�A�
Ur( �Hp���C����D�������dE��;�=aS�dh�!�/;��*E'���������<�o����������)p�$WU��z���O?=����,]U��6U5�������B���It��I�[��3�u�*��:%
v'
r�Ni+-'W��j�\���yr5O����<~U:��'W��j�\���yt���j�\���yr5�E�N����<��\�����Y��/'��)C'�ex}�	/�����u{
c�s��a�v��#5i;��:y�x�>ar$�<,�����>��i�J;_�m��h�`V<0��5�������lTI��4Us�H{� �D�X���K
�*
Nn�f^a�n�ovS$�V���&|�_�.�[��(�\�i�3��9#if�)��+�xI�t��r���p=��v�� R&�W��P��.�X�����b�����3�*�i���%'��"��"\�~trP��Ep}O��@��6l������T�X����iC�6���{�sA
� q;��^A�A/�U~�����1K���yv�UK�K���,��i��G5���u��D��/�����X�M�����G?}���Bms�q��S&�a����v4���}���S
���_�$�����T)hx���t�W�gt����8<�q/������`���z�����'"`?����"N�d�����e�-N��LB3i�Nl����g��awdq�}C���]Gl)p��r��;c��"�d>\�����^���`�d�)��a����H���
HT�]C@�4��t^f�c9l5
�|�C��l�)���YbP]��qw$�y*�:��la}w5�&
i��Qv�e��iI����&c���zY����WC
�3��7TD�������E�S9�{�k���	U�8@V�����&�G����|�q��~;�m
KX��3w������1����/����O��'�W��!R��8V!�T ��s�U����'�����s��%����3�B�3���|���L�=�tb6:1�N'�^�������9��S������&�
c�
�r`$l9�3��������{�vr�;g�'���{r��KkDO$���g�p��R��Us��0�B��gp*�%���M!���a�n�x:�;�������<������R�E���NI4��^�O1Y���[�]�_� '����Py����I�c���Wp���s�VaKe�������9wT@��#7>A���!��!����y�:��4�h%3������;�N�����5����4��@x���.�H\�x��l}i{;m���������\�^S�Z�l���>�eB�F��a�T8�q\��K���QI����6���1�U�-��������a_����>kX2.C��i,,��u�N�A���q�AtWCt���xq?#r &�b��\g����aWPT"�:��0:�-��X��7S
4��!��6g�c��y!�ss:�<����OPU#��JF-�x4-�W������<v�S��R6�'��A:�1��l:�#�0�Aq������uN��U���0a�����)�����k]BG���V���s6�.hJ������I��E�x<�Vf8m��e�d`d�x"3��]��;�x��z
i�����t��S\����D_����='fDk��S/T��2T�I�����7Y�i��Z���6	k���k5c3��r�[��"G�c5ei�z����L��[����+�5��������|�F���n�����wZ&��J�db7%m�z�j�/�F<�L��W��`���cMxz?91�&G'���y��Sh���=�-�X�Nc^�Ri�������	�t��T/*���/�
J�I
`tb����?�����	L\g�k9w��+D$W|����������Oc:�"$�L`���uo�����/�To�GX�h���56�g����c�`��Z��9y��x�_�a�^�!q��5g)�A��e��#���������<��78�J�d��8D�mL[��N���;�A���m�)���N�������>��i�����
c�����6�_�p�@C��%�W�q�1s�WP\X)�������m�!^��[9���Jz���n���D�m��j,K%ax�]���I�X�4����������BU�xn�np^I���h�s�{w$����q6���s�F���S7�}��T������^E�$���{�:m'������o����7��d��2u��{���$!Qvy��t"��=�I�i���+���;5]��e�M�8�T!�VBb*��`q?��-�R+[������|�����P�P��|;8����!q�
.�u�-����}w�j��#��d�U��B_�\I�%�y�i�������n���3�V'WAk0�M8����"����2.�\��[?Y��c�%/��W�
	�<��&��-#��~y�'�6�B
G�p�p�r��qw��rz�����x�o����,[%�v��������/�	c��8	V�]��<�����@Y,o���6`�Q�m���Ot��GU����E
�In�����hEn��kr_��PFk�e�����c��<�9
����u�S<�I� Z���Rz
W	K.��B�=���8�i�����Z
�&�QA#����g9bo9^co}����K�f����m?lk�Kr
(,f|#
B�"�E��d)�+�?�D�����'U0b���<�������dLE���B|��a�N�8>����a���e�:��7f��U�%��'�v���X�����:9�V�>%���	����ZCnR3�%g9���Ws���;����y���"{������g5.g����I6��+����W������I�������$l$�l�I���@r�M� �c�3p��(���J���j}3��W#���^�q��r���s��c��C��N���q�B���"�&�E��IgNFDEM&c��[�Ak�x�w~������YOZ�~�Y���������N� ����W�:����}��-���:'�:)�I�N�uR��b���X'�:)�I���b]�I����x-o6d�[��c�c�3�z�j��{��C��t�h�>5��"���X����qU��)��r3����p�]5M���X2�S���u�Z��O$�f|��<������@�H+�q�J'0&5��I�!k%<����n6]�&����I�(����nQ�\������B��N{�6`�����N��W��>_K?�E�X���k\�3�'����io�tti7�6Y�$�O?���"J� �'��FdM^�,�W�u����M�R�0��@�VS_����`��|��t������x<|�W����#Zt��
�
��H���K5��d�,���&[kA���(�)	_	����x���}6�F]*��j
����l����{�	<o$�����3�Z��"	Sc���������O�����s=:`)G���Tp����A��.��Y*���4<]��4x"��T@�a	�f��/�2�a�]o?N����+Op�)N~�,���FPxX���.~�a����v^	��)��/2��AQs��d��?����]x���<L�`X�)��$D�\��6��gS�r�J�J����v�C�����w�n��NA����$I��tjP��/�z���l���A��}*���jZOW�	���J�k )�����z�����7����:b
���m�����I�������t��Fp%!bajR0EU��d�L�T	H,\�d�]�O[�kY��y	�0sM��y���V�!���zK�]r��
��/�|'n�*����B�u�]���.	���F�|���Voqi#g�������~��ApXv#�Hv�!	��=�5Un�dL��5V��| W:��b��	�^���Y<^n,�v����b�L�Yg���N�=)#�.7�g%w�m9c�
to�/~���ktG�.���b%a���s}������%�!m����I��������g4w�#��6�ln��6��Hx�}���M��b���1��j�
�6��`����~��/�Y�C%�@q(��W`%?o�w�Z���va�5�"�	��ex��6nN;q�F"��F���t)wt/<
���kh��i��������L!I�X��	���8��h�7�c�	{�i�$���X�z���`��y�P!'�>>����Z��[\h��������&k*��:�*�I��C�P������w��EQ�yM�S���v�M��6E���]��G��'����}���|��`�����%](��N�Sd&r���Kl����`_����)u����}������;a����kd�4��Z������Z�,��L�J�����~v�:	�n���J�CbP6��
�r2n�����Vp'c6��;���+��c��0���^��ud���j��r����~F��;������z�V�D�Y����A�+�L\�PR��p�3����j'F���8�!���D�a�3���2������fKd�e�h����-�UI�����z���4�7D1$<
s���nH���5������2X�����I��Hah�����g�����3�J�.6�*�vts?��L��)���.��Zr�a�K�."j�H���LX�y����$�r(4��!�����uFK��.F#��j��+��*!v��V�.5�P^�`�DP.���[�5	G����<co����#0�
��P�-E�[n�%~N�����D�0A�#�X�q�Z2��j���(q��<�(�n�oI,��v������$�d����_�a�������3��N���-���[Z1=������'�������PH�E�`�E�X uCP���#w��&N���GA�@i�xy����bX�R_�$�{�S�Q�@�2\%���;�*!+t�l�����.�Fgb�	,*���j�f�H�Z~��+[�����f��k���mJ.7�F89KG`��]�y9����E��#�EFb
[�%��A
G����I0��fB�D������`��v�����-x���imn��0�H������[���
k$�$T��P�p\:�������T�����yU�G+r��K��������g$��y���	84E�0�)��}c�5�
���q12���_s,��v?��6�Z���lJ��{����m+�G_��t�|��\c�/��#�J@<LMD)|?��I�vD�����i�8��@4��G���,��t���%������k\��H����p����������K�!��0&n/\�W����GO�.h��h�IC	7�����:s%2�?=��k�Ve��1R�������|��`���S��?�<���lC2Y%�A�UL�$�b��WW(�F�3�3z'sG90�1��?���A:����E:�LB���DX2��n�����2��y�m������s����w�������E���9w92��:���k�=����s�G�����I��c1	oC��-����c������������	3��?
q����:e:d:4�B����&�xe���P��t<�f�[�1d�����d�J�$�8���r��C�-Q�&`���_�$I�\S�������N���y\����%������b$�$T|��l,
��G���<!���$Qf^����9��9�d~n��-��&Kn���/���:|�����kv���Z�87+�����p+��hX������@�-e���1a������8��^S��/g�2��k�M�6b������@�-�]����������.�t�U+P�dQ'���_>��g��U�����d���S�t�\)O4��|����v��A�����s��������J��Jc��q����x�����G*��t��Jb
�=��7��i�H�Y�4�F�[���cY2&���?l������X���S��ao����K<	D,,y�GI�H���������8������s;Y����G��]K����u�U�`�O5�r���n���b����KFCt��#�+g4!b�����$���f��$�
4���J�p&}�H����@&hc�����S��"X�sJ��w~���;x���@��#Y^��`^�����{�^n�I��436+��$�(�6%.P�w&|cw���U��q����8j���P!�W������5���|���W������uxC�?�rQ��I�W�}_��NWx��x�M��>���
�+`M�����w;L��$���vP?onJ\%�N�Y���S�����gQ�����5��B��ph�5�pZ|��Ai�;��\��rr,j���������n�:)|S?#����F`,�Ct>z�O���]t�����J��!���d�Z2^L�������)��A�>T�z^�F��������	���BJ��;~��e��d��p{pc+o_L������_K�w�^��x���ve�*o�����S����w��<&[	�������7.��8|���������c�%/�w���k��X��~y?|}����'P+������k:��4!ap�+S�#���)eK4�
�j������KG���R4���5w*�8d&K9�nM�)���f�)���Y)%�!��k�L^7�����LSH�3r���w=P�zl)eR��	>����sKj�4��u�2�xJ�b�����O��h�P��>/��`�t{�@���bjqtol����w��m�AS�r�
�"m���j��`�3�G�<�����
]6��m'�&K��
��J6��r5�B�
���7�
��-Q;(�=����?j�j0�zG���1^�p�r�/������t�=eh,;FP.2�`�QA��Cu�	�+]YH�H�n7n�q	]3J����~��{����peeP,��p4uT��!�aq�a���b��e7l1`,|�nlaQN�e%6��C���<*��R�iH��&���������Uh�p��������x��ft?� �LX�U<�����k�&�\��/��6QB� zp�E��
�f����$^����M#���6H���$z�����4��p�����,�9��6��K`lw�����"#��X�EcL-��l�oe�^�I������������������������!�2>r>�C��,������	�������[Ju�y���?m��[�T\�slI������'�b�Qqo�n��L^�������D�i�������h���K�X������qt����I�9�u1xCt�By�������1��"�r7PL������v)}��6���:�*��g��b�sa�Be��9����-���Y6�
l\��<?����f����a�fc��eC|^���5��+�����U�Wr��o�������9K)C�B����]���)���e�gym5��b��8�g���P�������@T� 0Gts�$��
�Q:�*~�}����'��(���,��i�m|[m��b��vw��/K���M���_K��|��z�������
����[��C��
�&�x������.�=_���1�&V�I��=�$L,g��~�`���p�b!����i
��
�P������
�G�5{��6�w������t�/���W�����&�����q
=�vq�&��e��}}�U���&f��%9p���Q�n����l��w�G�a&^eM�a�g���O���4	aP���	I�����$�!)���-3���N���I���3x*E�e�����z3�P�hZ�Io��>��z8���L\7.�"P�FG�x��x��S�$\t�
%���E���0��%AF�IL}e��O��_����Xx���D�c�7%@"�A��!g�	���9�nTL��\����_���
��~���F���BV9��7cW��5���d�=&{k�!��Mw)���d�����N�rU�ki�8�����%S��pd)C�}�M���u��LO�f�����:�Y�g�.��<���`�,��|�H�`��0W���^�v=���n���e+|I���^O���A��
c�����pt2�����<��i<���`2����0�m2�����I�� �Wp��7~��a��-��4"���^\��;M����<���
��z�N���OV$���0���]�����4����C���t��w����u�'��8����P�3�cQ���;!�I��vSo
:���[���]�iX�7������_�[h�,�b��2{%;�k������3�J�8\m����|�����8W��M�������8%lVv@G;[��:8z����uv�J�X���W��p�"�c�!�����uc5m�7z�AI�����a�����`�V$�M�(
�7�r�L�����U��W���+�����8d�1�t{H+M��&����7�w�V�e}�[��/�/������
Q���OaL���!� ��e��e�����b�[h����Wn�K������������{���i�A>��A5ZI��n�QE>�7�s���j7NI���qI��.��r����[����L]P%�����;�`:�@#0o�6��h���C�o0��;���y�����_������$MFn�m���6��O$I����t��k�U�-��
+��J����kvw��}�R3r�����d���k l��]���������;����B]�����n������P�������y���s��Sf����^Q�S�>t�>8����v��k7>�L]��C��p3TCvr3���=��\��[�n�J�t�5��b����X6(�DYl��3��b�����5oK��=qyi�>E����4d��y��2]�}�)�X���\j��E��bb�SE��0]�q1*[�m�h��R�d\4��>O~�%)��\�!&���k
����s�^%*��n��:p4�AfK�Eh��Y:_�����s��gt�N5h�����M�B��c�v�R�N�Y�1�����R%,�2���rC�AG&�/��V�1K^=I�����m_J���Q��6��8��LF\KB?Yi����r��*
[��d��Vj��Vj2�j�t�V��-������OZ���:u'�^�����\w��Z�~��{��wBY�}?Z�����pn_��0y���D:�A���U�aj�1�_z�;�~a��Y���H����8o[Y&���,��G��a�r�W{X7K��U�p��m������M�RX���
Y��.��.�-��g�&�l�f��}�4��8����y�]��(����y��G#A�.K�� 83��f5�����u������	�����@g�a"�a���>v����
���w��Ev[��}4�Q<��l���A�C�:M��=�;� e�#��c[s��T"�,����l�`�_,I��zsO�����M����?w
����D����]tW���,B��;_/�o�)����;�7��r�oI�^%�O�WP�"7>+wTRtyV���E��"Un���Wah
.�C������][�R��	=_o�q���lMD�)�1��]*G�K`#����<�$����i\QD��m��kw�U�����gec�I�y�|����������lG�xl1������LCM�3q?Z��v���G���}��~�_�����!��X�'����0���^���+���,��)��8�Qe�N^�^^�L��Om���S�&�o����B7��2_��U-��
�Jy���w�0���^�X��[���A�TV0]�dnc�����=��|��%���:V�K������(��>��_e�!�pG)M��M<!Y^�*1U��!K��%�T��h�D���Y��������]��g��vw~(g���Y�Jq;���T��.��:s���	��cx���p�`�p��]�V4�F��,���,��z�,��w��_,H�^Q?�����:?,u*V�!J�:�&S�gD��D��@��@������lr���)�8T��&���FP��2uZ2�/}
E��rD,(v�S����I�
��e��m�b����*+Q�v�L�^'�{fWE
��1����nu$
8����2-�$+5|���")xw ��:IHc�3�y��������%o@��mI�rh1SI�CX�4�s
��,t0���K�����������
%
v��?�l����n(X�X���{z��9� )�B�Ou���T�rA;��S2�zR�;��:E�A�WN������K\����9s�n$h�����R.�� 3�#o�_aj�
������#�Q���o���`(��Tu`��g����*Cf���H��U]��$�0&�`pc������-��q"R���a=\G�e�d\4�qWk�'�]��}��'��^�������}�����\F%u6�}���)]	[d���j4����B����}��q,tN?F��[�ixS��$��>�7�{W"WRW�6#_u��l2������"�G����9����*o8�q����@����E&��9��L��nF�@�z���6��^/�CZ����u����7A�����_H�/�&"������v�M�G�CuP�
@���o��
`�_(�q[|��8�Z�]	����Q����=xDK�t����2�N����H��3��e�S���PQ����2X]�wz2S2��C������8�wu��I��L�����nn�?����g�1��������k�*��%E�<�H���-uL��d�-	&�3��6j�}�����_�eMd"�G����`,�p����Dl~ ]���;q4mc)���������)�G�����$��aI���p�-��2�V.i*@�p��w���M�`IV���-�u�%S�2�H�DK��YTX��:� ��������p��3����Kx�5���t�p���p����A�^���/K�)���mXT�����K�d\�\�n33����]I���T�4����������k�c��-&�Y���`cj*tj�g����UP-��	�'3��v��[�����C�<k�k[��)W%���+\�q��'�����Q�b�`l [�8��q������(
VY�y��!�������������~�l�O~,-�C��#
Oh�O�a����������1�O<`~8�V���Ie���9�U!��l�����0��B�����j�h����hC�0%�������<h�C���=
�MF��v��d�1'�L�i����Y�"�M�A��

Q����A��5��lk����'kWM�������0t�:9N�����SX��@d���A���LD���dA_�f\�"���^5%���3��?���T1�AOG�=5��{F"V%��1T�f��o��t��W��k���o��+�������7�[�R�]���<�#�eo!]���T���K��4~S]GXU}[W�F_oy,L��
���8����_}����Q	�^�B?-�70��=N����A�Y0&��(���6Z���Q%i4������Sn]������=Y��C���j�.�\�\qB�UtC�'������|�.0���M������8��3q�*��,=������E��������������������O���I���IZE�����
�e�J�/�tnU�=��,|I�X�Po���w�k
��<I��&���P,��c*�Do�l�������*�P�:lu�������T����M����O�������{w�����m� �7�;E�mU�t&T;��#��#����D��.�B!���5o�r�jX5+�'��[(m���1g��1��]�7q��I��Y�o��M�=:?h�V�'�c��C�g���32O��������6(k�v�����<~��������tX�>5��/� 4�Xa+�5wY�i�����?.�g�C��RT�(�$���H���S0V�����`��<�>�X6|��y,&q*��bVX6����nL�C6�f8�����k�!Q�����
Ix���~z��#L,���a&a�Z��`������$���{w�	��ds�;-�3Wb�������+kw�ur��v�L}C��9��y:6���tj�$�th6�e�����9�)\� ���0T��`O�eh��j2����H��p0�2�c����^�w�QN�t>.	�B��U�XK�L"2Z3�SNHh�gvH��d-����O�����������8L��6�d�j�[A��A�'��I�|X:Z�v�3�,�p�`���JL8N���[D��s4��0�N8��z��;$�SA�X�JW$�f#8��p�v6�� K��1I������C��n��/�*��e({0	;]C�]Yv�����Gi���k:��*:�}:��qI�I��	��zV"����X�2Xi?�^��&���k�74��">,�����:1/���i1�I#_�n�i���g���E�,�l���\'�����I�K�W������)��>�-#������;�Mo��t���+5{��g�M<*
��h��Ck�K���i��M����	�pY�%����	d�%l����_
_���	��������.4��FCTF���f����"C����S�;c�������r�a��m�Uc�
e��o�g��u��{<�k��(J�"w����%Y������[1\�-xP��]��X�iu���^t5 ���L�.L�N�������e�(a<����o�>�;���C"����J�H� J~&i�/~�V�@G���J]3$4����z'�
'���Z�5Lj�6�,):u��/��o���p2��mK"���z���Q5X���.T�U/�E%���~��m���`�e��Hg
@M�d�N��������}�P@eA�rX���K��b�;��R��s���tF�/�tD��2D{B:��*M(���`H������>��g#���>���R�+o�/�~#�&w�2i����qfu�Y���z���q�L�����drr,,��r4���9<�%q�c�8����I��CL���.0oV&���-���L�0�Q�����o�����"�n�'z�,�r��+��+�q���t���W���t,v[|�J���QVb7�E����m��E��~&3��|��(!�w{�W
��O�����uI�
XG�*y8�
��l��P�I��p8�u�f����tP��q��m���� |���q�+\!lv��o3��AN��[����q�-������0�q�l�)O�)��mx`5�����uA�	��1����B^�*|g9 �Z�<�3F��'�-���5��x�v�j�	�����j�4�}t���/��0�C�_T�8q�$�<K��#p&�c9%g<s�����6�
m%8�-qB��8�@\)��������[�gt���"�=�B�;.�<��C+O����I�{����H��A��*S�%��4IfcO���CR�F~���R�	N��
��8��������'r��V����G�kRw��
�Fs��^�����U�r�
�d��l���n�r�@k=�7��D��b�$������K���d-�k>���]�T���@���A8����4��l��o���u�JD,����P�
�a�0�������_�_��6Xk��*�	X~��xMT�j1�O��BV����7���V����f�,�(���l���g���'����R�;��<a�\��>����1O���R���/�/+�*���q���"�r�M�8�o�G'h'��q%*&U�i���8��Ue���������%�����-���Pt^�qJ���;�=� �6�&���}"���-(��b���?��qB>��5a����P�m�s��u�@���/~��S��0���0�d2�`�m�?�������M��7�����8K�x�Mb�e�J�A���o{�!�@X.<���hI�������`���m'�%���4&�oRU������a+��#�
���I�/${��.K�C�]t�+��O������U���j���+?��E�
W���V�?.����vD�nx��q��	�D��\�>?��X9�H�ITI���at�Bd���r��������
�D�F���Y�
P�V|e��Yq\�����>E4�:����$�`S\�%���%��m�\��a�EPz�P�}���?	
A��rYe�A,�ph�@��%�'I�b;D�`�h�A�#K%���j4��?�O��>N�N�����������?N���{e���D�����/���<����g6X,�9���[h��v�����&�p%~�a�VB��l��M��-���(��=
��=�L����}�]�1���L��2�����'����P�>�L�1v�g~�"�%kZ]��@b)�w<)�d_o�1��m��p�[��PTS�7I� �m�:�j�N���l�&���B6�n
�f���5�U����C�1c5D�ZmG���Y���5�!�m����A�����K�d��o����{g;����������*A�U�Q{U�:�z�b2�����2(OV����4����y����^�DP��2��R|�{kkS���O��z
�}�>-�����Zu�_�jaM �+au�9{;����C�P� �Fy8��u��+kLB�F=��W��1<�r��ZX�'7W���7e�y��IW9[x[�|�9�����#j���
.K�m� ��|?������*v�[���V.�zh�	Xl/���-�"�M�ivH���KR�R��������bE�+��B��9?|����k���rc��`N�9��1s9l�CQb6����W��{�iN������5�>�o�"�6[Qb6nI��nK
��<����}O:��
['o'��0��`��+���~����]	�$�5Q�u�X	���Z5������mgw�+�}�'�n��t�+s%�Pe#��[D���$�0���|&�2d����$�
�w�������h��5�&��Ht�uU�+����j���;D��e��x����#��_�p��@!��A���~�����I|�,��?��2���b��*w:'�7���h2�i���:4� �F�:}�i�v
�vQ���0������t�6�l%c�#���!<;������j��I7��l1�?@{���W+[��x{N_�Z��Q�!������P���!��U�*��l��n�Z�;�[�����k:��o/xC�v��������k��$�)�t?P���<�)HOz��i��K>_/�M%e���	���o�z�%��GiF��e�%/K�����'T/�?�O9TM��9P_�,�A�BQ����"���(92i
"&�`i�����!o���B������3y�nD�4������'%�_�T�Nj�K�n�x�m4��B��1���K��F�?���S�TPhAo�
�o��fL
�P�K�6A��"�8���A� K�Ed�(q<�\�X����A�1S4\Q�@������m��n���i�����G�Z���'_k������@����b6���.�}����Gi%8��us������)dx�Wg��U���i�>��n O~���u������}���i#�Q/�:L;��Af:�����D����qQ��TlY���P���r���[��G��*�����<;�	�p�4,i�J�������`�rT\��J�.���L�����N�������A���`sq��/��A�;5�L`,��s(~	�3z_�j�t�.�_%iO����s^~���3NK� ok����$/���q8�e�njK���:��-iBv���T<���Y<^n�'����,����k����PCo|��cpV����*�b��c��Kwp�����
Q��:�����X�>�k-k������Q��A�9Y�F���~��QO��
��m��������6d�Hv��m�d��m�
�c>]{JW�����E��$������
A�����x�NvL�=��:L�\���Tf��t�DN���9n���yI3��6�k�/�x2�;s!z��EU�o����>
�%�~X�G&��Ct`�E��>��k��BReT��������5�?����_l�@���k5�4T�
odP���$���!~��'����u;%�!������jK��[�����x"��s���>�S�E����|	X�����}���N�������uL�Py��kKnY���
L�s�!-�!���x��,C��S���O��?����OC��N�n���^�
�A�:�f��VL,�	���z\L���E4��_[dsC���'m�c	,=���~����J������4����}B��/~�6��z=h�-�I���k��I\��F�����`��F\��cb�����%|����k����9,m
�����w�P�'+�V�G%k��/<���9[�����E���X^-�k����M������G���8S�bs�[PR��	A	�7�A[���Z{�%5����r�4���Ou$}U�3p���~ne!P�Gb��#N�����.	���c������7��������g/�h�ZU���������?�l2����z4wB/K�:�/N��e�*
S%�7Z�����<�e�T"	a����6u�H���/�.
���%��o�l���	������I��I����-��6:y>�w
�C�wJ���A^�y�������O�"�<��[����
����nG�o�����Ma����E���{OK���Xb7.��h���q
���R�+�JtD��F���/�<�4HA�dg	]���1�J�t���Mvd9:W�<_����
�dX���$j���S'�+l���8?4~���faz�m��,q���YQ`����P�[SG-n��!�vK��4�2��?����[��|��x�]���V��YU�	�'�I�N���]�=!��1�!�8�B�1��H��������Yu)���S�B�<�rW����Z
��I���C8�'�O�\>~&�mv�VM���:k�rD���i<�����a/���k��T���s����9"o��`e�qx�w���1q�,�4���)��C��U�����WM������H���A�e����~D�����P�iW��H "�lUZ��D���?���E�|u)l��x_N'80�>���C�`��~��{�g��%]��j�
sx���*&e�vPul���}��&���.�~P2��)��L�`��u�!�q���#����?X�+�6�B��c�R�fp��H"s�������I�8T]�8<������H����='�[����Tb�)Z�&[����>�������������m�l��6m�u1+�`N�b�ww05��
UTEUl%�w�kU[���!l�?���pn#n��O�0�tX��I��I`'�t�a�t��?O��^|�<(s�B��F���Lj�H�?Rd��6:�_u�,�h�};��52x7��t���q��&P��$�2�K��t�N�{�(��c�����8�	w-7GnB+�=I������
���z��[:*�E'�X��iiz7jR��bT���rt�z��C������/c�#�q�z:Q��v:P++���y��,���(pv�lg��rg/L�N�^��~��oa|������������|�H�y:$���u���YX�Q)��<K-B:��a���xHj�7���_��D��8<��������%�&Y
Yb��3���R/>h���c��l�oQ{����N���Ayq������m����zD~��K�(!�Q�aIY����G��V�FC��n�
�kW��������n�$c��N�3%��p�����U��FC?M���/2rx���
a��+
kj���IS��7��X�������-���F��2Y6���1���\���DZ�g�������������H`��;�p���l:��t���qN�����xH�W�6����dL49��@��h�^F�z����)���Gh���L���#�TPD��u���l?���6FD���+������9�zk�X��V'�u{g?���,`1�|$d��Z;N������?���&�nZ�P�J<����Kv����g�	5M��I�����'h$�m�R�`��k�����{u+����;���*q?�t�.Uq�����Wf��v�g�<$O$tzc,��k�{,�������w#S�.xA���4���|�\�v���U��-�t����[��%�4��H��Hbe��{C�MF�}i(���MH�		�~����7��'�Ix��`��E�.��XE�1:x�V�F+��!9);�Mb
z��k��U%G������c�1g��V�r��Rr����c�N��}$:g�[�'[ly]N%���#%��B�A������&���=�h����CJ
�y�����!w���
2�s�SH{���h�N���g�[���+Y�������wF�M?��k�z�h[E>R��mbKW��)U@4�$L 	� ��,a�JX4fSg�g��Va20������Y@�o�9�i���P}�����������
]�q#���$+�blG�� �TL<��c��-�(fi�����8�h
4M�@
���������4������$X=t��	��>������;�t4����.�Qp_@��m�eE���a� n
��	T;6pST�F��wA�pI�:�����GX���r�Y����IY�����B����V�$�n��M�FC�������4l,�M���4�E�
u:��� N:"NAFCZ?/�����vR��h(������g�90������NbFl2������ze�8/������OV$3X�K���������R��yz�8RR��I�IS��g��/���^��{e�k�+#�=<�3��G,0-l`Ge6_o�q��qeDk���_�_��h�l�W��U���W3���Y���ye�{�����&^H���"�8����Zg��RB�������o�2�M��8�aM>��>}�<�;���2����'�9�=q
&2��s� ��u:R6c"eG�RJ�$�:y�f��{�6���7�����0���g/�B���)?l�I*�j�M��xA����)�{����At}����,�.	Mm�����}�3���K�$HD��a?�O���i����*�5t]�d���3�Rc��E:�34"'��kv���<�������	��JL��5���������%�O�_�n�LK���$���M����}�������]�%{c}���.�[������4�?��U�F�n��@^��?Y<�7I�D}.mC����Y����Td�:�=�����[�e�q���Y�����G�0���z>��p�|��]��x���������(i�������M�m���nCw�Z������g��V��-��h,?��X*�Q T��i?�������I���5�2W:&�O9�)�A<�s
2�����J���9ukb�N���
��xZp��w�w v�����A����t�f����Kll6�s�
OE��j���,
s��]<C�,?��d��s�&K�
�bK����(,��8U�F�������AI
g
��S%I��/�B�YZ����b�����>��x�Q�o��;0�x:��
��������&#)���iXFow!I7���e��}�./>t�h��$#f������~�7]�U�b�k|~L�)�6Q3�A4��,�4�/U�7&'��(������~������"I`a"	��E�#sN���~J�sLJ�M��#�P���|���R����'E���������5��3�?{�����%`�T���$$Z�8�nm!�o;�^���'�]g�
P4j(�q�N�_�T��h��c��|��WZG1����)�5��M���0|
R���	Q%2��kKx�9���FtpV����I����;�C�������8l*�l{�pD���!aS���-����8y4����������y��HI�D���Y�q
#+��c�Y��� ]l6��E)�����W�/��x���@��B>-����������2�q��`�]��/=4�p>�����>�4�:�����80��=���;<������
�Ep�y:6�`f���E���(�r�{�}^|�7y����8��p�;_�}�>���W)a�nR�s��sL4{9��2"���Md�tL<�2�p��td���������
���,f��,������;
���>���<Q��
����6�r��	bj��-2������U;����8(w�6Z/�nfS���k����W���w���T=hF_��oF[+�{
d,�����&|(�dI�~�cx%g
��j� ����yl1OYg�����c����b�{G$��H�)v�,��� \:O~�%������\�����'f:)������T�rPl�p����!~b2�+�DkAA�pZ����\#w�y��+7TpW��u�dln��2���,!d�@�,�vQ�FT	�$����-�p��3��H���0�Ma�M�H^\�T��!�|�`����������;�J�A�U��g���QO���+��O�����D�6���_��ks\�����]�U:aOc��d�$�J�dl�$N!bz"IJ�i�j�$q"���.����]vy	����%��}��<�9�0QQ6�A�!?JH�M"g������z"���]'�5��%��}���l���^�Hr��+1-7���U
Se���A�E�0=����-�.���i��g0{�����-���M��Z�AY��
C3H��d�/hZ�T�!�	���l���d����;�*[��hM��8Y���%n�_�K�D���7,������a$�`d����L~����� ���|�t�[�8$"�������H�o[]�%A"�k �u�k����g��P,G$��'3o,����s��x�=�	v����������I�/�9�1�r��B�'$XE� /o�q����.Z][�+��U>�<����+�
h����"���+�����#�^�t���T��~��1��g�}i
�J�c<(3A�}G����m$h���oZ:��th�������GL$w�"�e-�rN��[����M��E�G�.��x8����a�k@	���o6?~�O~������,H�����9NS'Fv�KG���������N�X)t��d~F�����5�2�����.�:��� ��+0�7d/�D
c,��"�K��)�dbP�����������h�-�X��F�x:�����[����V�sQ��O5���2T��TU�p]����������J��
��d}g�fw�u���gi�M�T������Z�K�Oq&��p�	�6����Z������e�7Y��M���xn�aF�X�S����U5�����x
��H?��mF����Z����7��K�G��5���q��$YB���}4��a;8�,nw�Qw�
� ���-�>BG�"KV�$����v�]`���q��8�9�����I��b�'�`:,��V�n����>��O�@�V9��X�z��Ak5���hko!F��k�������IB��H���%.t!��@Kc�n��P6�-��7��C�@��W2���r�g� /�]�o��Z����������s�����>�?]^��~r~y�?��3�����RV������2��zp����y�3�f?#+�����2U9��FKKWV�nk��V&jw���;e���~�"��b$�+\���9C�2
��d�*�����;h�*��@�x.q�}gc�����O�<��>g0��9Xf���'��Tti��hz��0�x�	�	��N�G���i#�]|��s��6)���E��h�65n���,�	d��[o�m���}��3�r�����1��#����}��� 1=�d
u���F����t���V�&c66W��&m,4�_��Y�3��l3��M ����6���+S��_�����3�S�$y��aa���{c����w���BU����s�<o��"�l`!	%�)4&8��ga�����2�gU��������P����
F���� ��E��1�|K�.���
G�G9�i�%����������l�)�w2r3�#�.��aNe
��"6k�T��|������^��e`t�P�_(a��fh����
eS�2���3������8i$c���e�h�
�y���~�!H��|���:^��R��r7�������/7,��N�A���V������hJ�����g)��&ab��]>�v�K�iy1]������"G���F�}�����SSq�'R_�S�Y�|/}��������������0N��Fg�q$,�@JO9pk��EH�P�=�C�����v�E�w�R_f��-��[u���*���������&}0[���fM{UB���OzbaG�Sg��J�U�:�Di<I�8��lRR�"��2�4�q�!/��~����vl�U�N�q�n�
��pK�K'���'���*������$/,Y�L������R���I �<v�)1�2q�s������B��D���L�-m�O� ����A��=�u���m��kd{����=�5���{����>��lq�|�W:g*p�3%�&���|������e�������tM��X�`E��3a��� �K�+{P(�����q�O��g�
��B��GbI�6��1�L��h��@���2�c�a
�~�Ve�����vl��Bf����c2�~Z��l�m7!i�CfL<e�t}a}nO������u2�-h�e��0����i����']�tf�����9��0(:]nXw���_aR#�*G�K
;K?G��-9�Q3�PiQ�7�Z�������Y����H5�J��\���_��h����x�3�7$����N�2Y2.���26������I�NE�
Tl��2�'Y�[�.3����{� Z�d��7���(�px�����h�>������%���,����6�A6�r�I4��^
[�Tek�����rNdv&bH{���}[|������s����>e��P���H2�r���3P$���`�4�Rd�����)�X��pP(W�)�h(�F+���-�b�x��8"c��i~3T��d,�����JV�]9^c������1K��Y�����gi���F�f��g3N\���hSp�P������2
e���1���~�8g�:n�?YuL<��3^��<�Ks�H30�������O����w������qY��#�1c�<�s�g����	��(	
I���4.Co�o{�[��.�*��!O�V���I������r�k�YB�j�9a��z�����t�g����!��;�sK�����
4�;�Q~NTSJ|R�F���)L���������t`JB��y=�"g�<������E��b���$������:M��S�7���6o�>1(hH2(.;�V����d{�8�����Y���t��*!J����n�$��R!	����������X��M��IF���U�A3���5,�?nB�+2DU�f��9����)�0eq�{�_'��	Kx<ow�l�6��
�>���z�
5T�A��6��iKk���j���G(����x��v�~�?e����t?���]��E
S
G�����.�9Q
[�,��J�����*V��|�W.�ca�(��svS^�E�.H*��������������S&ow&�d
]J�2��I��q��KaL�p�_�*T����lbD_����g��Z��AI�����_��D��8��eA��S�@I��2~F���zVI���)�Y�A�0�S���- "�b��Z!��7��M��^�^���N�A����{���{qV&������/JQ��&�j��b���4�h��fC���Q��I����������f<���
5�x6��R]2,o�V��:����w�.a��dW��DS	f!�AuU���;��'>�\�Oa~�W��5,X�I���+��i�H�y���k�&�m�O���+�����gN�'U98O��q�)	V�qV�#!���FB���q���]���nw ����s�W��������:~>��6�Ura
������<�UW��Q��s������\e(�Bb�]����������2M^�{S0���R
MSpxj�|��}��������X	��d�^�j�A���h�{�g����sT b���Z��TQ�"?�&��[�O�7x��M��}h����ig]q(c�#��z#��Iv�����������
.���M����4����C�T|$n����:k�����*f�:�����	S(������r��[�{�lB��E�$�&Q��!P��A������
�=�^��"���`�����`�2:}��I���RI�.�q�5��?�avJwT���XtT��9�� d	XNS��w	�W�LP+c���aJB�d0;�|]37(�;���s�8(>���S�.���+}�Up]��@�D8�4�#T�v�=��6�^������-{�:_R���*<��XR?�1������$�_x7��f�"�m,.�l}n����g)�_�������31�����l�1
`����������Y�B����I���
�r���g�:A�2��^��}����B��g�{����0OH,��L��������E�D�W�(����W���_��n>�vH�9�o� �~Gg4k$����r�nw�����M������cT����a^Y��������C�*��A�y|']�,r��Y����z&�?�,$��d����r�#=����Dr�i�'���j:
{R�������9�ty}���=��^�s��	]�|k�L��X������4d�@�d:���l��T���20��BQU��^W(�@��a�[
;~l����=��.9������MV�7��:��[�|j��+vR��U�~��vz6		o�d���(;%<qb|Tj�ZB6�������������������3>�t�S�s'�<�H~D����_<�^����nOD���CrZ�mA:g���j���f��6�~�]����8qzY�����q������h��G��v�H2��n�

h1����9�:����-�����|s���
�(�nyT0�9���<�,:���c��J
�BA~��%I~��?3�������n}�!<�| :A-��:E��9�?{	�;J���2)d�o��i�'��@W�$4�1}=�p
|�z�t�q�Z��;w��7����4y��>bD<�}���h�(K�]52�rF���-�����#����T����A�h�Z�����d��H��2N��hT�B������D��GQ�8`y�v�T����!�CD�6!k�TB�y��������
I����g2"�`.Ys���.KH����iS`�6QHc�y��1TD�M������Z���X:u�fu	5�,��u<����g��G�k������b[^~`�E#OFF�e���Hl���.���1�7Pu��������;������PQ>��)����aD��Q����'���V?:Tt-�n�n���S#~�����sS���7��tqw&�
��<�<0������d�z+��]nN�P�wL�ol�z;vm�&=������	/������MO��N�D��M�����`3"d��ErH&�#�r �|�ZK��==m�q8�������i)&��wYF0��_����d���oL7�Hp��IZ�c���X��,�N?Yi�R[�;����h��M�U4�W�+N�f�4�Q�|_�z�C\B7fn��O��{:�hZ����k15_��%�S�>������wX#�j*�H���r2QT��/c�~�*ds�5yM�r�0b��/�"#k��W�w!��W�-z`��1�J�:�&��3�������F��;�BV��7�:C��=�%��k?��7
�����'�V�wT��}���E������q���	����!�������w��w�MO�����j&���������t��5]
�2 �r�)6�4]C�v~��]2&��hU�������K��D[��DDt
���]����u�.�U�R��W)�aHBjg�W�mIK�LX,������oA�����Y9��2�E�x�W�������e�Y�6��<�|��eS��d��n����RXHUM:V��8��������3�q8��)�t�nI�Aq0EU�{�9��l��5���������_m�b�K5o�����p��P��l
n����[�JX4t������d���n)S�q�6�Y��,������=��L��w�4��r���x����@S�CmN�F�li�KAn/�P���=a��$�n�q"��Y2��o�8��]���M}o:�Sas�w��T� #iV�tX�yN��r����R<�>�������?kXXR���r�1O�{W<1(,4��Y��o=��z�}�'p��9J�T3���2�����#��z�!��O��2��ppCu���n4�j{
�������w���	IC0�����>����5h��=�2*��y�s������='����/�DN_�hl65,X-ip�
>U��rd�:���^O��/�(��(3�����9E,�$�C��J���"�!XT�5P`{��e�p��g!�~�/�M�T�bxK��
Y�]2�&�D�:��0/�9��������PoR�a��O�EG�7�F"����a��f���9��&�-�Q���s����:P�����{����-�%G��
��Rg��xX����-������������x��03����3�4��������S����w�~�|�O�I���P6�}��`�W��k�H��3�`�-:.�YL����q��l�Y�����
������8��Ev�0��	t����K��
3E��V$�t�3G;��v:��g���kUF�����Tht�DK��!�UT��MMO�#�l�r�������B�`�c#�G�CY/��`I������]�m���
o]�A����S��^
F> ����[ ���I�#�G�D�B}xt|$i6g)����B5vhs�L<4^myC0�$���������{��]1��y�>o���������i�����
�B�Af�x�c��&�+ST���e\ch����ZF�2C	���7x��:]����n����gI��\��eY�u��#
�����B*��"��[>7������M� �jD�Y���w������|i�J?�L�/���}9��9rUF���W������?����*�8��1;��D���^�a��9l:�C�PQ�����wQ*���H��'l5��"����O���y�M����Q&���TZ>�^$4�}tb���"����=�)B�!��c��t� ��b���8D��-$�)qV*�[7���o�Y���Hj��������7���
����Ia7-��:�[�w����K�'gx_�lw|YN2_C*���kE�L��Oi��'���KVr$,����4F�i�U�t������4N�+JH:\�)���9����D.���|i��@V���n%������U�����*y���%�����|uj��S5^$���6�]�&3&	�$�"�)������u�f����QW���!]���JbG����r�x�/�r��K'Q'��p�P'���.��eq�$���k�,�F:a]������A������7[V�Hi���-�Du�f���?�aL��������Q��@
t��o���n���u�.�����5c���56^i���n|�1T��7��>����6��6����)������8e+���A���Pf�%�c���_�|
�)�j�0���������2�#�:��f�T��'����
��T���`�����
vr��������o[�����@Q`�V����
�"@���8������6��"5����{���m�JQ��"y=P%�,����A��6�1�*1��1�6�/~�%)���� �{���.ZU�$��8��K����K���J���Fk(�+��^�T���Y�����>�u�X���?�erba.�E�9�)����^�O�W�
=��;�V_)��v�	I��	�-F�2t���_T�k��������5I�NT�j~��Y�����S���#��&']4b�5-p���,XaJ��=�0�h�=�ylv��S�<��`��_����������yN�o��sM
i9*�P���dm����t��p�.��v��?�����H���hh����`�t�N.��t4�M�)��D����]��)�G���7/iFX���Iu����P7�[(�19�=���<�!���x�;C��_��I�
�5����%�����y�tGNes�����+�v���y�����0pG,��[f!�
xf=hp�&�C����Mx���#� K_�_��W!����!���We���k��� ���f2�.�otAY�^�LF�"��V� ���hy�������u�x���N"���Q�mK��J@���'J�Lr5r�z�T#L/& (b������������I�}��
PTI���u��1�cf�1+]��:��/	*1qh�z��z~��l������m�g���j����a(��{�����o_/�?*��h�������C������4�5���jt	,4w��Q���f���
�K��YO5���}�#��[u4v��(���7�=x��>���Oi���c�zLA&�iZ�H[��zn��o2,�#�6-����0 N)I������i����
R��i}KS�3� �&K���L}��Lb�O�'���]�r�:b/�t�j��_;&����Ms���������k�]��#�dH�r`�F9[�uV��|�;�c�B�����*��>6�&9g���1[	O�US_#	��U���q�!!���A����NGQg�����.�}S��>
d��N�9sK��Mw'/�x:zu>���x�J:�+8+����;����O���7t���4(���W��7s�;/�V+$�Eo���J�@m�����^�AW}�|T���YQ""6�j��M�U}#���	�}
z
O��Ib��0���Qz���q�xpNNn�ng��tt�t���\�l�%��o��=��J�7��������*���pg� ����7}���m:���a@������V����P~����E�<h:�����D�rxK��K@�\��7������q$�8��~
�e��&��k�� J���O�%j���Ao"�������Xx��i�Rq�F��
f9������F���Wn�So�L81�8gq�te6K(4V���:6���7h3����C�)����=,��3����'u&�����\n,��-���d����G
������=��G�$�J}���+�N��v��y+0����f^�p����
Wq���
t�
z)b���T\t����|��0tG�������Y�i[���&[��lJ�H���i�Al��%<N�&����pd��S��`������V1~�Z��#�IN��_��M�SIi�F�������e���=�����G��9N��j��#A����Wx	��u7�g0��HXH�A�HD��������%	
��:��N�OA����V�@��)�M;kY�U�T�=�S�����=jN�]53�3�!Q>'/(5m��w��@������V�o(������������}c�
:t��'�y?��u�B�6w��]�����<�A��G�KbJ�8'�:l���~f
���5�8eb(]9����E�����Z����p��B�-�69���yg�T�1��/�m�wpT�L'}�|yv;��vC����P�e��R�b1+�3����_���BU�f�qw�x�yT��X(���T���j��C0��������]����Xn�%~����v��BpV�����T���ue���J��Juu��R��7����������/�+����=���Y��S��Sky~(XNWQ�����Dq|���4J�L�C?~�����Z%99"��������%���L���8X����$m��C�![��'o�	����pP�vo#��q@|��X���5�n��j��$��P�p
`��c�6H��*6G�b�T�rP���Y��w�[1�C�0c����f����LBm�t��i�u����?�e�U!I�C��z�^�0�h�=(,�fe�n������7������+��o���5��_�?�Av��B�	�?*���}������_����w"����yD�`�_[+<�`X����>�$XN�*�F�"��Q��T�����������66%x$9�����cV�7O�w,���9��?U���v2Y^��ml��p$�hI�+����*<��2�	I���^������:��(����N���Bj����������2���k?�y��|&�-�
7g�-��]7�\�?�M��1u� ��	���^Qo��>�w�������R.�`4��~8g�u��iF6�<w�_�4,�����wb����QN%�,;��dI�����7T�P�CT%��](C<���8�h\�q/�I�-���&{Sw)����0~�U�z��o��7�B���S��&��v�J	5�ww�?wZ���c8B6z/�C�9��;�������|tE`��k���7�:I����"0{%���q����`=:f����R�r<-|<u���/����Y��UlL����n�M'�U�6Yg��#Y��"��t[x=��EF��c�	w����5[���Ht	,4��d�7�����6w��*`�]P�����MHx+��0���G����t8823����d��qN�cz���Ck���	�n9�����i�	�y���\�_���Oel�#7��V���g�	�����II���Dg]�En�O?��������	���4IG�q?�����BOU�	�G[p
�5����)U��^q���/��|wOL�A�|��d�Z-;����:�������R�v/�s����j��7��]��/d'/�q���YkK��Tn��#5���iG?��H"�9�W1u�I����Z=+��r9)�d+�4|�}#+����N{�AQNf�u�7���}��d~F����==�����3��^<�Is�v�9��:���I-M[�K�Y���&���}%h z26���
�������D$.>��v�����t��0K�}���PL
K��Q	��������.���{�YQ�a���D��#�!�YjN\}���z���x�HWq����?������G��w��g�i������)��)�B�v��c�#�a��JP�>#�H�#��<���V��k��{�;�!���5g�I�'�
J<����)nPElQ����Q�(q^a>�!�zB7����%C�r
5��K��0��8�XHX�fpY�1_SZC&a����x�lb6.:����s{%��3������xZi��f���Q"J1������Hm���d��|���x;�GK������'��3����KN{��e����C.��X�3Lm�.��D����*P.�r���C����5_3�A���������|y_� /�)�1����m�5�s&�
�Z�?����=��l���	i�Tf�I�m�[��J�8J�)iC�4�u�GGC�H�w��e�p�[����N��m�+���Yj���z����UG�WfqZ��E�e��R�	0�[Q�a�=[b��#t�
w�2h�y�WI���I������sy���j�"��+���	v�mw�h��������o[��/����@a���-Aceq������������e�j%sh���0�.�����Oqr���<��-
m�o}G�mrH�a��Y��>�I�c��?�A��0i����&���������j��� �d�y�L�w�����ef�Q�^��9{3��LHg���*�Kc�t.�����&��2����G�7d��$���<]�`��T� R���`z8L�����,���r\po����R:.'���i��������=sLRuy� J�T!�+��H�,?����Y���7�}�C=�50�>?�/�����/�,�)��Fq��%����Fs!�-���k�W+g-Lf�Sq�L�@���7
{V%�sPL���!t[K	o�5_��VK��{�Z��a�{�:��A�:������-�(�L&LN�:��T�@��|�G��g�"R�Yq^��R5�;l�4K=5���i���-a�EG�7�����_<���2^�c~��}����1Y�1������$�&�
����1zfaI���j�S5s�&��G�+oc1ifCY�6{�����IB�sG��o8�
{��L�_��jy)�(�����Al�le�������O�h���_k_6%��`Rg�o�LzGN�����1�������k!3J���0-�c@M�dDWo�;&	l��y����n��,NrGp?�
�Np�&N� Y�G���|Z8����n����'zis[�6�k����1}9���*���t��M��2"��n\ey�D�����m��)3�`�����~����d�H���y2w
0��y���.m?�����p���g-�u*��E���M���Yw�XG'w�J��G�et}���m�M��R��(0�K����,�����{L��(+�*����@w:������sq��Fy�j�G-hQ���N�� Z9��62%I�6�@P�\[�V���\:*G�z���L�IB�Em��&�)���l�H���@r���Q��
"%9��6��ec�5	�@�e���$�_��
��r�S*�B��Vu��fp����gV�L��r|W|�,�j0*��������`&G�w(���tKD4�ob��H&+�^��������6�����*��F��R�������zB��#�w"��M����*C.�7+��g{��K�v�e�#�s&�����@�4��^%��u;���JVKGI���I�R�:b.�F�����	�����&n���:�h�����Fo�Q����+n[jl�RcV5AGJ��pT��|��Bl��$	Y.d�I*{.;gS�������W���p)���2��>-���mDz���\ �7��/W����iI��Vu�*V+�q�Q/w<�)I�?	Yd_�ep�����
����K�����~
����x����{���G]������)4]�.h�w�������<f��DY���&q������HD��e���b0�;��u�����.}�7���JBe���������$�\����)�hLf��o�������T���]������[���.���g��;"�Y%	���{�����/����8�d�&��#�Wf4w<��$��~�{�T��(d�J�G} t�
�]D~�5+��jd(����X��9�RP�`.S�G:��m�����%7,/�jy�+��qY�)��"��|�t�l���������i���Q����
��H��&�o�z{�I:_��$�5�s�3(����Y��������$*���&���Nw��S9][���A?�F9r#�i����-����*�1nV�T_0�H�4]0��SR-bp�;�&��u��K�C�{�N	�O/:�+k�_>����G�Wl<���Z�����Sf2GG]�9=��z�����]�F5�$�����n?.vM<))����	��n�4[��\fx�����s)�W<2tc�8��2vmE�l����dAn��#c���`�b����E�y
P�6��w��?������kt~�#1��~g����6�l��"X�;�KL���pgx���<
�y,���5!5��"�)��WV����qk=����H��@�<�A�eSE�a�b��#���/���i��$a�u*o��������<�
_x�yb_d�Y6����!�z��E��[M�qF7��9�A>	������@�����F���%�J����N>��E�p�b����h�0��<+���1�j4�=>��c��9W#y��$�	�8����Y��+�4�������|�z���)�PI*��v��D�n_���h�����$���)��J-FI2���+���xN�mJZ�3�F�<$������
�J(4��8�����645������)�� }�w�3�J�r(<������zc�i2.#��0���t{�n�xOv��)�hX�o���5��+\��!�a..����������e��&�����:�SJs?�l���E<i=+Gc�f����#�$�W W3W�g41���mJx��$����I��Z��;�)��2�u��30��s?!-BZ����W���M�j� ���
$4>�dP����2���A������E$��*�HR��8y��"�t"�*�����P�T�.�f^�^c��V	�/��!�3C|�f]'�:��/�%�+�/�m�l�����`b]U�;%lE���<'���_�h?���oe'�x��{�dm#N=i#�����V����(�7����V
��~��m�'��1`��xEN
���&���q;i�To�al
�Am���<Y7${�,����D�i����*gdW��}\��5^���J�N
D�a�$Kfc�������W�DV�86?Lf����m��W�x��7%g����7l
��z
#7��U��c"��I�v�
��[�����O�F�3����>��?��O�b�i/��j{}c��D�s�#�����;���cp�@�3����SG�
_2""���a�-tBV��������TP9^��>�~����S��xX����r�'�������4����E�?Tq�)��Nv+����nL��6����5Fw5oZ��K�
�$��m��o{����3�����1b�ic�<�hXid���XT�&�%W\&��%��0�`�M���794�����
c9~%k�1��KOpy�$�6gg�7��w{s#��������c�*�$��:X=���C�#
�����1�l�gro��>`��v�
���Q�7��F�:�2:��^��@��<�������t�����<��bKR���&�H��$�5�����x�R��S����U'�s�:g�qX"��Y�a� [��l��x�����r������c.��L����Z���eI���z*��L���0S��Pu/��5��^�d_�
D[���]�>o�!_���������%��R=Y�)lh��~).�&�:�?s�ug�1L]dk]�����#&Kt�D�s"���jct{�K�����,���:�Ce��������2��
�n�R������v��2<Z&�=��E��tqM%�#��r���=��|���T�j)��&=��V1����&�ye��A`����_�~>������e*����ei�`�����,o����x�lP1����������G�(�l�H?�<��_�K�*��^���
:�Am��E�/��Tss�L����a�l���1L��q�.^V�[!����f=���U
�t�wrX_D��}�7�%{P�e���T�<n�k�����5�Uk,�����'�r�c�
)���[o�}7ye��9��_%����4�~ _�����/�U�6�R���`������R��k����G`���b1[����?����}��)����V����%��Y����W��B��W�������E'�P�#���U�-������,[t4W�V?
��x��{=h��m�[��~�D,E��S��[���gYB���o�0�wB�2�J�
�;��@FE�� �����n��H,�m�����x�hh)����4�C��A��7��=��q+��P;J/����rvu���C�K:��&��w����!�!�����q��Jvv��m�N�V�M��J����
fa�6] {�ta4�8����`.��+��.�h�������YNd���Y
��W�]�d���T��vp����9���$�s��y3�z��������r�K���g���f�H6�>��~��i\9�7�P��7W\)x���6�Y
"����s��
����d����4M��"��9��Wn_��$�!"j&�*7DIhx��A��Yq����*�E����\� ]����7@���@��:���{�6q���2ww�
c�L�c��N��2�Z7�V�,D;q$(�����S��,�fK�so:�5s���L�5RP��3����q+����n�����r7���M����<���S76���K�uW!���J�-F��5~�fPU��Q>h�q6$Z�j�&�0��u{,�l�x�=�����������*KA��9�<J���������R(����R��)4����������/(M�
���E���?�'���`
����K��y��&�$��Dd��^���B#�)�������8@8�[�]���[}��8->Y��,���kV��
���e�	������.�0�
L4t�`p�4vK���i��T��6�R
�^�Je�$4�FC�n�Z�poZA��jRwo��v��q�Ig����0l������y�'�Z#��Xn�E���z����������l�Y�������~j�I����Hy���AB���&�jE����?�g=��A�}n�d��|3�z���,�y�����=������V25q��L�rwr�'Y�2#b�I���h�����`^����~��B�h�.�:>��>N�
�E)YB�m�a�o��>L}��`o�����f��V�M���^!�H����x���[����@��mH2�(�X�����������s�%�(_�M�tT��z{�K>�������
�!�v/��a>_����B��81
��������[�-'
=������4�K�N�n�.�����#�p��2w}������<������;��MkLn��"VGi�&b�'_�<$�&�?�V;TsX�������
���i����)|Q���U�o��;d{��q��h�n���-l�b����R��U�s�
=?�a���;�����S��@�^eS/q��yD�gs���	L�����Q5���lY�j��w�����$+�5��J�B�� e��A�F��z,�a�|&P����H^������44�q�L������~s��l����R��_.�r�R�t�sf�8s[_c��IA^_3��{t�����*�s���O^��6l���$S?R'�G��2�~��o
`�O�Es�>�I����
�gsJY�������x�J����O�APm��
E����/�I<��#�x�"�I_T��EF���XY*P��G�.H����2`�X��d/Ny3��6�=���w�5zOu7;����
�=X�T������#=XF���>,�"�S�#�������V�=�������.�[
�������?w���I�l�9[(����������#>���=<l��~�meV���M7\�1e�X�q�(S��~�s9��-���UM�Q�;���|���K��k�� 	��3�7a~%q����*LgL���&�<�L�
�
X��29����dA�iK��%�N;������/�(�-�s�Q%$b/���=��T���W�X3��<��E����2&�\��m�c�a{~s��X��s�$O�l1]��R�U� {P:��w����k
�%��0W]{���^�w��1G(�_��<\���=���WH���L'GP$�'+���%�����`6W���nTZ6(7+T�9����w��kx���(M�n��u������W	�8}vI�j)���P���&���*��#%�o�mJ�w��1!~��9�1�==��dk��+������""���wd�m]bh0��Q^��V��Z����#��U�����8��dMf-����j6�t�JH��n�����t�����������n-��X�yH�d���!�e|y-�w��%��D�$]�'��M��S���>�����8Y����`�E�n�O���S;����?�'s���a�7��������[8��
���~����6�?�Q(�b�I���R��K����t�����8�T���C����#UH��x���`Ml
�=NJ�Q��[���E���TIh�-T���CU���cU��E%���l��f�rl<�T�Hk�U�Rgr����g���U8��i�9���CU�"�r�����+�� ��-����[�Z�rYKAU���*���X��#ewZj.�~���~���(��AD�F���[���Wr���Jf��Y~�Z_&�y�Q�K������[-���t#���}�2v������0W�b����a&��w��
C����o��9tU_���t���w*�;r�|�zf���/M�z��l�>�HExdj:4i�L��~o"�������-�	�QHM%���E����T~>�P�Fa�}��|��m�e���Q�+7jo�4�
�n�&0�6����I�aN���[�\7�B6"1�
�\���.�lT��"(0����Q�fb�'�������"�o��&�����B=1���a]c�4����n�`����.��j8�xS�a��] Y9}+�H0��p�;�F�����]�����'���GW2\@`{&=-��_��������Q���9���iB�F�)+�YVz���tm��Xn7!�6�o�f�\�����Ni�MSm!KM���ka$�]��5D����wN��k�������w]U����V� 0<W��� ���1]��
�������K��������
�T��j�d����H1k�<N����f����kf-qe��=O��q�n7�st�^��w���c��d��=��w�������<��@�G�o0�����B���t+q� L�4Su���]f:4�(:��&z�UI�,V���������rQ|���\N5�����~��L�������Or-2t-IMl�*�'�0���M����d����v�G�����m�f��-=���5�,�h�FxF���;�v�JZ��)hP�U|\��7��/2���uG5+_��k�6�Y�a��/p+��En�C�I?%����hH��<�p�b���hI`<�t������d]��xx�)�����z���8��9�����f((�
���(�?�������m	O��7}���W�y��z`��_8��6�������<�a*�X�./�C��r��P?�l�!�?������CJ��O�o*&��u�;���
��s�0B<K�y,��Mr�$�)����j�;3�������]��=�M�$PD�,���vM��2H4�pX����E�u��LK�<��M`?�3t ;+�WX_�t�$iTae�	�.��%��9sV��F�T.�b�D���N�^��}�<�������%	�v,�=����>��Hz��I��[���~o	���]���i`��m�`�r5l
Sj	�C[��z�a:�oq�"?�����JP<���b6��!U�����Um�4�U�
^f�zE��w����2�g����O/h�a���I��l�bXh,%V������C�Q?Y-,�)<��W��Y���x��(�p\����"�(�u��A?g��GN�g��������
LGc��0H3���X���d���{G��8��|g��=4����i�s��a�m�P���h��������u��N>�?�gH�x�����G6��D���0��g�2'�b����C7���rl�C��H�$�]r��#�
��G����N8���6�m��+�4���Ng�1�f8��A��iB@%k|'���������������������!a�x_�SIm�L�=<�h	��$�fA�W����d����r��F+O���I�QG������"������?�WI�6F6be!�I�B����71E�~L��1P����� ������y���������AV;�f���xbCN�����lI��t:��4�������
9�*m1�r�K�u!G����yFf�\�����W�s="���m������C7N����7����u*k2>�����[�����@�d+%��'u^I�����i��y����3v��<0
������[3���"k]k������?���.K�A�[88<�i�v���"X�7��n�w��&P��7l��os�k"���<&��!?1�Z�_��fa��c��[���|~M�$
����Gl��6���J��rs9zU���{�	���(}�����<!��x����z��e!�I�!QA���6&}��62��p��R����������s�k;��V��Y������g�-0����������9��c��cz�k��L�K��y�����T�H�!�Q���	���r������
dED��^������ih&�&�C��_�M�F����;Y|�e������p�"�(��18/����Y�D�.3j��{�z��j���H�;~����&'���	���h��K�->h�Pi��6�Jv��_���9GE�B2_�t�����$���I�P,2ukj��1E�S��q�l�J��4�����jCU 6�������$��_	Y~%���Lo��|j,i�hv�n3���0+C��I�Q�����m^DI�5�Mk/�39��Az���
���5$Y��0C��$+"�h,��;���X�����m���)�hns�CA��+�c9}Y0�6����XIa�������`W��tQ��8Tq,��y6_�����U�{���4dD��Dp��{��l��C�JPD�Ms��R7��0��v��
����`�S����
L<|�z_�Eu��D��'�rvY(�w��*k�M�E��@�����H�B�*[�:�#�����#�����������SM:R�E�@����<t�N$jO3�?	8����s�=��\N����5z�����w�R���J�����cf����.oa���������1]��z<*|�-�����4�<
Ie������]n`L`�)�h����^Lu�\������s����YO�-g���f��}��o�-R��bi����l���}�,l�(����y���$��.I�5nw?g�.��rA7�MK�n�s���hx�z%o<��
��f�Irm������B��z�W�E���C��`�y�����HB�g�=v�f4IE�e�yC�����vfQ'g^��
�4���"���~`I�I�����;�.*L�P����}����M���O��6����b�$�Cl��4������s/RY?�m�$I���|[��hL)�h�����vbj�)w
�45I��W{�]���I��y|���2^�-$m]8-�#�!�������Z:`I a!�������v�i��_��${�Y�G�)%b�!�Z?���U��E�(Ici/��I�CD����$���YA��9-=6J����$VUHTm�f}�e�z�'���[��:���~B�P�G$)e������!��5��A)������R��z�K����?���|��v�����*�Q��A��*���82Q9{�t���V�6L�_�����Jv�:H�F��IQ�|kI��A�kL9Y������8X��Mz������J�����.o'�Y�?j��������M��u�u��n�'[�&�k�8����2�~�����M8zE��38�6~���)gZ��+�\�o����q�Jn?J�|c��%�0b�������u�$$����� I�CT>���mk��I��}7&�o�3�#��c���[���|��o�g�����?RV'�8�o-K>%pL,g��pN����VQ�W���7��H�p���l��LKlTJ8�RS�s����/�e:>�	o����w}VKR��q=�k��f�xKK,49������G9"���N���"#�9c��NC���<>u@����)�;��
��/bmP�p${���l�o8��I��+���	�W���_��n>�vH%a8�����
���]������	4�&�[�����aG�$#$Y
�����L�t��d5�Q���%���8,x��YwDRp�L����'��)��0��F��h�m�2f[�b�P��^�e��N��T-�yI�={Gli�1�)�6��i�fC�e	�M6T�#����]F���~H�Q	
O��v=g�N.s��rR����>�6k�%�y�K5&���+��s{N���<7�](���q���J��.G�"��0���E��"�d�=�Vi*;�W����Q����T��;���|���B�_�h?c,7�.����$�N����������1:A9_�Am��#T�����f�/��{�i"��������'$Un�*1�yl�T�M�Jr��X���(�r������d�3XUd�z�C�d�5��\B������`���8:� y'��b-������-�9����O��~ ��Y
$�&]�����!��UVp��K��Cx��8�r���j��G#��0�`��*��&vFk��I����!�2�[$��2���o��a^��D���|��F,}y�r����R��PZ�q���,/�N���}y���<@eU����c�\�����e�o�\Q������2�� o^ "�NEC�4���x�$�#	@����I����s�N4��L@�o�1em"$
��PA�d8����.��Utt$z��Wh�Et�G+����M���i�J.���)�$�rO����;R>�B)�eS����+|�l�������(!��������R7��;KU�����2�����r5��b#�R>��1e%0��	<���f	�����jM�q����)�H����o�\O�G�'�@}����+2�Yt�-;P�]�V����a^3e��Mf���/d'/�O�r�RP��n�r�<�6���.�6������������~;j��������������X��CQ�&9S�ta����i������ W������!��d^����@�7
k�����0p�m,"�����JXD�����-k,"����n�\wt1�O�����s����T�#s������B:2��1V��5��tD�X##�
_����GI
:�*�����>.�c��7%+����f�~��o[��r��
���f�$��G�,�C�*�����$��k��A���i`�_�s)
?�P���Y��x�.�h�?_�pfFD�s0"{���i�W�
k
����DS��80�%�|��Z�
w��+�����H~�N�,N��R
T�V�c�5��q�$����<��k��,M_��&R�D��r���/��\P%��0]���V���
K0���%p��?m��\�o�2eU�U��)�"��B���u!��2��]�z�	e*.��
�d�NQ�^Q�L�[� OGY�@��6���8|�G�j��D���?~K�c<z)�Ca"�G�r�G��F����	��������]����v���OK��U��!�8�����	�R.v�)?�'_���qn
�X2>��jR��L!��8z�{��������+PN�BO��<�����`"���/�dN�{�S���*+���;R�g���ot�H��}D~�_�a��f%�2�1��6��aK�����1�'�i��z������8������+$Tg�?J��C��`3����amsd3O����O�r�d��d(�T���16�+m����OC?F����d� b�Z�(�	�k������"�=���R��
GJ�H<��a�<-���][��[�f�m����hkr��d���
�.7�����*e�pVUN �������b
O���\{��p��qu�1��?w��/|�\;�M:���Q��p{���W*_	}�6�� S6����+����
��x��l������O��{��|�|.��4�r���,S'��s���V[%��t�3�eb�������''��Z��<5�<��	���du�/g��w�|G�U������d��������>��{;��������>�}�gq���f�V�|&�Q�����s�x���Sd�3�+��	�����_������F��#GKI	����������9����&�W��i{~�A�loN!1��]�����d�$pD��)������m�qo���<Llj�����B��gx��0��%���������.�#r��Px�H�����1����i8����U8*`S��^=K�v7�R��h��q?�rG�XopSN��r{w����L�@��>}��8Yj�/g�D�������k�&~���(
������&W2`
A��7����o��zy�Q���������C}�L���.��We���aG4�\<���)u�$h�D��{��������e(�_n^�����K�j����~J�����=gcX��Y����4���y���Br�]�	��5�����������3Bx�V�@���F'A5{9��@8��`
�f�h�E
�������?���B5LJ��i"G;f tAw�p�
��
�)eLYo��OZ?��1p94�h���YM��(��!�7����e���1J-�^x���)�*�&k�lc��Y�]�we���Bl>�#[f�
�!�u
Y�&a�]�=���Kv��n
:�P��}�����~=��E6)���]_�`77*����g�����^>�������c+W�t#��G�|V���vl��a5���>cW4�dA��k�mK��&XS�v����Ao-m�X���%���/"
�U��d�W{�w��u�������ZI�X��������5u\B����1q�����l���"����k��2��6���W�������7�����Cg���/?Y<T3��q�#�"D�m��Cc��K}���R:j�x�8H�������j�d,�cJW�'?�&��5m�Y�Wlv��2'#��10��	�U��o$V|���\D�g�h|��0n���g���fi�5����
Y~�w�/��;����+���G�V��1��_����z+���aR��l�O�/�n��c�'��4;@�)���0����V(�26��Q�?nA���1@������aV��iv�
����t�^���;;%�@�DYW�'{�:<:<�����'a��so�p��L&t���|K>[���3@g�"Z����3�{:
:
t2O�Bk�N'���<+h�wl�~�r�2�����d�)e��2�����u ��r�90z\V���������"��y��8�L�����(5����V�����>���a��u\��;��.���.��TE���n�4�I��/5����Xn��E���P��y9���~������v-��n��<@��?)k��\���xK�EG��L0w�%u���f`���m���nO�T���0�/f��S�����R�(�%f(P�y"���m�|[v��=N�F���=�ot���A;�AQo�����������������G�Re���V��'�����y�72�H�������W��	CoV��i��+$]F��zdg�03C ��"�U8M�r �C65o]�%7E�
EH��A���ju�	�
a]��.,�e�����1It�T��U����B������cq
{�r[���2e0]�������� z�9�EN�"%,M��C����j��OH���P:�U�t��A!�K}��_n�$���f�.1�e�����?��Ob[���.�U�k`j��I�_�����������R�G-�i<(�?���������nj ]�W���6oI���3W����t����1w�4�k���`����kS�����XTXk��S�����`���55>:�&{�+���zY���a|&6pI�*����&�&�*i������(a����D�$X������MYU�t�R���9���:��g��
}��t���d�C�j�k��#�|�pd0M�
�"R����� �80Y!�@��
��4f1�Jy����KJX��Y�| ��oZ�'GC{*���RK�aSe�C���,!�*{�=4����bBj����T�����*���RxSgO�3{�7�������t�m�o;2��A��O�K��n?��6�TE� pQ�R�=��56���%pQSn��pJj�nHV+�0��JiP�@�+�����/~F��D���a&��x�<,��6=�MB�������N�.������odQ���&���Jl;k
,C���1g!e�����:�R�Ug��gH�<l��=y�������g�n���J������[?Y�:����R�O�!����S�ccj��x�����J�Y](:���W��%�.q�/����f�D^�f�@�~�x3�Q�r��OTo&[���i|�P��y�;��d������~�7X� ]�3����G�<C��R�TY��W�VT��1�"�[�R����F�'cg{v�j������<�?��#��U���D��^�3D�$o/H~�����y�|��9.�&�Ba��1'd��@4�O������2@�"��9�����vp��(5X��������	��+?�����$��=��
e��'���?C��/���d~� u�m����x�h��_����:1�kE�_B�g3)|[��N�j&q�8M��A��s|��+?{�B���r����e�K��jE�,��������<�0$�!R�T��z��^b����6T��Z������4]�`(K�H[�Sg��I��)�����*�F�<^�������p���?eGe(?��I�M��#jjf�������%�=}�#i�Ef�T����K9���"pX��Qw*N��76P�Q7{�"��m�����w���56q�r�N��;�O$�H��u*W���E���8O����[J���G�����H����1�(wXQ�/�/x�p�&)�I���R���U�gH�?L�����@������ ,��[��O��
�1 �9|�_���D��bd O����0��v�����/�
�������>����0}6`����������6���?(�!�lf��'s������{}E�nH5��	�2��ZOMtp���^	&��L�����m6$������TtOh���� ��f*�7��^l�4x"�����p�g�TsO��� [����_�C2���H��{�����j�	=gnk%�!�}S��B�o��z�s�b�v_�����������O�Q��z-T�C25�?��.��e7Z�C4��?��j����w����HF������g�������`Y��������NC�o�^��/+��L������Z<�#�gj_h?/�Hk��O��b'p+�d���|��]1��<������o����_��\�s��
�G�}��-���#��4h��_��C4��@��"-[�'��ah����q��+Y��X~���=1{��E�E��~�~��
��RV?�y������c���T:�j�1����������������?����U��������`U��v������������J�)C0�y(��l��vB���o[�w�����&~��(�`H����Bz�F��a��:��7?{�������������i|��L�NK}��5����so��fj|
�S�`j�Hh*���.zaX@����#��<���?e�����j
�m�N�_1DSwG�2�y��8#�����<�#Q%%T���2lKH:�����s{��gRL��m+��H��X>e���M��k��1�7w�hZ�/�r{��I2��hVj
��\d�Z������R�[��_0$s�����K����76���:�;�j�����2\s�����R����;nl��;�������F���R����ec=^��>c���k�s��+�h���C���_0$s�L�hz���3�����w@j������&z�]�}�0�]4���
p�O���&������o7���7�W�e�����x=�����Z-1��0�d����X��zd�K�l��I�����L��2ls�M{z�X����;o������G������VG���������pj���%X>e��>������?d����1��������R�_�W~���7���0�+�h���3
�r�_i������T�b����iY��H�+�h�����a��/�/���4�3�P�'��3�2g��M�?`8�������N��a�{c����o��'fJFam�7��33��R�����c&evkq�d���
�����e���R�x�W�r%���;��O��/�c��=q~ub~�1,��=����_���S�G�\�������,��`O�
Ws5����8����X.�zB�y�G����1,W~�2'P�)*2DL��1+lUB��,�1G��r~��?����(qD���'��Z<��f��������hu]�\�;�k�����3X���d������{v��j���8�E�����M-��1G��y~��!H)��K��#Z4?��fo�.���Y~��,{ ����[�'gI���X��%�����.< _��p$��(n���{����s��(���w�U#����J�����X��Od��S�n��=9/��!;�C���Y�F~K���e���Y�E~;~MB���e��53U~��,;$��5����������7��?�;r�������q-;%�+�g�IX�n�����)G��������0�[~��,;&�=?��`���g�[s������7��!Y.�����}�����wqD[��@�[��+�X�]�����V-R�s�c��
y�.c��G���A�K���;TZ��#Z�I~{M6j��O8�ew�w�z��j���-;#�S�1*��s������N��&��#YvD~���-�G�`�7�r�����`�nc(b�a��8�eo�7��������-���X������(��8�e���S��(��wn��8�e��w�_������aR��������_D����>kn���8�e��7��F�c���;�����mK~����<���t�-�"�y�(J�*���������HHB�$h���E��//H �c�tG���9��{��9�����Z��#z�;�7�����[���G�w��mTl6�D�w�[{~��Z�8��N�[�h~���*�o�7''UaC)0U�P��K����I�y�a-�������<�K�w��nem�k�������  $�H�w�_������\�-qh�������B�������E�Wh��
���S����c�q�q���9����]�����,�I�2w�o�
��Q#z�;�������"����~|Q��3�6�����{}�P���XF��c��
{��(}�����aeZ��"z�;�oOeY���}���7n	��e4���N��_B�dM���a�[w�����9��=�������`�h����1<7dE}��#��������(F�����b��Q�.���>�`�Z��"z�G���jF�������Z��}���{�E��vu�~����������]��%����sww:�g�'E������6��(F���L�����R��3�I�w�!�F�(��;Ko�+��~H3�Dq����^���U�b�[�%����s���ikrkl��~����UW(c�N�gt�~�N������5�u�����y�
�u�?�'e����uk�����&�kz'��f�2�D�q'�� �o8
�h���U��T�N�w����Y��d�>�N�=�V��:<�K]N�{�9����0�uQ��A���\	h����Aw�h������K0�����>������^F}���8��W����Y{+US�q�����	�*����HF����N��K?���=���;�W��M���m��;����*q������j���#���<�K\kt'�v�#�YF�����S���u�3�D?rg��H���,�I]�
-f)^C�Z���p��b�;o�*����5���o�b%�<�K�'�
��$�L}3�����(����/��Rt��e4���|�]�Q�&�vyF��]�S`�K$M�c��^�|��C#SR�3�6����7��^s"qA]�w^c�SO�l�p�C��%p�+R����Z��4�<f�P}��k����y\kW3V�e-�O8/}����4
D�w'���9�2�Q Z�;�W5��8��-�����-��p�C�hw��z}v8�j�4k".�&��fT��|�����H�x��q�C�gw�oB�C�
�-_3������z���;�N��f�<�Q�B���&�eU��y�F�pw�����G1jDk�l����U�(F�h���������Q%��;�o�Mh8VT��&�'�I�a��9���������g�T;D�L��w��dz�+�e-���{�i�x��^�������;�[�>_��K�S��)�p�$���>�����S�(�J_`~��3�T��wN�|��/y��c����������#%�o�3�a�I���5�O��}U��A��Q#z�;����y-G0JD�q'���|�H���"�o���~�*z��1zD�iN�u<dV�eh-�l��}3����4�F���D�V~sGNn'��������%�gm*Q�Gn
���
�?�7�/�~I�R��?�i��,�
�(}�����*���b������m�����b�������;Y/ E�w�S�N�l��<�K��_��y�lF��'�L~R��B�!%�O��x��"=�Q&z�;��	��5�(R������=�b����������y��GK1jD���O�;�}��#��;��c��~�gm�����z����L�5�h}����x��d@������;���g*)�]�������\��K4�D_r��u�y��z�G���AZ��SLp4�J����l1I1�-��R�>�����C3�D����qD��e4������ !J$�H��+���0��D����|�Av�>A������;���$y�^#N�/���y�aQ���4�U�]s�}�$f�j�F��Q���n��*}HO-*`m�_]}����#���v���b�}�Q��K^�%n/���V�����]��0=	-%�U��}
f����VF�L�M�D��R���|'��T�Nx
\|�-
Q�}��&z��X�����[=��#�����6ga;�s�����M���i���U��9���l�S_4<����}��F��y����Z���&f����/=��g}��'�F�
���L��hn2}�a�����Pa`��~%b����7���o�u��� ��:���er�W
{�6e
m��4�D�X���K�DX,�I�m��(�?d�>�hac�4����8��yvN�8u�F�#�&X{�'"zPC3�Dp�7��S���Yz6<�K�}��=���,�I��}�����&7f����{l�D?|�&�
���9���_��4s����H�,�I�-\����$��"���V�:�RV�H�q�7�C��&���T������
v������G�j!K�m~���o��l�O�d�D�uz����k��������,i������$���^��S����K6���94������6}U��HF���o�~!�x������y����$�3�o~���A/���0!�������q������=�n|q��>�W�$����}��/*A�y)�}�w_�;�8y�j����|A��c����i%Z�	�Q'�r�b_loU�����)��'���?;�~��,b]���.��/��l_��1��D�L=�p����]���Pz�9Ey,��%a�5�D�u^&6� Fx�)��2�{���WLAw��7������I6�@���`��?�ce�����4�N���m~�����%7�'H������J�T��<�K��w�>����*����	?��&NE*,A�Q"�h�*����;4�J=t��R>.���LwI��\�~)�����MhF��u�����TC0JD�r^)!����ywI��\��b
�j�B
�(������4W�6*DOp>(���o2&Nb�0ZD�w�'�<@�Kk~(��ec(�2tI��\�o����k#-�h��y�L��*C��:4�J=�S�mv��r������71�L�*�J�2�D?hbI�U�5v��a�B��ybo��0��2�����V��l���*�/�������B��$�G�����b�X&>=/��2��r�|P�l����}��%���I��fm��8��g�o\+7�D���|����a�������f?��B�a�������jr��5�F����r����F��-:q��HG!�h}���P3���D�L����a�3�6��r�<Q����9��&!f$
yF��5M�5��RB��<�K��������>�������V�d@2�D�q>(��G���|����R�����F�=N�	/Z�Q#����L�>1f����F��[����[T[�xF��_��u�X�����L�M�0���]XT�r��&��r��������e4�^�|R���V&&�~�I$�H�'��b�����Q#z�Us��Qm����-��}����A���(��������Zz�`�!��R�8:���L9f�������O���)+�Y(g��>�h}���4����i�2�Dr>%
�����5	O��O���|��	�T�N�����%13�MZ�#���}�o9��&
w-* E�9������
�C3�D/s�%�����d����F��g���:=e��������e4�>�)��j��iK����a�K�C��7e������Uw�U�6���~��}��U�W���j�=d�s�h�ON����/�����c�������
�@��$��0����1z������9u�D{D�L<����<^���Z[
a2|�����wo����W���(�:����������0�����&6�N5�a���wj)���!����:������8W�3�����ms�^�M{I�C3����LV���*������O��)T#�P��Er�n���W)��'����Y)���1zDOr���Q�/����T�r�mUsIh���o9�N2c��_�*����������R�~IP�:���W2�$�{������y�IlT������l"��DO����l8�N��d6�/�����K�6�0��j��2J���+I6$+�wY�Q��f4���}�� z���	�rI���{j��zb1X�����h9b�,��v�������d����K[�_O��?X)�!���]-X��~���Z,Y��E�������U���t1�.�.9���p���z<�$���$�[	�I[o�&��x�R���~��VB�s���d8-�#U�*�P%&H����c�P�	V�hmE�[�=Y��J���t������&a]��n�o�%'�P���m6_s
L��&����+�SvH�WY[��qA�g�_g�H�������hZ�z���F�� H�����t��%�Q�LHh����P�`��O�[��`���p���Z��k�}�J@<�m������Nr�����d�L4j���|�g�s����8d�`��=�]D��Ft+������"��nM��v�������Ft��`O����n9�Gp������G)�d�G����=�Y}��/���r9�����Q�FA�>�u��i��!��^��	Z��T�E�y��`�L���Vn�e@�_���[�=���&s���e�=���t�B~}����a�����#��_��������`g��f�s8�Dr������j��k��������`#D��+��F��x>��&�������`2���z���D��D�����h:�R��Z��r��B��M'C��0�qK��N{pa�j7<U���9=`����/������=��D5��Pk��@h�%j����a�8X�r>�������5X�����_��Z9�}|����������Ac�]��|���G$�d�h��-]5�u����m��[W��{��u(������vLPq�����{�6
������0@^\k�L�Nca��}|������R������������+�=�?^��%j�$�'Z�����d<��)�#�5g]�
m2�E����Z����u�[b���f��
k9���f��:�����M����t��
�a
fkV��t=���a������������G��vC���F���:{jS��v2j�8��uYt��.�w�y<C��H����_���N�����]��7B��w�u�����c��-��N�"1��}�G_����gjF��S��e�"�f��@�-�1�^�'�������]����M�g�}����\-��\�.��
�B�����a����>�lWv]cx�n���M�����>�lWvUc��&��}2�R����I���h��l?W�d�e�\�oT��	s5B�� ��f�><���%_����tM�k�^����K�����U{�``�������2��I�m�s������� ��o��j��W�����B�b��UDiD�m����;�[^�R��������o��f�-i���&WW�kI����%���+k��L;��������W��x2�gf�6�\}���h�u4�K�qh�����a����y������^.��0�������������].m����um����2���3��	��a2\��x�������E�)[i.=~��#��4�?�����RtY�����Y�������vp��:$�t?� 5u�B��d9~��>�����,�O6�G��_��P@i}���H��+��J��]-	n�Kh�$�tI��}����<�T�1^}�6����ni@�C�����/�|����x��AI3�7~��o��B��s'���n`���.S�n��?F�>�����YtY��f���k����{��8��_f������#���'��o�Z������yr�*Qr���[�<�
YJ���e�n��B��y����cc�^fw#}2}?M���
���������T,P�����g���*��%�����>�%�d-�K��9�tr4��{k&^Zo�?�GK��
((gNL[!�Fc�u{�6=��5��*�wNl=���4�Qk9���E���B���f)�NhG���,%��I�����~��[�9A)&��R�Wm[���G w_o������<�2}M��GC�p�!��j����T�k:e{T�|������x�x@���h]��>#�!��n=6�����1����h���N����k|���b���A�k���u��m��A���uT�
���~a��h ��������To�����\?T�i.]�o�&�^����I�+���N��e/�B;��+���A�
n�����
Cey�3<����6
�%�g��r��[�,��[��_�����)t}kM����L����'�����CH*(Gk�u)����;��K%Z��)�3�1@I����X��|rPY~�������^����z}���_~�A/#��wyj�|r?E
;��K��������.{4z1��N|
{�E����G/-�Z�nMW���z�.���)���{oV��~'��J�]Gq��#B����W��=�f>�Uv���4�*���*��z�RH�P'��J��=�/�Av9����H��;i�U�~7�w�fr�ji���^���������&h%�3]��I�����������������[B��`��-U�S����^�F����T�����xv3���=�S}���[���{	]�������@sy7��-��D�L��+��Mk���UI+R����]��p2X��!I+R=��*P-j�(I�,�I���O���`:��-I��5�����Y���	�5G�Q=�����r`ts��=�V�z�'��#����'je�}�����'Z������[��������E��O�����x�$�H��O~_b<|���z�'��.�!G�Q}����V�?�G������5�>���C����p9^�M)`jm�/]����j���j=��R�Z��Yo���&���EH��D�xs�K
����`�J����Z���xz�O���7~_R_4[��s�hZ��Uo���*o=E�{V�~�Z���i|w����d�D_�x�1����Y.���bjm��]��
�Y�.Kk�����@s=�.&�n��i]�����������Z��ao�f������x%�Z��_o��%/X�j�&���O��o�6r+(�������e�9�0���m�p�O�.�s�5��L\������1��h�}���l��YQ��0y�D�&.���@?NS�z��O\���A���(�h��=��������*� 3f�F�(.�q�e�o	���C�&.� &�x�`��mW�ge��4v�,���#uH�,�ozzb��S�����m�+MP�;Z�J\\^4�#�y`�����G!:t����(��a������~I���K������}�>Z�G6��K���W7"��C���K�����|k_��	.�]\\~��b�$��q����EY���YT]Sd`��x���������w��"kwx��q������������wa?����NfY�r��}������:D`
�x���|��2��3N�$�\>�@��Xn����u����������e&��,!��y���vQ��=�����j��OO�5P�-����V������E������������!���d�Z#�?��!�����l�`�h����
Oq�]"���og��N}X�v��� �]t����X�� ;���@�����zLdy�)�������Td���A��\>	�D>��������4d�p��'+��!���^n�S�1�5<d����_^�KD�����p����d
���h�1�YC>|��nT�=*��|�
����Iz�M����d|xV�����G����O�IZ��]�U�=���Z��M�����q�C�����t
��h�������]�r���^1��}�V�������#Op�>��>�>u[��8�SkS}���S�"^��j}�W}t�*v�_�t)��oUU�yn�<`�p����^v���,R�K��To���hb��IZ��yW�������O��T���c�d���T��/�,����^��q~����=��gCV��
����ik�=}'�Z������Cy����H�:�w�	�(��:?R;C!'��;i+����2X�Y�E����~��Qy��.����jG��e
��>�ZP�DG-�w�h�~jZSuLp.o��<���nh�����;y P?k�v�R>�����|�V�@����	���C5������g�tX�V�9�&��f��f�{{4P��"Q��	��5H���r<�������O�fl��A�x���;y�S?[SG
'���`��;y�S�[�k;^��~'�{�gck��(�mm�\2N��;}t��C�L��_��N��������o��mH��>�|�UO���1����N�����7_uP���91!��G�w���d2��#�����$�G�w�d����o�����Z`������9�p>�
��
���@�\���,�����Z��h=��;���5��C�{{��R��?D��D�{�0���W�	���!���
���_x��D�g��$�=���th9fT#���v���{��C���R��x��Q���xb�xogr���O��
��A1M�)q;�{I8����S���iD�����q=�����V_����Wj����G-�~�e��fd����bK�wu/��&�	�����
��s�*IR����eD/7#x��H�����"�?O]�L����o$�i���� ��:�}�$b��]24�2	�����UD������^7~��k��]�'s�M������2��cT	"�G?��Om!�����t_�`����J��a�k>��Tq1Q�"�Y�p;�8�s��$[��O���B
���+#s'���CRAy��v�)�)������N
��EsA)�#�n)1R�rA��+�0�p�����~����������n�����"��Vj��C���J?^���,I�����+��d=Z6>�:��B�$EcW#�t���)��@���Xuq�A~zGd@M%��p��`�8��{��~�SAZ��J�#aL��T�A
����mB��M=/A;8N@7��o/����F��L>
�X>��?'_b�M���w�����h�9��\�q||���h�g�c��Q?�1������T��F�T���cl����j�Y;z�J��t�^���w�2E��"|1�C������'��G���>��'Op������z�d�P"6(�:L��(*�!�n�Wu�.��~���xK�[�U���F�t�L����^6��hp#
;�;�$^��o�i�]m��M^�����9���'�����i��i���_Bl����������J6��7���~�a1X�)���_���>���=��=���: h����]��M�fvw��e8$u�����M��.Z����^S�PM@���M���X����E+��/2DD5
����>���v�AI���4r�$���~�,$�d�c�r���mB���TX&��
]�����O��]��<�q� ������h���6����'�(��.����+��������~�R�l2�"9o_\�{��3��������2o�������z�����!6hv�'�F.�:�Y[��v9�7���"+�)t�����U#���T}���Y�R��,����Gj;6�V��^�E�=fe	��0	H���!�(��c��O�	���;�ht�yg=�5{�X�1B�C�iW�?:lE��CW�{I�f>M�0�� ���^X���\wH*Y�ol��������B�W%���S�������V�o�3�JRR��g~U{�9�p�!��|�
�����>������^�Z������]9�_��X����y�f����z��hBY{���W�x����9}�"f2���_qt���������?���������z��J5�V�������/���3Y�e���Y���	��������(�C�����������Ve�&T�^POE5�����K(��z�����XA�m�+B�,������P�����o���UJ�x0�������|S�� 2R��aM;�/������9��H����&6{arW�U��0��Kt]i@*	������k%��b�?�4_H��8V����x5�� +�2F���r���������(������j� ?-*)��^��8��J�i
������5��N���c�FQ(���������4��u9���,=
b
�y�-qSO����������`&��������3%�G�{�\VV�	;���u������(����_����E�^�`�L�X��T��3etV���bjafmQ�tj0%�JlRG�X(���[+|NO�P���y:d�oQ�3�p���8��ff~~z�'g�w����m����(VP3����5�|mZ=�uk
IiM[`,���F�Y����d�R?�,^Od�d����nZ�{�"-�=�5-�_	�lN��\;�Qqr�����P���m��"R��������&@�~E4,��+��b������|+0{�q���)d�Jx����k�x�n��M����r=���R>�cr�%������"�gX�C�wj��c�{6�������	1�8F�����a�%ro'����]�T��y
7s�l�w~X. ���Z���v�X�����1_����5�`�#��T@��]#�����#V&hQ;I�����=%S����:-*�h��;NaN����^b��!�B�L~?��!
*�L���{Tf�����*�?B��o�B>.�B�b�����$�����>y��v��*����.�	����ia������t[�Y����_R�N��s$?5
������I�d|~M�^zl7������:l�=�qAC�������4�@f�l�M�+�l	>����k��PX��'����#T�!��F�+��P! 0�r�����KZ�����rP��O���,fQ;(��l{�����065<�v7"���!����"hL����v���
=�����W����9��.}�v:�7�G�87f�&����9[�)i��,6�.��_��Rg�2	������kqF%=1��}������k��g�����kJPP��;�M=,�������p5��](������T�`f��sb6���@\]��k�_��3�np>1 ?�g�J��4����3�4�X-S������>��v-���ev��x���Ger����V>f�'U���3����������'X�����X?�����y�
,�d�����u���b�(���!�������	����?1N�
*�Ox�.'f��+R<���rA\U�&��3����);�e��7��6��O#Y���=\T����$d�+���b�hX:�aT�hQ�#����Y��`�V��9����*���B���-s�e:���OA�1�sOA�&��YP�aq�XP�G[ ��q�$�x0�P8s�-��y�@JP����	�o�R3�:������g�'HgP��%?���:'�bZO{���!%�sF�r��
���z��VM��*��a������l�V�v�?�'I�x.O!#�4*���	Wy�rk$��J4��
���[/\��p�����n��9IwzO�vN'�P�G���f����g�+9�x��9����n
�0��t�
���������8���d���6+��^����c�Q3�����r�w�/dD}#��
8��
�>�lBXG����vw���&�R`�m��9
u9L�p��~���#q+B��o��Yv�F}���0��K8%g�^���%��gq���N+Yf�J�	��cvR�"�t�Z���vb vW�$oQ�nm���	�`K&uc��0��8�e�N�Z��-2_�������"r�����9��"������\-�2��D<��f�����s{��8��`n�����������Pb��{p�;`J���g����zeJ�C�������E5G�BRI�C�E���;5\��B#���kW����1kQ ��pj��nF���3��O,�@&}�q����q�1?p�@3��*F
d�������$ p��74q��8����3�hQa����j��}��p@z�(�gq�N��!�2�1z�$�����|�Y=U��{��+��s6���~�N)_�]��3�Hj@�f���NJ}@�@{$Io� h�~�cT<���l��=.�fO�w\���T*f93�Sn�%�J�wib����	����,�2<7t9j��?�$�=��������X�OR%:�����I��Hj�B�CZ+2�^�
�2��r5��Y�/��k���[sv��L�����E�s��"�	��l�J�BK�vi�>�'�-�XE�&HbL��4}�T����$�
;DQ7=1�R$�����r>KV�M����3�iB���}w��i/dl��pn^�6gf3����.��`nW��pZ�����\�
�����V�c��f���#T	��N���M�p�D��-�4SR~=0F�E�)���������ef�0��N����W��X+��8����<2
���Z�����;q5�}���T�j��X�������l-�RQ{LQY�H�Og�
���e��!C��0BA�Q� +_8K#�J��T)������Gs�����r#L��(F��E�H�f~��P�7hz�o���;l����Y�f�/B������@el�j�-�&`;w"�8b��Dq����V%h����]����X/�a`yR�EQ������<M+�zI�8��.�����B^�y��I����*�^�#Zl
�iw����	r]�l�J����A!ORHr���;?���8n�2�R�&��5��� f�G��e�4�N	c�I�|
�2�^�#|���-~|Hcr�2�sJu�~`��h�*)��������c�(c!�^�H�����,1&�>���M�:��uU�������&qwTR��ndT�Sn�����N�kq�b����l�Q��P��O�
��I����l��Q�������Z��v�!�������L��]�=q��E�b�A�.�M$N,��b�`��%VK�r��f�mQ��m���8�ZA�
(�=~���K	�Q�o����zy��8!CV���Ob��m��x�gq��z6�iv�z��G �������j��<������d( `k�e1(����Ca����qO����[8��^�����5���m���k{iQ-�2�4V���x��L�B�/m\|F)d`�����{m�
B?��hsc���p��Z�i�MPF�GbO5����1��BWs�T�������Z����f�����bw6j?�qBF�����t]�[Y��Eh���&����z�U��$�6OVj���#cH{�i
`(c}V�NO�u���&=�2�S8k�3-aWTH���8u@eVj�Zy)�0�czt�W�!���0�?�(Acr��f�B���8������T�����syP+%�2����S���Y�������@�K�A�yo�*vXl���Z��/�0�����8W��vA�=����2^�Ca�N��)B��+4L7��e��[*���>����Q�-����T�r�R#4��ij��1a�/y%��caX�A���o^�XM{{�8l�r�M�~';�����������H���V\�Y������D5����	L��(�Y���M_�f��o�"TzX�ji�d��vPd>����3�8��U�Hw	��i�K��}_|WX�)��(K7�7�iI�_
�t����
~-�R+�yS�J!<�a�������E����Ua�+��w�(�r��<�/�H����%����>A
��\������v���6��|���L%r
����Z6��
�6J��2!�1q8%�2���&%�A
$������q��-6m�ql3�+H�f���07,���[���L��;B���/b�n�G&y�
5owG���}l�Eu8�vd+tJ[�����e�sC�n!W����x�V���\qxf,�@�Fgx���85�iV=��!�aQkv\�����t�Nf���Z����X�V���Q��]qr!Q��MFkY����K��
��P�%|���:��X�kU��{����wH�%�^Q�����[��j5�~�Q�#b����D�@RE
tJ.����J��o�V3�a-���������}��D�g~+�*�sb��M�C��{r@l1&���s�������%���w�}��5��*���`
��K�^�r+��v���bRj��|�U�������|�������@4�QV���b���`W��B���c��(=�o�}��`���Z��3"qK�!��@>���z2��%��L�'�������v]`��T����Q3��-��&{�C��`<h1)5=�(���u	�@�_@L����
��%�&%��������>��\�90�o`F#-��v�G�@���U!U@b6�������I
�������\��On�Z�\��w��U�1�O�{�C��/:��6���>�(��!LJf�����|w�ZL�.o5�.&#��a�J��x=L��U�p���|;�)��HV�0�YJ��|�����h �m��Y��Y�Q�������N#�i���k~@sJ1i���&%�Z�IM�K
0��8�&�j-tB
�t�k�o��Q+�*����(��>��2
�(�uS��������g�����D��;FiW�
J�+Q� �LO'�g��[i��H��!��� Y-5��+�;�Qu�Nu"��=�K�L�w���r8R�85E
�$5L�I���k��Q��&h��>B3��3�y�3/�EI�L��6�%e2l�r��@��(=����Z���s|*E���3v��J�~��Pj�������#i�3�i�8�@8-;N0����ia�j x���}���z��}�>�5��)�SI�����{���[z����$�`�@���(�C`���(i����w�����s���"��P:'N�l x���x�^1&���d���(���9E
����|�,G�A�e�X�%��H���2B},��r��R�����+ e��Z4N��7���h7beN�
cj�n1x���*��n <[d%8�n &����I�Y^�,��7k���F
���CB��k�M	�@-Wzy���w��p��1�$�&r	#�r�yW��j����������C�z}�Mw��A�����.�%�����8l��EN�������
��n�3]�5���iY�������0�Y��e���8����Et�63��ND���sJ��tjb��p��v�y������Y�G��
2=y0���<�,�������p������c�H�O�m1>�UQR5����v:�!���8\�Y�}[��r��l0�#��/y:���-
�I�Z��h �/����X�w�,t��)��aX��UwA�%���c���O�"8'&��B���N�T�����.>-�)8Q�!�T�`����wl��%��g���|~}&����U������M���!\[Dk������V[�^[�T_Nt>i�	�5���#���9���^���,�b����zlY��+��r����p�*^A�a��P���Q�|B<Be�'����;!/wQy���.�\fB^f8/���*RG�O��3tX��m��w#��}KB������8r���Qz������Hc��v�S	R�l��p��	x�Hw�i�
>,i0.���,
.�<���a��_��|z�%�4���n9�G����2
�}��@lO���)�{���D�#l6���<Z	�����~�����*�`�'����SY���������k���)u�	1Q92����O����-�������D�������fL6�����rN.iR���jD��$^���H��V����	Hq�7���������~M�hM�O���|��9\�D<Lf'H[�_�'�/�R�����d8����g��5F��T'q8�r;_�i��y
�6^Q��G�1N>�.�s��������_�2�����G������9����%@�v�I������	kh1�Z�|���SI�S]b-�9T��l�_�;q��c�+P,�c�ya����t*t�r��R;�m��_H[���m��mT��!:�e0�N�SY����B(��$�����\/��Xa�p�en4�ZH�u&}3��?f������<�>�m���Ij��i7*�50��?����|�=�R6����uan�T
!N��vK��**�1{L�������l���t*�4�QA�����,�C5G�!�=)����w8�e?*S?�4����1�q|�U(��I8�#��#t���!��a�M���K�"������H��oU����F�(�������Bz:��2��9�^fA)��5��	��]�[5�o�����P�w]|)�{>�%�����{ �~2��V�-�����p-��^��>�� �~5�R�cSfk��`l������Q2�_��81jlev-��"G{�G*��*d��4K�sI�h1����'.���9�r�eE
������;�mU|`�k ���,�;:�i�����n9����f���PG$#�$��(�����2����8d�s�����!Gxpg�dR!]���Q���6~x����9#=��'�>�F~�h
�~W(�e�1]��5���`�`Ac
zc������
	p$3���Z��@�������8Jh�����*{"�
:�a�������}��Q;<�=t^��-��t�=��TOR%@-E����e=�����L�A�^}��6����|���V�YC:Z� L�/�c��G_��
>��^�������(����j4
���-��M����V�%������� }
��_�'����j�S�KeW���[�;���}z@>��\-��\��t�B#�YspF�N|�UP��
n��=y<���j�&Q�}"��V�Q�=�L�Uq.�H�=
�up2�cH�e���������AZ��U�R���}����)�ys�C@:��i�DH:�I�F�>��������x8�R_�
�(�{�s�@C�QYf����P�2��i����79�w��mQ���
r����+�k�����*/�8��]�`��:~���s1�<k*3h�J[�>�����h���)���F�Z� E�i����`B�|�����j.���L����e�U\h���-��<;HhW���k]=���g7������S|��B�<��(?E������L
����E��Ln�=���^~�yy����*l1E�5<��y5|�C��(�0T�-(`A������3����h5W;G��I������H�S�]/�SJ=
	�U�<���
y����*�������a=��Q}��!L(��=�w��������
��<�#���e�+j�����z��A�[���_�I������
9��a�;���k������	��Ld�G���;��)
$�M3���y�����x��H�T�����������d|��,,�N?���)c_�i'�?�p�-(�6+0�PX����������h�u4��p�eHJ>'*Oj�>��e8�yc�<^U���jQv�1H�*=�6>i���l\����n��P�l��]�Nb^-B^�������l���<7�����V�S��d���=��@�|��e��D�#}�j�
��j��
�=���_��y��p�����0�z���`��e��5�6��r���W;tO�������A�<��Q� ��<6�w�������D|�"��H�W'�����E���i�',�
���#_��E�!�1Fv=fZ��M��
�>�����iP9���@�eE�A
0��]N 5��l)��gx�C�9si�����������}���P�(��X#��
#&���,��$�����A��?#��������xc�����A(�TG����k��C�y(H���3J��/��'7���=��Ct+j��@1��A����	`v�_eu��&'#q�����S���C�-(|��w���	iQ���%y�� E�M�}ND�����=�P�������)#�����21��
�xG�o�<����s����.��zU|�LJ�Sle`�.Q��'>�[��o1��Y��[��F���w����w`�o 8O��2+&Xu������t�8�Y[���I����������43so�G����l92�%B�=k�/_�2_�:���b���4V�Q��2a[Q����CQ%��\e�X���"�x+������������|��Y�Ll���c�B��K`����J��w3�p��@L+�g��	Y�I�G*t�x.+���6�Z�@�����(n���l��t������rIiW������KAZO�A{dTsn1���J9�G���u���q����0�L,��k�W\-������6q��'�7l��2�E�O<�/�*�t���ns��K�q��H���[W���P���'��!��NS���q����%��$���G%���
��QI�fIz0��UGW�2$15�R��"������5I,3r��(�d�B�f�K{;_�1�{�y�D>CPd�4fs�k�vA�$��[�Uvt]U�a��F0�I����g��yu�[�m.�����!&�%�QY�r>��R��E��7�r�b!�WN�UN�&g���8R�k�[�9Im��?����Fs��0!�Y��x���b.�����b�\�M���`v7�Ay���t<Cn�B�_��_����_����/q	�����������/
���x�'/��	�+\��X�����H�l��Ch���_:�S�����d9�t�v�>�i�����-)O��4t���@\��������4����H3�H�s*����D
r��{`�R�����~1��sr�C�������<�!��!U���X��a���;�{5���k�=}���(���dkEF��rwBf9rh.p�r�S_ L���I��i�yj���^��ZB�8w��[�CBLj��Xw5���G���b��yJ��U4�Tr8s�r���="�t������2����$ �����&euV]�>�vLM�����A_P��k�1��9/��"+��t��z������1}���L��vX���>��A��`x�o�;#	�5��*�{V�G�F�?A��OXv(zc�s�8�j .������4���4�9�aaY\!��2���c�<�vD{b���t��S�t�?����<�='�W(�� �@��<�2}M��GC�����YNVu@V�G�4��N�h�f�OR����J���-7���(��|�oz��xo��&����
K1��K_�{�j�EY�i7q�a���5��|���� J�LU�9�y�RY)<��g��@(mS��wH�n9�_�H�u2�.�0W)Jo5�.��G+Jq9�L���$��8��sh8q_<ZSf�>����@�e0��j7Bm$"��3{����������u(x\��J^��vF �-*(NT.<PHo�mo������=��vn�(��_cb|�UNZ�r<��O����x�&
�+10f;���4�$R1+��	MU�q��|���Y����)��e��x(3�@O��:1����Q�
�Q9;PH�%�H��w��
G?�GAZ���l�B����v�����!��:���?�,��8�YF_s�X��;L��32�[�8�0%���@LZn�	`V�|�Q`Z���
�����0'�8��z�����8�6|�8d��4������q�5�88Z���)+�ez8�`����1��y�"o.�W��!�$�@a���q������g�E�i�&��{,8�sk�Wy�16�aP�������2������A�=���d��(�>�"f��������Hb����?���GY�$k'xN��<���x�@��������
>�+�g��rE�:�2x��_����0��Yya���&��5&������x���\kX�T��{%��jR^�%����h���L�!�lp�����1=�K��nX��P�.J	W���s����P
�A0'�g����A��H�h��e?�8�pMWfz0?��G�-fO��=�����V�J2G�U2�?�)�{�&i��-Gw�I�.E���n�>**,�s�,�%��z9��g���ZC����J
�����{B\V�>�=��5��f*A��j7���z@>��eHJ0�B��3��G���2�H���UTQ��K���,�	��/:��j�wwd�.�&i����&�R����XE�R��r4��o+.�p��E��RY��$M��eJ����/,caAc2������k���nd��kI��t��NX���b8��C�A�-�9����t;��'��h�!(-������qIE����{��G��L�>a��I�z��=J�]V�TT�_��''C��C������j�y4`��TF��fC&/
CR��^
������V�Z��zBa$�����Y6���\eF���Z���8��r0[���
����Z��!r��^i����R'�DQ�fl&�y��b���e�.CTZ���	�i�8���NG���y?f:X,�C�KP�'kv��/�<��m*.r��@J����GN
�b������:�{����0@I�������7��E��~���n�6r�u>�a_����b�(��/9y�E��&88��Q���8��
���!0:��be<��2���>?�*�tD[��������B�QYf'A'`H������P�\g��(���i|A�D�([����K��p��p�(�Z���eJ�*��K��n
��p�j�����a�2���/�.����$��%U��0���EYl��)k�"F���������W�p��"��_�
�=���e�m�L��B� �����a���0��?�?���@��u���|R?O>N�R-["S�5���&���\����APi�7�s���G���6�����Z�l'-M<��:���$V��S���4Fst���.s*�Y��*��R��X�b�U�$}�����>!��hIR���:������}N\��\�$���<����&iy���&f���e��|���xVS����0��2>����� �@�8��0�yF<��$�����IZD�K��Q�-����c1��"N��1�1��U�����s������,B�K�%�}���u|���Y���ZV[�%g]���w���4�R�_&��!{-�:��P�-y�w����!Cu���rLa�8�2����D�l�������-��AjX�AJ�6
:|Y��*�O#gYI����pb��O�S����s1�$k���N��C��6�L���Bj�v�E�CP,�������<qK��4+ECK����? �C������tJy,��|�=����������b�&
��H���?-�����&��NP�A)5���c��s�N���SKS������L������h0�37�p�P<�C� ����v��
��BKT2A%����ntT�4�r�r���O9���k�oz��9v���Q�pq��tE��>���M�
<��f��/��)�X�Ab����4���Bi���7J�e�4�5PP��T��r�!)���2J�!)M����s*j9L��bbj���U�C����tJ��t��s����(xM�o��WYZ����2���oj��"��0���2���/��`�
��z�/-�6�~OZ���O�����k��{��kW�����H	x��0_"5A���c� ��o��7&�Nu���h���G���E�B�X�X,�S���Ct�g�?��,���_��=����Z��	���������h�~�����q�v��o������t:��>�4���['n��1���F+8���ee	Ux �
�����c3k�C����%���~!Dvm \~�a8�b����{�-y}�H�AH@:�22~��3���������Z���q�����~pO��s�a��<���p/�%���t��/$
���� �OI�8R1���
���pE�
=I�������'������G)�����G�h��������6��*���m����#[��J]cIA���e�������X�?���n������%���g`{�����^�g:�������uXb��<g*���H���f<��9�"�����0X�?�%�2/��D�8Q,8;'o�<d�r6�+�Sb�����/�`�������B�/���G?��p��{��BI� �g<��'2C��m�4���Wd����|�$���>�����B�-#,�p����=���|z����(��O����2��+�K|i��H�9=%8_>��LD�Q���&�>z'�����9����z��t��W�����?�]%����������u'��4n� KR,����O�{�}Qe���Dn�|�����H#�����x��/�}yp.A��U'��x���Q�
9^F��T��3���r��)B������S����kMO�����DnQHJ���R�@,��P���ga��~�~��`�����&�{ �"��sb���l-����i]v�(���Ju����Yx�6o���`���k�_��=[�5���O�3*��u�[��Z����5�����F#0��� ��?m8KB�v���cQWi���m�b�mBU)o�p�&����������X�.�����`�<e��emj1~�(d� �u��F��,Gu����q��k1�:?����[C8mm$��|+����"����yh�
k����t��z
�M���rOG�	qQ�<��X�*t�t�R0������Z���3�P���`���pF&���f��s����}x�-����S���B��kD.�H��p;V����3|���Xk��<�h�+�$��w�o���;��S�l}`�f��N�O��5sj���h &�9�!M`����W���@�O�k������:8�%���N?<+<��|�Jx07^�������OMU�+S�	qj1��:�	���P@/	�ux��}+����c[����G�y0�C�oO���_W��N�
UOcU�R=��vk>Z�v�����<R�v����p��t���}������	Gr�13y�n����\f�q�DM���#�uy>l��E�D1s6B��:�����pOS/9�4cA+k�@Z��Q�U��h|�����R�q�\
>e6<��_�9�v�)[�_E5�a@��h=���R����f��*����LC�u����~��C�u�#�$����=�mVm�o�2C^M�;���zW��E�gh���~�	�!x��C19[��.
�.[��z6ny��������������vO����
c���Kui�
jw����g`��!0���}d�m��j��w��-�v�dr�����-�g�|���
�Z���vO[L=����@�o
�W������� n/G�����*�:<P����������Dee�����p�Z�d�C�c��������	=�E��3�s�wo�Ucu.Q\B��F?�D� H�4�|�q��g�d1X�	��L�G���I���Q�R"�������z��bE(�h�=
����v�Z���2���J{.���B��p,�n����q��S1)���3��t;.	]�����m%
~�-��&K��9�z(������C�����k�8�����T�������P5�k�'9C����i��v���p�pC?H�@9�o*K9�9p�H�#vqi��0��|�uz�����3P��ay��'`�����A;�j�O�#4 \as�N�{�����>�������Mv�[v��'2%�"[,"W�w��U�+��y�o �2��9B�R�{�y���4\c����w��T�|Jo*-{���6cA��7�b�x]�sW�ywJ9+���=��oOgh���(��a�)0�C����hq=�#��=J��j=XR+�%Bk8�N��X��P[�'m���V����s��.����dD?HJ�~��iOo@��],Gj�"��������l��W�!��tvo��f��Y��@�
g��%;���WB�y"W�O�*��������m�Fo�h�S�����:�9�:��2�L|��� �����5��5#U����#�v'hs�~���]�c�UF���f�G��>�,���H�������u!�a�����3��G�	��c�E��I�J���C����D�W:s(��W4����I� �Vnc�H�4����n���9�kJ����r��uHI�"h<
�_-h���A���6�[~?m���;�0�knjT���85�3�K�V��8�o�@����Z��#���~���S������p�q�K�9��24w��m�m� ���!�
�%M6��-���E,��mHg�����>�w�UAn�����:e�lS%(uH�����<��}��=���y�V�G�`��h��+c�����X��p�G%��Dm.
�K*��kN��Hj��_F���Ly��6i��N�|
�����)q���^�����k�;1���mm�����?���f�W�?1���A-R�b��HM����U�[?`�jy��7�i�i1���������t���EO�oj�N"0�s���G�\�!A����e�6�v�BZ}e
Q�G���`���;�M)��g���	#����`�����4-�jk�c;L�C�n���j��j|7��q�)��8�K�_�a{�������D��4�����2?g�-��]h��	�?!�����`�?p#���,����a{��1�Ng�.�u�� ��
X�"c��!M2BievLK��Q���6gx�G��+Kw:�
����>a�k�g�}�
�C�l��N����C�W���h �
�^���8���=��N��e�^
����]2��I���b<���19V���:��v����(�\d���]���i8Jn��8���/����t��j^i������\u#R3�c��A�^�(L�C���-C��[��s����{3+��s)�GQ��
�?:
�G6`'��z�"��5�n��C�����A�v*:wy�W
��ekK�IcV[���HY���a�t-7(_����iS�G��{D~�X�_����9��O<���0����3S�^�������,����|�3~�_����v9Z}��
G���L�G(��,��~���?��)���|�$
�~�g{��v�����o�7~zd�o^��|���P}�� |*���P{��
}<��p����D��|�W(^�i���f���������Jm)�,���0����"n`�Iwcd�Y��	[�b��w��j���@\���_Z~�-��@�J}E��%��	@���K�!����������!���n������r&�btfY�����IHo������9������s���>�foF���A�N���M�l]
� z,hQ����w���tB
q&_d8,�w����`��CD�O�@��?�4��d���1|4�k�4�-5�)W�Q=(����PA�N���<z��zK�P6jJ�+��L��4�����,)�+e�R�G��J4!hy�Wk����nt�����w�R~�L���"�rp��*z�zzLh�5D��z��6�����0�|�w;_��s��?E~0��C\(����57\�����������B^�*�m� �N;Vgs.y�����y����^c6 �~�>dFJz��p��V�����G��d�'&�!�a�M���'}n�-�p�],��P�	�z��up��=V��M2���s��$z�>�V�� ����Z[����%D���u��Y#l��b�C�����g$�b�*�iO\�����tHG[
�WN�����S�6���`���U
qn7a_�@;����<�%`:
��y�~�_���)H���|�r���^�z^?!G]"�/����pXc:����I�:j���Y5z�Q#l��3�>��+0�
���^'���G�z�f{����E��6E��Mj�lH�'uUZ"���DU�8P��W��%|n�C�3m�W�C&'Y���~�'S�����}R�>�1��$���r`IC�;Z��'��Im1X���|���Y����>2�6w��K��o=��G*jS�o��X�GT��QFa�VY����O`t>�/*��g����������	N�f�\QDFw��3~��������������3o[48�zfr��������N�\��%����<:���K�o���ve~��r����E5X�<�����������l�av�1}���{k4�/����V�I�n�A������qAg�����F�k�+�cF)��i���b!e��D�/B�KtoF�V����a�I�c0'����F�x ��-r���x�7_��t@����>Sk�E���y�bH���'S�����^'n������bx������A0�1GIk�=SSKU��;X?�Yz�N��H4��<Q�n$M�%*�����O5�(�
��4�\���E�g&;��L��@���� �cZ�{E��g��IZUT(�b��aZ	��u^���)���P��K���G��������}��t��Q�E��d��[�cV��X)��Kc��CT���M�����I�/"l����/�Y�%?iS}��@|�a�>1EB���Xb���*�aR��3�4�x�Z���FD�`���������R��.?��L�a����.�s����Xl_KK��,Z�I��}���]��92\w��^V�XH�����
x��(B�i#��Q�������Qb�����[�� r9�(�b�MI=Ti.�`�����u{�O�I$�!�ll���X���R}��7���(���z������&�]��_w�}�#����uk��
����'�w� �!�%
F��R��ZL���d�X&j��y�w[��"��4^o�����!������;��6��hPfY��c���J<�������������l���������mC������*���2��{���h �v��{�-��0��H#�.
���!x�c:d��r���p�K��j�k0f�R����5O�7
��=��r��*��y �^X�u�[!��^��9���mN��[��~��9��
}���p���k�
������)�u�t��R����=n�N�.������8VQKN�Do�I�T����	l=1��g���_������-��Bm0T���t������\�������^���a��fl4W3ka�o�?//H/�d���\5��{�	����2��0�8>f��a��`����([��J�CE��x�d����U���9Iw�j^
��_�q�|�:��R�jD6G�4=s�~�@�n�R-�d?�@��p6a�e#����59����@��Qp�$��1�ZgT�54-����>�?�VVd���a ���jI����d�C�K�1��=�D��ZX�x)tI�+�.�Qz�v�kbo�K��K#�X���R�\Q�Z�k[�u�����������WF[�7�O�.��P��"=
��>��9�I�{�^�Q���,q2]��3�Cm��
e���A�����P���9p��-�Sz�1����2
*�Z�?�e��+y�K��$$ �����ug�1��jC�IZ�d����/� �Hd��}�9y ,�c���w;iP��
�i�@\Z|��Gq��^+�	
pl���AWn �N������<P>=i?P�]������tqz �����)��r� �����~�z�ru������U����N��!W���ec}�j]���5����bj���p�`�L��)�H���A�������Wh~��QO���C��bZ�d��vI1��vLvI\Ai�iI� ��sR�mNMf�������$F�BoNz�
F��4�I�|��X�
2�����B�@�~W�NTQ��K'������;���5�34����~���<�3��9K��ur>�Xv�+�]����k�#�1��p^e^�"5W�K�����!�W���h�<?��zL?�� -��g� /!.�rAf|�c��7����>�|��=���aI:>v��������&���iV=[�%&A���B�!(e�+DbdV��+P�����s�U����$�u���IH������(�T�Y�.)�i��
\	���'����e�����l���(Y����|N����h}��v{����|{�G�Z����y�V�OT�H�!x���k��R���yn�=A�:(�[�G+�.S��#��E���y�|����<�Ooz++�2p����?��QFf��gA`�q6'�J�#M�z��U$P�
$��t,���0�����-
�3�����5����8�l
3*!K�[~Lt�DWbA����J�'����z��agXnnmi&f�Pe>��������n������ ��*��X������G�_�!�"Z�Xc���Ag����C�{"���^�A���[k��U}#o�������O�\�����D��#	
���$�}�����L_�\���/��b�
r����G�=
�������2��4�j��������#�s�tW�7S=K��Am�c ��	���Me��QR�1�dk����P�e������=ZO
��a��r?q��O�3�^��2{Rm�4�0�W��4��[^�k��&����r6���6���b(���e!g��z�Nu���h��O��x=��4 ����������$e�c��DY5?���CZ������&�xn`^�o,�4K�$�n���N��1�Y\��n����5�Z�n�KU'Z�5<E�+�uk |������*��A�G5g~N����� �6u����@(�~�|�� ���E��\'{�j�{��Z-ux&.*F&��<S=���������
"���|��x*%R�`9�-�]��z�������?��)��l5:�*j2
Go4���Z��z-������A��%[�~���>~Mz�!m&R����IY"B�oG��)7��;!�md�[[}�)8�qo�~�K{b������L�]�����lb��p\��WL��0,���bN�t��VV��Y�;���%�}b�	�	����|���O{���`[���-�L�@�����y1�!�_E-B"|y�A�����-���g�F�|�P���*lG*����{w:G�(li>�7���?'�m�2��e�z6W�����Q�����8^C��%[���x�.��N�����/���D�g����'2��B��~���y��KJ}k�G?������qo��0����8��?��0���$�aox>%��Q}���]�,�J
����U�>O���AG�!WqA��n�8��y1t�N���2t��p�6y�����jo�!��PH��+e:��i��r.�M�� ���8R1�����[^������������:C	pa�����!�����L:�TN��b2����tz2�a��cR��q
1���w�gb;�s=�q�`�@R{�9�n�t������9����S��t�g6����aj];?�����0������+�F����M
p
$�&�]�
�5=�7_��U�'��z(���zh������l�C����f�T�&�$����������-{�!G��7�����
����m �����O�^���>���YY��.����wT��XV�{Ub-�|��7k�mF��u�)���'q�������(�tb����hh�5 #$
���c�������U>�y������}8�\������B�����F5���r{A���I^k�(��|�".�����F�E�������m
o�F����lc?��jD(���8��kv�l���1�#���7O�Q,.Gs���p��������G��y����i�@8~������C�%�|���bLj�j��������:���;����"���,����I��9�z�����n4w���b-m|r�0�i��(Y�}��Q�k�������.CYnA���1:`@u�t�+�(-�*n���p
gU��H��1\f|J���e�JL��G*f�G������ON���������GA��t|�tX6C
���-p���i$�������}���0��=6�R#����tw�N@�a�����%T��OU��g�-�������@(��B��CP�Y���k�:��#T(R�Z��Ly��;�Sb���6Z
�����\�q��4� K\������v�LP��>�)�\�b8��������L��������z(l�u�
�p`AUnl�9��+p��:tCl�����a8Z4\j�hAx�P���j ����/��9?�S{K�eY��z���n�����UQ&y��@���E<����Q�p����>e!���T��������nH��?���
iX��������'�(������|��`�f����`�-���s
�\|����9�cO����*�C�t���Bi��xP�
k��V@U�����~�i����TbY�1�9Y�9��H�\h%R����}3L-��O��Q������u�G9Xa����,��\�J���W�����LzX-����"����q��r���]W���:�,��s�B.pQtH�E3����st�J48fo`l-{�O9}^�b�'���#���D
a���&�(\�|�^�)m�q���uI�������dN���P�Y�D���o�j����I�����R�k�D��i��G*��;���zb���)O}����<��M�������~5�2����$Qo6�c�w�h�)*�>���%�:�WE��#�-G���h6d�Z��7�/����TL��>�����9�.�Y��^J��vN�\��0>�\���������>�{�s� N
�zHOj?��	�[zn)�'�I����v�G}��p����]�(��]d��C�Zb�oA�����H��J�����Q<�dQ� qzf5^Z�a�e��CT3�0��%;����k�+�[�!	��(Y���|$�����4/~�+�����	���@h����@��y���j(�v�eI����z�����8���g�9�1���O��������������	����;�f0�G�!����GU���o�������,����
-��'���t�\Ciq�RU���o1.��	r����0s�lO�w���~�z�/.�k�7�!��n~�&;mt>���%r9�����U}�%���B%���epy{1� K5���Ozx�k�K��� o�8H�/�E~��DUD��`����>�m�~8��F��	���o����-����V1q���y&���8c���!L�0�6PL�oJV��>���yW����@!g��r��AOYl����.�)���c�������U�Ru��������
��~T���O��C���,\��x<�6
$�e^h�Q�Ov���-��Nw����v+j�P)�M�Hx�XY�9�Gl@�>d��8U�&=e�kB���$�m�}�����XE1�
i6��j1��<����+V��!
]J�������(6�k����Q����N��C��A�O��E�m�
�j��yB��>)&O�7v8l�mvg]s���a�(-�b#iYN���_H;JL�V�D"e�&1z�dX�LQ�Q����!*q\�e�n���p�hs2Ab��bbs.��?������>��9%|����/��$Fo@�<����� ���%��i�X
���a��[�N���x��
5�B		����Y!��*��~���`�tx.s#�g��$�z�<Q��x�j��m��~�#-*]"�[���9�x�]�IZ���G��I��>=AK� ��������-����~��L^K�0d��4�W�=
��]>_}N��A��U��J�1�:�N`-��k�z�L���B/`�y����!�|�
�%p;<��h�7F~ �u0K
����lSe[m�%w���&��vZl�oBC����41-v����l�}����s2Fk���,���`����v�YI�g�P?��]D�KW%M�����*��fw���*ad����*B~�:$No�2R-��������WGSHO�Xz����4���P;�`���2A)m�T�'��XB��{��	���I���H�OP�g��IH@:�<&6Nx�&���.K�5�.CR��';>�(��p����?���AU���X}i�[1n�]E�7{ �T�$���!���G�@I����	Z���2��������������
���t�M�15���� �92�s��=A�1��$��k;�6���r�����e0J���o�%`���WF&���x�O�$x���3��Y
X����I��2z�J�E�Z �1��D�fT������F�#���aA����s���1wj:�@�Els�?���2
�+�>U�g�g���cK�L>=����n��|��3�^yG`tn����\�^x!�����G}��6��I�QDF�k�h�=V�"�H&�<��re�*F�Kb�������m�G���J������?��2����<Z(�0ZG�����S,F���*u��B��Wt\����o�r��4.��K�JN���~�����.4���<����g6�����B���aq�ilL�D�����wv����$h�������F�?y8�$����]�H�,����O�E%�s:<&g��Ig�A�MY�N6�/F�Ro��,���t�m��X�b�������6��@a5������(c�F����[��1�:Z��~�C�����:�����gT�xz<W��t�qqW�
"��"$�-TS���a1���>R�d���&��*�(H�T�����7��p�������(�� ��4����cm(���%$ym�I��Y�'	��O��3:��eq����\&��k6����NK�	E	q���b��N�	os9)�I�n��8��sv�gT�C��5�Q�G]�����������3R!��J�?��Hb�J@�K����(����*���<-�����$U����=�Q���k�dO�
�4�;��4I���xqLP\nL�0���+x�4�%�P^E8,>W0?9��2��������[��~�ro7�s?xz*�G6��c@�'C�|�,��#c����T6;�C�!��
��E�RXH�\B{eo��,	���m����X�}��m�5!��c�y�%�mA%]v?��:�R��D�}t�8��xm	>���x��E���!0J����D`��|�T�;��=e`�������Q�����I1&
,�
�S�J�J��z,����3�-�U���R�`BN��6��P�]"���K���Ik�*�i-��nU�[�70��-��,��d��w������[L�W���UT��.���M���-��F�Z�~�4<�����F���2����jd�##Q�H�\+b��C�|�~� �-�R��L����!
:LO��)��;NG���E��"�L�,��{>�y�����K�bO�c�P8c�9�X>,������mp��E���m��]w�G�.0���|����z9���l���O&�0 F�?�����W�:�������|p�;I.l�
��%;�c�3�����h��e�:�|>j34��`����g��)^�*��/
@���l����h�U�h,32�F���I�Ta�u�xcS��Jw���e�����u�_�K1i��k�SL�;<�
vx�rZ#��?���W������n�R�O�������);F��?���~6�a.%9���(~hv��p��c�9�4���
����3�>�=:��������h)��/G"!.�R	q�4�L� ����ry�T&���J�A+��X�D#
nu���Dz<�C��S��/v:�Iiu��F�RL��
e��,�3�#`k{F�V3�����,9�v���jh ����~���l�N%������-�O����	�N<�!���\x�2���Bm�!�=�mR��z����&�AL���o������;�_�����!��Y����p�C���$_�>����q
�H�	�w��Mv����>
�a�2�^��
<������D�`�f[�Tl��hw>����$��;G>�zk��(�Nnh��>0.��OK�i�5��X��L���)�/��4��&�?��1��&Z����aj~QmU%��Gy����m_z���f��8	����"gV��{8S����bLjn^	`F�Q?�j�~z�<�7��Q�^���$�����-�W�a�=0v���U����s_h?�>�#0:�����>������4�.��*�����8e�A���E��,x��0u���p|az�^����yi ��Y���|<��KP=*���b��5(���w��@��=�������l�����F3���IY?B��@�c:����x���QF����������}�����|7�Q��asVs:}+�������}���P����
C�8;��`#����"H���q@�@���	��c@6��(�s`VqH����������`�H#[U�-6�C��}Bd��@������\��������]�j����u�Y��!*�E �,��%`���=����z�	�a�@6��cN�G�_E~����9����wg��O�a����u����,8j��%���Lz8}�J���<�w��,�V�i���t	`���=��Z�����'d�j�&Yh��@<��d���F�b������6����n��w��~�k��W�����`Ncv�2>�S�������(�!O�X���l�������"���4��eKFY����bRd���
r�,-B�y�Ob�� �=���L���((����|�����4���mhH����=��sF?����Z�������!D�_Pp�>'Bm��{�[��H�������!g--Ns��/)�I��B��&��-��q���:��B���U��.����.E�W�\�|e��l��H�����]:?
����L0�W��Gl���8�i���|��P\!��p�D=J����H��}�{J���y$���c]����(��;!����W��j�]�G��!9B���5Aq��a�yt\��� }�(pbk��4/F���W�G�>G�
��8�n+�0H��<Pn����Xs=W:�j��NiL.��E��AcsU��������_%�</M��[~L�j�L��|.�/�����H�����M�
��L���:��n*cb���mQ��Ss�O�����{<�����9��R� ��xc�P�����|O>c����3��5����o��O���#C}CL�A� 	z1�R#�p�X�D�����5��F�g�/��L��V�SR���`N#?
�	��
��epJj��w�=�SP��%�[���9{mo=��7*�G��a3p�B��g5'�,�U��b�S���	��K�8p����b���/R(]Qn�y��!�<��?�7�Oa�]$��l�)���!��_3yA�=���n�W[�+����x�s,��6��qJ��=85n1��T�_��6���e���^�)��v
���.�IG�wv-��u_N��C���0
��m%g �s{V����r=��|<�@e
GdW����'��M�=���C`��2.�Tc��j����B�����[�`���md���1���j��?�H�L�W��R��}�m���r�B�nh|ls�[�5A���:rC���#�Ip.��B��3�*����H�<�
�'�=�������pL����F������o�l��0�
O?��6���'�����:��������(H�����uv�%�,������~���`�����-�0�<�u��CVr�4�Wj���R�T�����}���p������S��v�4��)�M)�����f4V���~td���Ab�F?�2��k����wn����'(�������j�,h���5,�h������F�����FM��+�o���uI��PW� I������������(R��Z!i5#{/Fw��������Ga�4g~�vb�R�!�2�%k��I]QA\)����9����l
�X ���^������o�w���[�*j��Z��kL������>*�n��s�V���F+j��y��8V�<F�V����,Edt���9f}�,��]��VfE5�{��Z9����"��6+w?s�zc��X8j����a��I�e����������~��OQ���)��p�t�!p�*�*��/�����H �Y
V�OokKe���������j�`��oO��;���^�)�e�g|��i�ntb�`��}w�p��� J�TQ��Bi���7����<�3����$s��Dn��ZHh?��'�E��\<G�@���As���w��|X�q�Y��J�o�x|������i��y��]�(F�93a�~!o>��j[
�r5���P��+�-�����E��p����y �6������3*����U����L�*,c=�����`��Q�D
qi��5|�2j2P��)�[I�a�K�ZA�*��M�F�1����8{�B{5�����I��C������ 6-��b���Y.�Q6nX0��i``�1nmdB��m}��A���c�����ffy����_�z_���GgJ[��.k�ps`�*��-��\��8>�?��l��F�����+7"}��e�P����&=�$�
�@��o�X"5��i!�mD��R#�(�aZV#nO�! ����2!w���p�Y��>?>
[a����,��gU�4�q*
����-�Xj�M�[a,����A��J+�X�����z��A��:R��V����x��Od�������zS�!�:�y�'f}.-�����ja��Gzh�9ly�Ah�h�`�5"�Al��NK`�9�,����;��w�>*����3��1K������}��m\��B�ge��&�[�<��'i�yNb�<�</!�.��	4��T]�\NH($�����n.PS*R	`���G�H�R�'�.X��`�?f]�! ��C���h�(\�g��]��w�Fui������4�NCoQ���2�`<TX���x���\�tZ�x��;���=_:%�T-���2�s�Zi<�����p���J����1v(}ii�r<�����	��K��F�Q8��8��@�09@���I����QN��n �U�Mm�
��Z�nG����%���3�0Z ��C�vf����Q�N��},�T�c
��y�}���C����s���n�
Eb��nfMj���E��y�p^.BmgU��=�������4������j~$L�L�C)$�9c2�ri:���rW�!����q�A���)���Q�]i�PB���h0�"�(R��o����>$��m��(���e�L�����C��!�k���:�����zb;�y��h5��H
���b�7����-_����W�cj����^L���*y^���hv�ZF��j=X�-��j�>�nO��BJ*$�������}��G��
�^#�W�_�-�?�C��j[N�=)�~T���?�2��w@@:c�;U��s������=U�}R�NO�u��v>�J!�E=(�Bi���d<���Y��j�����+�jL��h���.V�Q�����m�w��,����D�`����Hw��l0E������P���?�@bMu_��"��4'�7�Fin���@�������� �������
�5��xy�?�b!����De�s����	���	���U� �d�gh��&3��e�sh�4/����T�t�5�Q9��H7?%��w�R���2���
$�:��&Owz�&nq{T��r�����>e�lS�/9y��G#����\���'�0;/k���^5�U��<<"HqzK��� ��f�%���@lZ��O�q7�P��W&��^w�5"K�{�CA��`���w7���I�����T������
c����������?����?.�����x�?�~��O�o�������o��?��H��a�
v2-0010-Enable-previously-disabled-asserts-ensuring-node-.patch.gzapplication/x-patch-gzipDownload
v2-0011-WIP-Remove-manually-maintained-out-read-copy-equa.patch.gzapplication/x-patch-gzipDownload
��`�]v2-0011-WIP-Remove-manually-maintained-out-read-copy-equa.patch�]ys�6��[�)0�����!�5��(�M��F��5����&�lDl����2�w��p�	�[G�r��|������o1'���vw'lw���/�{���W;/����	��z��;��	� 2r�r�������?������-�O��`%y[�:��Qy�=�hAa�V��<zM+�O.f��}%�z������t��3���rggt^O~bQ�O������Gr����n�>����t�����bdN����5���
��xDD]m����������1���$����htPW3Q����go�p�?z���.K.�}2�������EY%�+����ht��*���677G�,��	�XogPp���^�)O1?��?{���+'���{�������r�[`Y������������<{�l��������Y/B-=8
���0�
0-��{�"�8Ty�(-��{R�!���������n�V[��v�z�,J��in������1���	X��f	�7��W�g%+*0�r��c���O_�$1K��m>�+�~(�����=>l`+�a����:^���0��G1�NA;	�����8�Y�>���t'�>}���^L�8�����H�|��'O�?��������W���.+��'5O���;���-������6�cY�)o+I���#2"'?��������DY� )/+�o��9�K��W<V���?G��[����XF`_�s���O�Jv�s��U�M�8����D�_ua�z��\�$/ �kn���d�w\���Z��t�k���OnPw]B{S����������9�(K����7���7��'�����c�ZnCis6�������g�vP^��c�����W;����x�mm��?A���F�����vV��r�
��=���mn;������[�K���!�@!H���LEANeGq�*����p|r�f�,���`Y�DY��(*Y8�)��au�3,����KF ���)���-B>1�=U���g���� R7��T3V0Y/�6�1TpU3Zm�3��03|��wL��v��HvY�B�iL&L��bU%��"T�SZ�Tm6d���,g�"Z�L=�Q��"MvI��U�2�����:��U�eI9��f�*]�n.N�a���
�����1fy5��������%M-�N������*�=�����&��F��{O���I^�+��|�%�
Q�KJz�m�J"���3����5Ri�A-�M��^�9�8z{txpqtr��p�W�����#�����1�6�5���!����gi�:h���x�#���u��r�_=�"
T51HH�~�Q!�a��>�n��!����K�\RUS��=��2�Ry��
��S�fa���H�4�$���&	6	..��cQ)o�
��"�\�B�*�+��Q�GR��]���	&v��eD��`|B�v����A��{$���Q��mn��m�4��'�J�!l�i*0@L�H7��9�[�-c	���=�3ON�1>?<xp=������i�x���������5:"�Is����z�l3+����%�n�	��V�/Co�R��[�J��9*<a��5\����`�~}~8��ppz��b�JM��+v��BO�C����Y1�������{txqvt��V:$!9<'��NU�>�>�l��c���T]�e]�����zP�%����~���q�|���_��$OhQ��Tdl\��tp����_��8����@/�/���9��6��|G����{����.�
���#��.��+�
b���=L��w:BPF)�t ��� �
�)�>�4'�%����'���}P�u���?���bu@2\�y������m������d�y5�4����`w�e^��r�r����kY�q���t���	���������_���y<?���>����g��L3�,t��3^�	pAx��*>H:�3�Vx A�d�<��Dj����P%v,���O�z���la�'B+������~��uZA*,��_v!p,�+�	V��]S������^����@����c?�`{T�y@H8�}c�.?&w�6]������GK�X�-��FI�W�7�)����	�I���.0��x�����r6�9�to�C��dW�H]�R��Vo���,�L��2?�<a��.-�r����0lt+k�6����:4���,�:�SV!M����`2���q5[�|c��$wSI�A|�w�c�aAkV�t���/��iU��A������G9��O�9��
�o�n��8G�<�����nB{
>mMO������tS��v����w�R����!'t�"��,Ek�.u�f5N�B�S�����1Q�]7�n����Jb�#!~ S��~� B����P�4_�E����GCo��!��X<��Xd��4���rY�T�{`W�H���Z8\�<�G �pM�	�"�S��L�21�MM��R�� ���P���<����`��>�p�\�`�������,x5;����$����>&�?��8�2����0����k^��)+;
V���9Mg��������Pd��G�A���z-&��Rp���-G���O8���������[��/L'�Rx8�q��FEk����>h0+(R��Q����*eU;����\��Cf�;����WQg��eS�z�f���4bm�ni&V�\v����X��_���X�!5e�h��3h����(��Od_ �@�H{����u^�m�^���EuQ�+�1�7�����T�&7)�����.��m��k0�E,����%��!sx����{j��|�V�ljF��)rc
E����R�Jo���o�����&B�@�'�O�'EG�'�#L�{���,O��+J�4yY�h�Co#�w���rV�F��R7�`��)�r(�+/x�x!�KVd�0�����:eRt�]q�27�U����hR�>uJ��SIs��z����~%����������P�������{�v�B���me���*�ig�{g�����qrx@�R5���E|�[oU!�}x����%B��[:�%-��M���M�������*b�`um�lP���j��\�)�v�����"hH�
�-��DYY�2��/KY���*go�2m��H�n��a	��z��W����x�$����O����L��2�T��C}l����od'Y��������v�rvm�EB�b8�=Lf�At�d�����,:`g4�
=��������>J�>��a��>d4��`m�������
���<\M���7�������F��Z��A-�Z )��W!���(��'F���\\�I�,�M�,�i��g�x�K�,��B�z����}�G�}��H#\��[��Y�u�pm��B��p9�p�a�}7��W����0<����xaSM�p9���"��as|�����B�;n�+�n��x[�n��c	�&{���_�H�>�r��5+I�����5�����mhPK����4�p������\K����|�1n���a�^V�������i)x�����=���=`M��^XV���*��(.e������;T���%�������x��ZF6�_B�m>��L:bs���M�%#-��v���i9.Yq�^��������.8����3�%4g^;�,�p��I�������U��uY1|��z�TC4�{:����O
�tQ��KYd_/��_�M��V"��qxq�f�)a��4�����Y[#���v�_���3��h����/A2?��`1n�����=U�6�\bMS�z��'�"�\��Xd���w�6M������
U�O�tx��]���������bTCV���n�

���B���_b����me���*�������e�O���&6�e���A��f�~3#�����w�Z�
^�Z������F�nS,q�v��1�u���;9�����&���������4����H��sy/��*+3�a?�,e�[ICv��Z�bqt��Jjx����%P�U�%��sZ\B��c	��u�Pg�T�%��-���������+��X2\���d��GZ���`��!�V@�[f��f`��k�vgP��r;��������l���]��s�
N���jj���`���m�5���j��.�ZE���lCJ;�&q�t{���4�}��>�Ud+��9��Zb��vq!^�e�
�"%�ZA#�/&��\U�9�,Q������'I��>Ibv� ����$k�
>I�{H�&I�:���V��SZ����lQ��mhS�^�N�n�%�,�].�Q��+�O�1�E�r;�g(f&���g��
����u,x#���q��������_�]���"��C�xI-T����y1�53pn��p2�����,��h�$����c}��T�v/f�r&�8�Q���"n��~��a�9��u�m�`�O(R(T~l��_.�����������"��vu7��0���$�Q�5���B�A��*&��{G�lq����A��<4��Gj�+������(��laO����d����f��D���@	&�>\��oD��w�Kr����8��}Jo4��J6�������k8����!h
��eA
�oC~�ft�C
V3���hW�Z����Bl�"%���*��bM� ��:[=�0��R�Ie	�f�%�3��9=s��f����.�y&�����M����)�����&M�4�pu�kj���wZ<�����Cg�y���i�As{��`Y<"lAyu*Rwv��^��,���
���x��<{��E2*��ck���c��d[\s.���Y���}���-g�K���]t��	��3$
�w�t��y��V�
��I�����S��if�c+����w���G�@Sy�������(��b���"��j��=�~O���>���(��)�����������B�����"���������t�DM��]�~aX��b>�[��6��TFS��F��������Hq�w�R�E��#���q]�9���7��7T�3�8;���:��#(��F36t��L�-^��{<
��C"�j���<�����(G���y�2s�
�g����G�Q��0�"j����_���nvr����s�����i�9������1p����-�hES��ms8J��9`�.�������
������Y��,5ZQH��^�p�����kl��o��n��o�l�2p ���q]p�XcR=0vE^� f�����-+p.:��;���Hc6���.TT��h���f���,�(���\}���l��~fCj63�<�N�����l�������x�j�
aQ����\I��_t�}�y����N�t���<�;EI�$��p�\pF���!���Of����U�z�|TH^��2B'��E��GA#W�eI�L~�(�_r&�����������"���b���n��@���M�s��sf!%����_&�������#��K��d�k>�R	2���#����O��������-o���N����D��\_Yw�
[[W���B���!x`��B�"����&�'�����:sdBN���5���;���6��xe�+�^g����$�����������|J��R$0������+�h��P�[����H���q	1�6V�#�P���e��CO�U��ktd���������t9��3x�Nk��H�Rl��u�$l0hs
��
��Y������R������g�����z�������6j���6dZz���?O����s���n.WR��/����G�&7��:�G������]�y�$`{��J@�W+�e�`Ib��% 
�Z�H���I2�DPj��������<X>~��}�=~HZ$���X��
\� �$���p��^0$�S�V���U]t����yhqp�:�K������Z�;�F�?��w��&������-]���:�f����%�+{�{W�ub}�����4Kt6OoeZPl-�����1��������9�]���2���&��i����Q�a��%g�H��Mlz{�����k�b��Ml��K6��'b�P�9Q���L��1������a%���&C�4��<C�xIfVR):�>����1�}r
�SS�91E�������9��{!��|1�#�T�W5"���Y`�;�Ce�c$��O������w����n��Rh���(4@������0��pSV�'vP���N���+Z#u��b0K��>4o��D>h�"_j��2`�"@�Z��R����Zz�~V�%��u��Ys��l��W������m�6����_1�{��7��m�����=�vv}u����n?�>zF%M3�QfFv|}�� 9Cre;���^����C� � 0(l��}���8��;m��:�)s�b��i��;]��e�UU��~=�X��t�v�i���\�O0��Z�sJ����We��)�K�(��@��l�fdJ]�d�P`�����;$�3�m��Y��w<�B�X��������*�\�%�n-�?>�q���F�
�k�^�����41�G���S�$5�c�P��T�����I�X��I����C�j��6UE�
���O����m���8��z����el��Ey]x����i`Mfn�#��<�^���]�<���� ��D��
P�JxY�7�a\P���c9���^��9�D9�ZGh�������;@w����Y��2��f��<���N^6�C]8`���%�E�C��gw %���Q�Bb�EG��#�,f���u�
�r}e�3��)��Sxj�FQ��N�7��	��2��ebY���r�GV���>yQ����������������o��x[���X���Q�� o���������&&i�rh}e�v�]�w��
\�o�qv\�h$�5���I:,�+Q5�5�?O}����:��^�W��{�8h��6f��OTT$��l���~�E8��K��3��������0�}P���U�z7���"fO03@1����M��}�x�K�W���J-bb�AL	w�I�<1�0P���G<�����4��.4F��9�
4�T�P�{�	��������D����q��L����28�1&8J���P�;��E�k��z�!�x.�g�{�c�~�'�*�tm�[��j����{� ���fO�u�����gA�{ �a����G��0�|FqGE�&���@a����Xhx��r��f�^D��e?B���hH�Z����i�&�P,��V�0�,��xu���hRP��(���&+���$���@�m��h����b_0��j���c�L���������)����qk����@��{��!������ES`��A�����i��'R�-��oE�jF�1���Q���0�`�2	y���v���\����O
^9�����R����m	w.���	!��;���1o_B��2�A%�?����H�>i�u����K����l���N��Nx�����
��Q��i|�B
s,���2v�=�abM���j�%����k��I��&��� �wJT-v^|pr����<yO��h��b�������3�[[��~3��p��E�B��m��{����[�R�u6������8����s�I���~[�e�oW���d	�����!�W���g0#z�Q�F��0��Y�=��`�S����-�N
���8w�vX �e�Q�>��0�����D�����9g�>p��rC!���2��H4�ES���
Z���-kCXV�������N
���%�0~���S�g�1`a��f��qTV��o��'*2��x��s;��,3c|h,7��.��|H8o���cE
�8�E�.������;�l��v}(MO}��h���9w�Pq�m��.C��/�������~}����mCh��n�l�B�!�3b�������8E5�f���=!���S�|R��|�
,�?�K��f��p�����#F`U�Sd���e��K&�f����8������,�Lc=�����R6i������(�v��":(��|�`(������*��-4�����1�&I+'��`��:�g)lg2P�AKB�����:���(����O�
��'�����xO��G�
j=��e��x���Y<�����U�C��
�/����+1?hc/�+cp�������1��7�'�U\�pe����@�g��X@��N��/��Y�u�� ��WW�:}�x���	��}u���9���M6�z%��yy�Y��-L���������b�7��G�Zl�%�8-8o�\��7UYr�W-�D�57z
�!�R9��{�>]4��q�h0���������X4�����>�)�+cr���3��-��]}�V ��WC>�EY�'�jb1�M����}��������ee�gWV^�1P�<�z)�C���d5�N){����j����:�g-`�"|C��!'�Mrvr�9H�/�Y�KZ�B�x���M��7{����Qc���g�%'JP�������U��V6��iw�9-\;4����4P��Y���^���v/\�gVf�8��F��4��T�s��q�.��E�41�0����1i�h
�2�*5�������h�MLc��il�g��'rCgh�P��j�w#b�Mp?�6�`�Ui��J��cC��A$�
���C*4B1���S���2K����izK����������G{0����|��	9Y�fXg�I�����UZ����X��{C(�'���������G>:���O���E���>!�9!}����� �-��C���0���y����;�����?���Y��=�6`���?���$`����+���
�N��k������3���:]or?��N?������4���
-��6�d�d ���ii�l�4��.�-?���:���5�Hf���i]U5"tM����a��~�FD������ �*0�6[`�(�i'��z"����B`g�^��y�}+*���f�G��Z$�|<-�vr,�Q
bm7�tI|�M����H���~��������p������4����n�\*��L�E��F�V���������z��C��p.{3~�%�V'&vb�S�k�q�m(^��b���^���s����6�A�~���!.F�D���g��!�l+.����p��;;f8n���YE��aM��,U���0�7�ft��)�gR��&n�|gR���*�z�J|��uq�{i���KN,�}�e>����2'r&aygRy n����/k�.Q����q�p�Yh�����
`c]z8#]�^Kv�lt:���2��u�������x�`���|����25��hVi���������k�#pN�r��5��G:R�HQ����t����V]W�ma�L�����_.������6�K����.c��F9�.(�����x�����,l�sbt�E\@��C�>0��1�&�2���A���_���;�d��:����������	��a�����=��O���g���[0;~#J���ox�ue���NrD���A�y�a�g�!�M�g���I��0��'A�%Vcg?�:� wZ�I��|lK������J�����)a����b���f�
��ma _E�a�>���,h'��gZ�����eC3��s����5�d������9H���^q������Yk3���f��dZ�C�|�I$��	�-��������]�������F��2m�6
.�
�:f���1
=RU42�3����@��lV���L��JcT��g]��r������ y�wV.��2'8R���_��T��d��lN��\0w�%���<�B�c��\��P�T��2Gp����_�<�`���P�	p#�����h�d�~.��yp��n��M\6����R@�,!�E�Vt��Q��,X�02u����-��y]�|_�Y������es�?�V�F��cLs�Uj
���
����T������^��yb�LzQO&L���;o��`<�;p�������S�t�����T���GZ����������`��Q]gKK���u����|�,fVejf�@���1;�wqW��a����A��n�3�B&�3�
�p�=g/�k��n�����?����G�LrO
�
�M�������e�uc�_�����n��DB92[�=C��vWn�UN�X����P��&�#c��%�q��Ye]i�.}���6J�E����R�
�o��b�n��uo�
w/|iF%����t8�y!D
����o�������� |~+��V��5u�G�sL���L/=����1����`���=��tH� ��������:G^o�����R��{D�%�sAA�����mS����i�YV�������!6@���,�	:H���:�;���@c(U�
��&1��(������v�\��2�#��aMz��;z'�z'�w<��){7�-.��*���z�~S7x7�
M��v�u�/���?U�^�����.en�x����Mf�������`�.��g�����X��D��$�G=���c�w��4`�)�w�BY�r��\�����6�����#�^�MY�K���z2�B�x��|�E]�sQ4��^��^������'�} �a����m�����3���t�w�w�sfvU�E^oq���m��Q�W���F��}���B���O��Y#��i��f�8z�V����%"Kqd�E�e���
����{q�������%�����=7���/kGl��B������8i�y��1m�3P+�I@�'_���N�<��w�ys����M�<<����Z�~�N��*�)��d��O\
g.��9�_�Y�+G
t�����g����� g����<���1��KSP�u�L
5Sf�2F�S`v#�K3��e����w*� BO���6lNK�T���4(�@<��0��	|1�'����nh�?��K�c��m����`��C���&���������p/|�k�N���kR�-�IU�s�`v� �O��9a\e������3�,n=�>�k�'�>�w t�b���~&�Y�8���{4Y���_j�
b��J8�������D�uZ���vz�["6�%�qh�)���q��9�Yf���\_���
�Pi�G�JI^8^^��������<����;@yS��Fa:�X��J��
|���T��'�F�N����L�)��/��[\���1OH�x[�=�
P����~~���~5m�^��-c��v^1����(xg��:]���u����;��9�����
���q��F��������b�H��5
�K�[��Z�WY��}��9�%�>��N�u�5�����u8���+���4�i��c�?/��9[�{Ws��������a@��-@��������X����{�����x( ����d���[,:uE�N&�A'��C�|:����yD��������1b���6�x�c����Q���w���|�z��C31�S��8����XFb8�1|�}8w����k�C,s-7�w�_;���Z�E�w��H��-�Bb�+�O�>7���fz���>�M:NK�s&�b�1�����
��o�B����f}��1e�Y��������p=�PJ{!L/=$`��Xo��H�L`�07�uy]0��s��T��d����-�����v���v��-4��[�����%��t��@Llw&�B��9�k�������Via�3mI	���� �R&��4�����C����9)���&N��sgSeWY.���@=��2�'��`�����:�O�G��{�a����^��^[(�:����@�4M�E�,Y\ �������q[����c.]���j[��|V�NB� Q�919��{�G��k��t�Q����`�N��|��� g��,�t�E����Bi�e!����}��W����X���Fo������[R7�4������e;r��w�jXf��k�p��������dk�<>waw����[��E�\;����������8�cm�����n�W�\����E�|����l������������Es��K�}\�:axpp�x<���
Z�&
�\�T!�{���ip�%��!M��3�e��n�r�R�y(���[�H���Xr��H��J(�k
@���<x@���3���(�2RAR.�W���~�$'M5��dz#����&��Jf*���*����EO��&��!���l������A���X%�
�ov��b���Qn���n��~���7LN����hH	�La������6��6��,F�ah��'�U&=��8�`6�/��T|�Dk�3��}[�������ZK������'�7"��3N�����]�=��vcG�0.rd�/�o)�A��
�VGu~c-��:��]��=��[%�Us���k�3������CY�l=���6��u$mUnl��M�nU2�x
�-�#��w���[����A�q�d>���U�����uS2�,%�uN�VO3z&:��e�3���!�(3"o	�1�*g"n�{��E��3�x�e��4�
[7�K��1������
��Uf�f��9~9��E3[YDhKt<��H����h0;rO0��	]]�n�C���FACze��e�����+C�������l��U�N8�����.m�gKA���mcT��'�e@q����sq�9s�A8d2��o�)�!����Y�A���-�T�:esd�/�}</���������|t��vk����bp�P�k��v9��Q�[l����
��av�������1��>Q����u3���4D�?����M3���.�3g�NV�Y�G�w��������m8��^&��0�N��l0�g&��I��L��lYC#���BaF�	��D��Y"���G�V��NgA�0uN
'^�e��YX�^z�8-��l�G�Q����=��Y�@��!�Md������}B,��a�?R�lAB��v�����^uEmt��
O�{��i0K��P<��	vY�zA���Nf/���+��I>�_��A������u���['=��b���Kihvr[�����:�(�A��3k��fb���a~��,[����+���CS]l���Q����(���Lg�8������2V�q,(K�3J������u</t��
����y=���e�~7�
���3��#�B���)�*��n��Y�d���+RT5q����v`V����d%XJo�2��/B/qa�n]�~Tm��/��b�s�?����+�~�B�@��3�hX�#
���M�k������s�2�;0�������	^CZ�Vz%(w�$���@��4�Mw�)��!��5����������.�o�����
+����CX@y�>.�k�)^['��wz�@��]�v�I���t��K2�ePm�5*�7,��������S����-����s�@8-a���� 0�V$)G���l����"�tR�|�{��r�8#��h����_��E�n��-�k,���*3#�J�Vd�����!�V�����~q >J:��pU�FE�p+ �*�L��M��{��	.����>�	�G	���v��<�\�8�>q$:��R�����XD�j��dAY2X�a�<���E����������
�� l�l���>�"��D��������(,kp��!
#o, K����)�z��)N����{5a}n0T���N��5}����!�Y�Cc r����|i?�����`=P�~p�C����|{�[�q1�zxAZ\��z����Kv��O���"�5`Xk���mB��V���
�>�0�>�(E�h������ap���9�Z4uWu����������p�Y�x����w���������+����c��F�On����}]*>^^VO����:�^%�����Q�bk�no����+��i���W�$����G8H8Z�Q��ja���=�4���W�<!)M��#�rk@�����,(�7X;��W��gLF�J&�&v�y��J��7i�;"�A�eo��u��{/]4V���B����{�arP&�Q��G��S����%I�W�������A_���������r}2�{�O�u~jq���V�����P��?���{�i�'1�N���_��#�3M�c�����C5���o�l;���b4�U��2r�uTT��UlKp`^e����R�v�
hGm:�h���k?E�%I���IE!�n�h;��YZ��L�L+�&�����>U������	cU�$����Wl�z~��@�7-";��@s�Ax�7�p��S�8���2^z���A�����N�y@�/��(�XW�6�q�zh���������AV_�:n�u�{S^�����������$��������$��B��n��.�E��w�������;�[0�>��������������p(����l����n}Y��������qc=,�&�l�x�n����F���~K	f�{v��^��=I���2�}%���O1�a�k1�f���lw�r�;d��z��
`=�!�U�/+�-�KQ]�Q_�p{�������Y��e�TJ�rH"�y'��,|b)���l�bp8�?�oz$�V�Vi=1j���;���tCy���@->���qq��a��Elk���%���>�r>��y!��8��$T��!�#�f�B�������g�[=�������m�P���6�}����	����0<{v���N��vv�� Z���
1p���mF0�p|���tyOc��FLz�\�L�G1�=�'�2+���\������c|�)����0�V�f�y;�����Bn�H����)��\��lJ����G�Q�j#�\�!:�����[��<���u�Z��+�������U���#��R�Qx� �r$��z��_�\��&[�y�����9�1�i�Y�?d���m��@��[F����Vq!z��I�����Vv������V+o��
�H�Q\��jr`���K�>�2�����Y3�m�e���(���<��$�=M�����b
���e�'~#�����7���4+����*i-��c�7�������v��������{<��� +kW�������^o�V��h�#v �Rf3���3~�>/P�0��i���_��#�})����0;:��f�,4��9��15b��i��������������;���{ $�\�"3��gn{i���q��j���X�D�`�3Q���7��Ge���"���3�Z����*���e��|Q������QI�E�op�Y�o�yW��c?��'�m�be��k����C��6���{�e-���zDsX����"RH�:����\bT�^Srh�MQ�iU��H2�u�#�*�I������xr*��5e�����)2d��J���Qn���[�����v�2E(���U�!�gWi�$�GF�N�q�Q��N�d��u�7�,w~������w`��#����F7����6�����$epL1j�&r\�RC�30���0�]�q�n���"EpY�G����A���"��^E�����IovQ����QF'���<�t��X�f������9�����to.9�K�"�r��N�!���������S�����8[����|��!uY�|##v����wzo�<���:w��d��MK��-�H�8�
��4�}��m��������LWQN����oH0��d�/�����N����`��?�?'���UCF����x`�j���4�*���L��Uo�w��(�Rt����������"��v�#���Y�NX��Ib��$!!:]��B��b�U,�o1�s�>��
����\
u|d0�!Z�h��K������76m�m �J��?��<m�L����U��l����/
wu�
�'���3f��M�	�Y����O����fZl���������fC��6MX�*����R&����
�f_�p1x�����<7�rd,�l�Y�h����C������f����~YT����3���e��N�Y�m�t��M�W�oY����U��;�q���EV,J���M����X�y�����Io�r�oWD��iM}@3S[��~��sN�)[����w�#s~�!_���x�J�����>>��0���!e
[�Y��Cm\�"j�:�<���i����������3��h������Y��$�4W�����!�X����? ����[@��O2��u��ftAq���w��� -u�W���������{�������H����~�x���7���C	�����J*_
������t��kV2[�:�� �a�s�O�!�N�
[5��g�D�C)���,�p�I�Q}M��o	(��[�	<��N���Q�u^���F�eSA/��WYcz�
��/�g�<�U�@E	�G*�����gVQg4�.�r�w|qq~q�<�������'H����?R�$�X<��\�����,w�|������a:[����T>}�N���e����=���c�b�r��.�Zy�����F*�0c=p���+���zO��A�� (��&�E���9N����a�Vi�E�z�����>�W�t�_(�����O}�����Xpm,B�l�C�1����$h?(1�52
���r�����>iJ��X@����$��r�'�|���;=�u�?��[���6��I�L1�A|<{���{����d,5���������	��D�w�J���pBu's�iV{j�Z������z�����wW�����Y�:��*ynH��yZ�[ ���@���i���i�=�������n��]UB�_�J��"�}o��F���l!J�Z1��fF���kAB�}�R�-�b��Z���@~����`oY����G-0����o��
6p9���+~����~WB"*�������_���S�l-4���������8/��`3!��}rP"��N��pk#��8�s�(Px��S�"a���j3�1
����Pd!6;,!�i�5�N
6r����@���}>��SXk�)Z��AU�)�-����'���u�0����5K�l�?��[��d�����K[������`����kA��}�Ct����
^�e�U)�<�uT��K;�����=,�a��yy�Tn��&�Q�h_}	�,n�����K*����Ey]�jkX��l�y'�Q�.qC����L_��tg7�/��V��N���zXq������Z�Qw��e#6~^�����a��f���Y��i;)���M\��k�~���7'����S���x��g���!����Gu��)��U����J�wC�';�w'E�/������[�#�2��d��#�	���f:��f�nL���L��~{�q��K
VG��k��:�pMHH��QV�hg
��	g��'v0-t��������~T=����,s�%
������l
4T�3*)Px��i�6�����
�.��\Rdx/�v��f�x����[O�NE�y���< E5?d���_H��0���$2�4�����e���e�bk�Q�F������_l
6���+�?�)�`c�2C����Y��`@|���);��%��10�)�y4���cV�I?r�t�����,#�`��dN�����@V������f6�#����0�g\��~���;4F�nQ�)�M����Q[��1�������0p���P�Y]�D����T���W�
����9<.���>h�����4gL<h����a��`�v�`a�#�.���m������)y��wxi�����_�����
����M���x&����sX�1�Kp#fY���qsP"��@+��b���Dl��I�at��?���$����|x��==������N��?0������7�I�H29�:I�yr~rT'��x�$�s�9������L���L��ne#*'��I��G���q�*K����I��B��lX����]��:���v����\aW]\����|�!�����h`��Am�Z���8����b�����-��y�7�A�<�q�t�ak���d��qg���e�]�����~a��C�0,�7k��.]4����:l�KvB[�p:B�L�hxpR�|[eWYb����=��f9��@���_URX���Z�-�&����So���`���h�����cs���`�*:t�*���]�A��EV����A�z�	��sp�6&|`��k�/a< �g�hE�r+D3[q���Ov��!�b/mX�����`k6FD�Z��`�L�(_��}��t���=��Rx����)+_�[Vk������G�A��a�6���h��5�4&>��1"#���{H��������m>e�-����8;����j�������u\>�����u����{)B2a6/�4FDcd�
���3i�kB�>]��t��N���kXm�j�������J�[4����>zHQM�N�Y���=��n�����4�C	�8�����s���C����|x�:,?�:��������B#����4F�1#S������f	#';�fR����&�+2���F{�������k�m:m^���xG��2is@W)��{��d����2S%�������J2lOg8���i���6�p$#�ex�Kl;$?���d����9Y^�zn*���YR���i[#4*3f@���r+CC�zR}�7j��n���q���k�N59| �[�28F��M�]/)�p?cZg2�
������Ma6��������$ED���k����3y��F(�,�I�I�!��\P�l%�nv4��(�!��$��,v���*�h�u�_C�z���������K�q(��8iHj�N������L�1��C]�rR���2]�����A��$n�����v!�fg!���� �7|������=�&�)e�(�A��*0��v�{�Q'�~D�*�{�Io>���I�:������6�����<_+���WKV��������VS/;��Nl?��!���g'�4�>�!�#���m���)!��H������q�=7�oD��(}�N:1�{:��7a���	7�Bn����~D��Xu���-{#��<a=�c\����qm�a���{L6��)�h�-���w����_6~�����l&�O,��J����@S�g�������~����&�l�&��g���k�lh��^h)�������B�-������OB�����#?AZ`xn�.��T��n,���BnJ�t)|
���� ������1����i�)�=$���:�_	(`��f��F^���!'n 
4x��%�<-�������	!����a���I��,3�J��3��D����2(��4�?%��~L�3�R���	������d!>�#
�Q����`3���-g��c]J�%���B	�����&�j���l���3}�F�[���B�����/)RM��^j����� ���l�e'[.�T�f�;�8HC�x�q�Q��'QMqc���D5�����%��j�K�l����,��o�Q�4D?��"oN.�OOGg���.�7#�(���'+���E�U�d���/���xIL�����Y.���6M/���f�P��K:�����e�$����=������?�/��q�
�����,��<$�h����������������w��o�����~;O�|���_}�����1_|��������$O����_$O��/_$P����}ka��>�l):�a�>�u��C&_�4�:������&HWC�a��L���X��l���<����"��;;����n�L\����"���A];D8�.���d�6M�M���L��p�jD�T�4�^N���0�����KE`���������YK]��	p���ZJbs/>��T�I~�����t���/��U`J*�	�SM��sz@5O�j���9S�����*������o��g�^tX��G�}>W��m�o~y���������dM�\����`tq
Snu��'�1e���d�%t*!�gm#g�����k�����MRo7x���a�4�;�U'�'`�#�B3��$�Q`�m���oE����h�UG^bH�J��a8g�R�zN�K��$�n�z?�~�
�Ow����k�N�\��|��)�%1���@�l��U���} ����b�j��FV��yZ%����%Pa*�k!��B���S�m�,�E<����q�ZJV�ah"�3 2%M��	�A~��*X�p��{�4���P���Z�3 ���>I����}Q^'+��1��E�J�K��r�1*��m<=]d��u�����X�P'#o4��2�6��S$�0���)�
DM���O$j���P��%70�uZ��.�X��\)�*j���G��(��90���J�SQ�pa�S/��+A�p>)xi;Lj�m��AAX}�f������o������?��YV����������l�|}���j����_��S�/��#���.�`�B�!,_v��m�N����'�OdZ*����{�2��sV��-,�GI�����
X���|���U7���V���n�,��S�2�A��D�7��*I��r�7ze���@S�G�`���'�KN�{'���b�(�`6@���Glk;SB1��1�b��%6sV6*}��*��O��JU��SZ<--��e��dB!ex���V�*���^����1	������9���j��"���Xr��\�j����,s��v
�m�+����������������)�S~��/���;�����O����?}�L�_���(7�K*���[����^�eo�< R)�a6pjA.����Q.��3��y�`f
�G�O�mZ=�t�nH���}Di"�9�J}w���d�f���x1��Z��3��0�)���FT+
e�3���#4�|#!�@����e��VEc�[!�$��w��>�?������������_%{���~���C��Y*��O�N��p�T�m��^�6�v���!H�'���W��l�������d?��3E�o�����0Y��G���U�ZIiG��/�#��/�wF����T~<��h�:$�{�T2���s����/R}�S��:���S�1�b�D����dk�����U�T�8W?��uE��O�y��u���E�>a�J�}+ii���P{�:
>����"ZZ��\�����$���5�2��ff�z����>��������H�W�ul���U�F��8����a)�Q��$�uk�g�j�t�6��+�����/��c{�q��6[���[&f�Z�si��U�m?k��4���������5���?U��6���'����(��'�TRo����]
4�)^Z��x-*�e��g$��zE����k@�v@{^
�M`vA/��w�H�`��lH�fgxv$���.>�%�q��384�8NA!+�c���&+�[�.
z���JG��	@���}8x�,��t���~�n�I�����M3��� �~tQPXda�O�0�A��n���>d�tRRI^���4���� �0%5J���4DMB�E1���(V��7W�."�nE��n�7�g��Rs�a���(G�VQ�Yr)mB�MP6d�(���c���EG��Zb�u������-���Rw1�i5|��O�������`��S��HD��D�TS��������N�o��A�� ����C	�!��S����<�ykPEW
7�05pU$U�\.���~�0ah�e�fk.R8e�������������X���!��o�5�O�].�j��E�"��-��R	V�����E��AJ�,��`5�fA�0�����}���RtLk���jlTH=s��]o���v���Q'd��k�khQ�+���F�9�����Y\��Y1��#��a����RZ�	�� <�N>s���f�������g����)(�*&^��b`w������G@�n@��k���[`��pZ��B�DOK��C%�U?�����3�8!�GxE�D���x
l\a�,�Y�����}��{��J�"g�,2&�.�|��6�A�b��:�>��������tA��M�SA��L�~J^S�F2���h�h��C7�a�m�rK@�/�w R��N�[T��wDyS��B�o�w�EZ�����XFg8�,����%����.���o��{�m����V)UY��]��N2C�.��[z��z'�S^u�?�+<k8/T��)6�6������M�RG��B/7��eie�<j�k�/�/�"��g������S���e��e�_�����#�[n'����������y����b�6���/��`��(�i�h���He�kO���>{��`�k�5��t�NN#�&t�-��8����OA%�C����R-*��[Qi��d���E>qE�y�#�����x�<<�V�<����<*,pLQM��=����Q^��@x��:]�L#�	P<��J{���j������+��6��E�fLO�L�7�,��>0`$�E���}�����G]�iS2Kw�T�,��5���8�>����)B9D��cA��pr�>@��*�Y���U�kmbE�Lo�<���o�,����	
�+�u��~������-���OO�8���S��2n�Z%��RS����-%��m��6����d�m�Q�����3kz	A_�d����Q�%�����g��x7��5���~[v5�O#�<���sN���'>	u(�sG
��PGf6|!��z�&������t��9��=	)��	��J�n���>�1��&���;a
��H���5w�(��B���U�l}��w��[iV���k���F������#��H�!�{"�����Qh���	f=�g�$��[�f�Y=2���0Y�8yH2V��N��f$\��WWdmkf���D�D�X���^�+0Fl����u�1<Z�s[��c���F��O)�D�JY��b��
���[L�j��1����W�2����4��3�ybGw���Se�aOX�\����/��x����q��?�[GYt[�����:�}[-�6�Or9 ���Q�\���+~�;���N�K���2P�����������k�Oj���!����
��UA?�B���h`$2���a�"sw�����W�@97=-�2s������y�e�����W>
i��:�E���#��#f�)����e�����y��)EE����N?�4��G�V�.'G��v�U@@*73LT���d8e�T?"nK���F����3�f� �5K|��K�����4��L���r]��m���$U\��/�(q�������!��z��eV�I�4��?��r��BV�����}=�lvU�����
E�`5��K�;��uU�Mw���}k��c;`b��aEw��jz>[�����f���R��&)8Z���:9�o����5�����@���8���~yF8c=Y��PO���]���i���'�E��e��T%z����*����h��.�����2�Pb�@C.A�����{����h�E����	g��0=���w�n"V`��E�k���"���,��Y_�8Bn���+8d����!��������E�����]P�`�&����s�LT0����W�g�sq�1�H}t�1pZ����P_�kqP��
v�����(-�m��S��WeW���	���)����"����x�m���w��������r���F����ot�D��6+�p����t����'j/HzC~rD^����A	���/��;U�4z~������b�a���,����V��,�oY��n��Y��vV�f�oU�'�`H.�R�n�����(��S�e���w?���a?��� �E����c�IR�HN��lVn2�>�'F�mA�B+>�*7�_g�C��L��6��s�����Q��FK����|p�����r���ds	�y�|a1���~��Q|�4��?���B�0�\�����p�8P�F:Vg�y�a���)����V����\�l�����>������.�8&���
L��"�7w��U]��$[�=��$$\,WX��*����/�W����S�t�F}��N�y�w!��w��h06iPb""����o"�DD�;j���������-iBI'�b��P��	,��#F���z�iQ����iS�A���a�q��Yd��aN�\� V�yl�����[� ��*��CH]S7\����!Ej@����*�B�Z��rG_Ccs3����w������J8����sSs����<-��}95Wi>qL�4$�{h�����!�6����j����U<3p�bQ~LIf�������Ae�.8	��?^�&L�t�1�.#� ������F*����������X����LN��t�M��h���"F��qG��p�A��:.V�����g���Q�r0&%�h$�pW�"�tG!�������R��������>�����V*"!��Ub�"O�'��@x~k�F����4B����t�
�%�n2Z��#����������a4�N%�������~�G�:�
�`�)A3E�p|D|]V�6s���G��Ku���h������jz�&(� �2`nJD�^����JT{��7li��BYvY��(2���Y0�����k#�����������u��/�CK����&�J��
(a�9)j����Rw$6,����+�dR����wbaD��oWzMyL���~Y�xUz�����:���Uc�+�����p��~/m��;����.�0;G-��6�Y�L�&�%B1�����;4�"�b��;���!��]�A���`6������?�^��2h�t��u���Adm���u�h���\��9�����bX�8"^ }�}37���IZ�B��w�C��{�M��a����q@����� �
k<5|<5�}\�"���y
_������B�m���N�=����������kR���
����2�`�|��{�vn�}�k?x-�>��<�l2(�����]�����:���]|�a���g����VW�����<��6�2\�������JS]h[QV�� y�z�DT���
�����I�<�� Dk[��%/q���M`��0&C>���D�I��\^�B���
�%�Z;�#t�-j��Zdb7���_X-���\iFa0�
�a���s
���)���������<@s�I�I�C��A�q�P�6����B�V+��tO~�.��h�!���)������5��O����A���)���=X�A�O�����N=�����[��1,��t�v!;)�S�Q��Q?���9�}�l�qk�9�w�|�ok`J�Xm�E(�tW��""�tF�E�@���9
��zY������e�1Wb���F]�����6U�t��i�@lw���r�������D6
�d���q�k8Y���T��V�s�p�g)��Skx�������J���J5&U
gOcs<�<��e3��&��x��VJ+���wfBvw�
G�����t���u�A�>|/�y����sp�����]=���M,gU ����X�����I��(����-N����_��z��@�U*���@��-�"�����G��(s�Z|`�J�=��2���-�vO�4l[�9��BL����^:;��]���+���f����W�����8c;���hf+c��o�}KW�L�v�����&0�?�qI�4Lz�a�����Uj[���y_��I_�7U�C^c�K�� �	����M�������\�o2G�5�L2��
m�n��:�#l��k��v�P���f(9.�QU�����J��c!�x�������q��E3�K������fv+
>mj��J=�|	]��6��I0�X0�+�GZ���6���K��tv�k���lk{�;$/����-'Yu���	���
����8�m�����r��0���H�#�I(<�mN�o����JV��h�������3�*����6�l5"���L��];p��������xR,��M��n����s��:��~om��@�+H���a>�b4��L3Czo������k����V^'	|d��=����!.�{���k6�������:�S����`�??
\���7��e���G$]��N�����3��x�K�������-X�6�G���E�����?M1�����e��s�.;����Y�nD��N�
�v����M�0�O�3��QTV}N���N�Io�2���}
��stFO���z��wE�v�,2�r��O��1�FSW!sJ-�����=t�ai����h�U&�2�����Z67e�5���M���r����@��*e��f��r�L�������w����X�n(����1m��)NR��mi����������6��V������_���Pr�������iH+�x'�h�]��6'�3B>���C&��:��A��(@�+@b�8��[��w���c�gQ��N���{��i�LmQp#0/�w\�=�O���"C������B����E_��Q��P�q����]���Fyo�,��R����*/
������).p&��)��'�����w���{��$,ll<y�����o����$|5�����,�g0s�)��;�D��xM���^����o7������|����D]g��c���b�Y�O{�%�z3���R{�7}��d+]FA&LaG����=7S���h������C�k���z7q��fqFW�x���+��4�C:�Z�lW`*cF��}���R���}f���0/;���a���P:������6W�dg�����tZZ�QbE�1J����?��y���
�Q��|��]����{��kp�|�>	7t���?�z�6���ng����1��x@Cc�a|�<��'s;��X�A�z�aEO�N�����\����������%�	��%B�C��B���)ty�/���;`�����(����O��$�-��E�9�D�����*#0K�qJ������u��c@x��x(�� �]_�����b�`[P��C������2�.F���������m�W����-���� ���%�{0m{��B��Q�@��K�>�Q��k���<�:��#���������?�x=����!��������>�)���z���Y#���&��;�"�yl�����T��iv�k8��YgA�:64H3�$r'��s�o�}@�n������������Hl��M�'���'������=NUe}��y�~�����?������l��,�9&�����]V"[����������c[b�j+q�=@��N5>�~F�����1�'���b�l����m��g���o�
��t����x���uH=������O���ON�{P����@E�����5������9q���Eq�{���>�^Z$���q1�?�L������Q��/5_�q2n����6b���u�����t������PJ�;��C��������6t��?���C�w�l|>JQ`#�4��H�Q�"#?)F
�'0?G��:K�^��~S��f�}��������D��n.d����"�����C������b�K�}�i2&� ���^P���g�;�����:�#��\dA���;?�Olm�����Zc�n����}@�|}gX|�2�n�r*�����-�M��Y�����7��+l�d�������<����i�h���nA8'��]�wf��9�b��=��1J>����`�2�w�"�E�r�Pt�Q�=s�b�X���plg���
���:���E�	&zNT�������7:�Z����ncz/~�l��sm����}`0�m�
����w�C"s��%��C,�$f�!��q�#z�:���@����}�#��J�mV!�'[��~�'�9�Je��������Pf��:W�1_P�2����,��,�J��n�4S�}j���g��
���:~�`�bi�����r��Bz*[Z��Qb&�3K��!:e�8���lkE13J,wE������[�#��Z:���B+��
�gP�Q���/�2G�0�o�a�*���HA/Yno{�������k�����)����������Apa��=x0����\%�/akXd�m/i�&�$���22[mLM�^�S�:4y�2�
o����sC�\�{a/��$��^����@u����������Lr����c�!7��O�J��N�Y�m�l������C�r��"+%��vu�"�!��yE�#����J-
}�'��]v~���g�0���+�f	���w����P4h�G�~&T�����FTD�+�A]�C0�h����	�-��KU��U>-M���8�����F�a]�Z)
�!�������5��w���}��X�F5�����e�,�`��;Ha
�����Q�-
N��!�}�oD���]���/�������������q����������W��=�H���x����Ie&s��������a�D�b����N(IY4�=d��b��M�rcY;�,�AY1�<}aL�w��I9�#Z����	a�
��Sp�%t�eF�a��,����I�u���m5��
�b�a/��_6����
�o��
5nu^������mr=�
+��UUzc�:m��I�4�E��u�E�>��B�c������2��e���9���\9��}��6o������.4�
�!3q^��OK�`�* ���~�q���@�"D��&|�M����
8�yr��:�.����`^a&��_
H?�g0(�?
���	oP�{R�r�%1��Xe��g��n$f*�{�eY5�nt�
�a��P!^Wc
��
����f���9����7�>�)O�Q+���	������2��fi�.b�4�!��F%?[�('M8o�(��{�)��v*�B���*4�C��p�U�y��N�Y�0z��c������2w$]���m��<+���0��*��^�:�l���$�T�M�L"���O��\�t3�]�Y�;d�[��D��*�i��ro��F���z�!wY�r����!0�7�
���}�r���(��D%�@���o�?��{?���i7��C�$���_|����
=��vs>��[�jz��''���N���!P����U���������)��1%yL������3+V3���)Q� $�1���;���v.�t����k�_������{��A��������kc��F�=J�Uu���{B���4�����"�~�A��=�R�+�p���W�������(��	�X�,�!k�E���>���&�����{q�Q������'�)>
J���������[�y�&a���;L��c6���h����i�U����O�i3[�e`m7��P 	@����f�X>����,��2`�G45��_��n�������M��Fb�$V`{3�	�����K��l}V�`�Ai���}V|L+�20Ye���<p2����	?�I-�e��1������J>�������qU�S�����F�#P�y0���,	��&=��h����1���F_��U��.���)9V_����*��������c(��CI������'���c�Dr�\\��n k�/&������T��%�g9�1��D`P���v��``����A#h.!�kP��+X�(QoE
lO$���R�����������:s<?,��"f4��h�'>�z��A�^����v�|+Z��L�F�G�Cg-��G� �u�tN+���C���	���G�U�Nb��1�a3���^�y����cN���W��6����h�:i/0�R������6���`a�C���i=K�;>���o�7��e����� �~�.B7�d�EW.MG�����UZ�v��9��i]��,V���-�hz����8k�����;�����9*>�rR��Q!�d��I$��D��
��Jx^�Y�~f�&�s���U��o����fV��I������N]~���^��Qy������^U���A�����3\������pR,�k�!��&�(
�#�7�P8���C���9�,];4���bc�}P�]�f�����4��#������R3<�R;q�
	��xN��i��C�G�5�2�����@#�6������������$J�l�Q��kB�����:���U�oso���u^nBK"t����("�F����E����h�y>�(�QKQ���`����[9p{��<��L�e�xg����
C�Uf��0������W����D�`S��G�a�7t
��-Y�$��o[���9����|�3�Q�<#t���A�n�mP%����'"h���������ZTa��f�E������~�����z�S/Y�?���swPP�
��s��"o�|������e�],��H6K��?[!�9w���^��O'�{����P��(�
9I_r���'v��j\�$M�T�'�����W���yZ%d����X��H�Uy-e�2��F��*�wX�J��pP�~���3*}�����y{�3z��H(�~2���f�J�mSgsY������<}/�r���"�e��������M����(a�"�.�f��K��i��^���U(Bz?��pO��_����i���$��I��dJ1�e��Wx9��T�����=��A����=x�3�wZ���K�_'Es���/c�9�����I����]:��w�R��=]jKw�����/"/�{����m�,�p!Y�*���:���#��=��~���
�����{!6�^��,U�a��u��g��O�5,,`D<���zUn�y�J�DRmdpbc����H@�b�r����E���o��w���;25!����tXX��67�5b������R<����(�r��mAw�e����_�e*�_\6�uh������K�g@�����8Y����f	bF=���'v�2b������is����+XR����z��"q:�\N�P����]}�`r>���I���y]&e���H@��^'��@Y����t�>�&���$��3B����7jXK���h����E�t�'e��5����t~�M�y�.A*�r��O�a�t�d����a�(r�1�c���OL~�v�	�}t����[���{�#|{q��d|��q����*~n0��*_k�s�|����KQ�2�K��i�����Z�po��~�
X���wy���V�a��0�5���P]:Cy�$Xw�\Vb��8k��(��&B�%y������tA^��3,'�~-���40�����j��b"[:��mHP���z���a"�G[���O�i���;0�V��W�e�Mi���f�{�o6T�m�\}��W#Fy(@�����ha.�`����g��Ng�@3K{��SAO����HLQ��Yzr����9r�Df����������F-�m��6�*=Q4�����_|#
8���+��L
la,j^��s���6`�l��!�]���1P�9�E`E!����x�~d���a���)�����_�9H�Z�BZ��dv�A��>!��m��GH�qyT�y6 �4��=#��G�����3�;{B��2(�9��[�Y�;�H����%��Fy70Nx1NN��Y���i����B
xx���5��*`Xol�
x��B	���eV��h�����(/�O���(����O�?	
6�f�M#��/=�C���>������^�1�$���98�-p�>a[�0bG����pS���=�b�����J��`Z�nkr��z�wF�:L}��������)o'Q����8+�~o�D|������������A�%�e$�L���hf�����+Md�y���[���V:��n��$��<�'�oD����-���c�N�?5v�:�Z;\��[����oC�w�p�R
7��X�����:��N����&S�T��V�U������CXY�N%���eX`VXK��Z�-�8�k��8-���p�G�Z����77|#
n��h�o�Kx;h�>���������EV����[� �l
W��}L���Z��e`�Z������1* �;��/���m����*y���\1�6�0qp��T�9%�w��0�Am����t�o�����=��Vx���)k_��'�����q�O�?�H��a`^{���wY��72�
�}]����_������m@5�����l��u�`+x�<�v��>]��vL���u^I�����u��C�6V�d:.����Q"Z�q���8�����������0����.����z�"E�x��I������o��al�=��6_��,h�=�i6�h+����@%B�YG��8�X;�)xU��8��F���Df��r���\�h���4J�����<��xg�	d4����fQ�z�&m����6��s��xq|�=���v�����h�����.1"�h�D�u���X^N\{�2�9HC^/���7#����*��[�Ai�n-�����z�e�A�����J�f/f��%M��GA/BSl���C��2�����1��9�8,���k�)!�We%�eq)���������������Go�
������yL�>�A���/~.��	~���
\U��'|�gpc�4�e5tP��"�
58�m	_�v.����+MZx�l��>ZDo����k���9C��[l��1�0"�:wH��=�9a�l>{8�K��u�
g_m@���m�>tx��=M��"
;,�\���n�*���rZ�o���>*���lS|���f�gN�-|�6�L7��HY���VN�|�]:]J�0�:��Nu����N�����r�h��Mwj��#��,�!���^��@�n*���)�C�t|�5�io�������8$����������o�c���u�z�;z�������^��������:�kx�3���;/������L��`vL��)�f�������Sh7�����2Z�����D���l��4�� Cm���
9���a*���"L��`�.���Fz��%��{?��t��mn6o]v��Y����d',l-����6����o����"���C��yD���i�;��"����s��%���s
t���4=q'�����;�%a�D��`�e]����VA�s�C���5�T����~kf�f�s���/V�dF�������u�{f$�P{F�^o[f��a9��y78�f@T��Z�U��S�4,�x��D�����q�gz�E��$1Or~$V0�`��	�2��~=�F	k@�T�}�
P�bX��c�js��c�0�
��rb2�@n4�������F ����a�����j����"�E��L7kd�j�{`EA���?ny��u $#N�K�1����Ykd#/1f�<[,��O�Y����j�|����b��b�<��b��zR��g�d���l���w/��w����/��������/������&_�x����z�����o>|��I�w��?���?�����~���<L�Yf@�&��������������!{��I��P�WIF����{�>�/��y�4���a�}<�lw@_�J�tj�
��M�E��&�Tt���Pi��S=�61���8&Y�(�m��_���_�<��������?�P��J"f�a���O�9[�ZO�]O��T���^vK���Vd���e�G��QZ+����I~F�����E������4����K���������	��F��z�./�/��8i��o�#5��W]�
 -�%	����A�^���g*��Sm��.���_m�;s��Tn�YE�S�Z�|���I�%�����g$/�&TokWUI�lD��x5��uV$�O@����� �����!� dc��W)N�]���*+�U�4�n�o�k��Q���J${S1�����qnuJ�\S��$-���+�Y�����X���z��A8p�\����QY429�E�3������VN���*4������K������;�{�&������!�ZbMO+H�d�O#v��O�7]��������J���K�\�����=�~�;|�|au���d*��l��R'q++���)�?���z�a�>�v�8HzP��@co�wkS��7��%D��|�[$�o^�����[�Fz��_�D��

���C�wIV��*�*V���b��j=��pS�3�Wf@�-�
��������e�<Y�����ZS��l��_
�b�����g�^tXE�hU���g<��J4�_|����&y����� +�����h�4:?$�������&Z$i����eB���06Nj_�&>�����I�f������o������?��/�?M���)H�#co$��@K_�n���Wq{{Wd���`�!����E��nQ�'G�g���'2��apt���1��
�����&#i�v�n6"�@�H0�7�E��E�8�]�H�:�b���/TCR6���&�AS���s
A���5l�y����[����P�I�������z3��q�c4�}�
f+��-[�R�S]�rl�S�+5N�i����1Z�{ |;���k`�-)Z0��v�
�B��r��Uy��{�k�9���P���J�MJ���+`��p'5�z���fF7T:37����>ky��n����aL�I���/8&R(�F9���C��5��)�n<="3�����J�u����&�D~�l�m1�����a�u�r�
Y��M���'�>_���K+�N��

R��)y�D�����<[��*}4#[�s`Cl���gT���3��y�w�Fw��:+�ru�o��x��)��P�%�1� 0�j�J#��p�V{2�
��N���0��T����tV�5M8F{�7zq�(��:�:�O�N*M�)�j��[_%���o����$?��������]g9��P�����������������#-�t����8�t��EW�<�Rjb��5��y��V���Xe������ ��T%6��0���d�B������b�R���/�_���#����C��L����Hj��-�
��#����^�s)���=]:9ks{JD�dW%_?J7|�Cl�<����O��K�������-�������������9�L�k��j�����h��������P3dM
���H�b^�c��u�]����w�
��-Yi����4!�\��S{.��9=oC���C�sK����������z�eI1���f��u�'�>����������]�{\ ������S�YrZQ����������wo��Ps;�.B�e��:�%����^��zE����&K4���J�����lYM��zCz}z>�/�R�����r�g��
@#�O��
�J&M91u�l
�F����:�r�VD%��S�]D���O��"�a�n�W5��v�<�*U��t�ia;n�V�-s��]a��[KL����:�n�f����*��
>!�d0�����pt5s��;U)^Q�Y�N7p�����\~�}}���v���h<�����b2�������L�.���{������/��~�L�j���]z�6j�(z�,�&y�����J~�d_�k�����m����A��/�,��{/���C���1�m�L4T��#��9�v�����[s�#���%�����w*b.�{���"��x����_�_wH����NRq�k�/zp���n���Gg���8bW��~�����<�������+=���xZ�U�Y������<��h������N�,T08��OBJ�-��V��<G�;�F`x�?{�&���1M$������]�0��,��#A_��4m_��z&����B��������M���Vq�Y5����_�����j3Y����_^<nhY>/=��e^����*N��=�SN����
&�����`���Q����RL��'�f%���YN��@��}l,�'����@��*p��B*��Te��r����T�i���W��-/'��b�5jf&����^J3,^T�6���js�)Z��c ,�H�~�g�<[f��^kz�����(�=������<}����W����Q����V�T��c��������/yL�)C��M$X����ajIR��q��%�I���_
�W�i���g���7�����xe�g��/j�b��M/%-8��y�$��x��2���p���S|m���kJD=K7b��5��9tG�����q�_����x���iOf/��Z�l�3Jl�������K�|��I�����S��X�� ��#�_�_39����-�p��-��(*�:H�
��|Zi_����"y�s��U�M�.��P���:����F5�]��jD�A���%$�&m�-&W���$�G��P������~�wL�
��a���Dj]G������E��!���c�j#D��L������Y��5��t�N
�sXG4�Z->�q&��jK�N��!���.�N+i--�S��+�
���-(A0��2Z���lI_o��z�T����	ig��g����l�a�j�P:8R��Ht���z��t��E����CS��d��/�}iK�����Z�������������z���_�>�����v�$j��4���I=��&&��Q>Lpi(�R[4AP7G-��'���}%U/�<�	��e/��n����@��V4XqO}D�y�>e_�sR>�>��Imq?���U�t>p��/<���7��I��\���vn__=�i>���e���|�jyP�}���^��1)�Q�`(c�����O��dH��K=~$��#[��=8�a"��(��v%\��tZ	�+�������ps^w��[r��D����t����������������b������Y�Q��5��F�����YdN���Z���o��,��6�|�:>�#�����L
����G�����C��h�/��8�s�0��9�-k^���6��������� a`������4_�%�D ��)v��������9����������J0Y�cs�����Q�f���s�Ut�����D���
j�nP��`�
�'nS�z@#�"YZ%h��p�r���^�$?���Y��3�������q�(M��y9`sX{����\�Gv=LRP����N��
�t����P|
��p���Cr�h~���gE���
%���P`�-��9�r�s��`��,.$�=����m��i
�����r��<,�c�
a�Q�84ck�*#��a���fpv��������a lI�����r`7���z����!��'����������a6:BN��"_�xUI�?�ST�0@����<>���'rJ����3]30�}{s~t���������S���R���)n*�!�r�2���HR�a��CsX�����l��c|J�Px?���h�����v�<�����j8��5F_p1z�'��#�x%y�-�=�:�
_l>����m���Lr��S��dZM3<�!99
�k8j�G�t��I|�!�]�O��(�X�
��)��2�R�+r��������:y<t�pN&�=�Mnck#��h��h_}s�I�.���1 ��/�=�GZ���<)����yD�%	�����;��\L�c��K����p�C�_���q�[��J��`��k"
m���.�-��38��~>:z_�T���b����������a�eC'��\��YZQG,���0q�@��K�s�����{n����W1�>��}�M}��Wp�c���A}���3$	������;����z����M6���������77��*�wH��������!I� �#�|$���4� �o1Mx��=z�&���>��g�Z;>,>��-��?�>��=s Cg�/��a�[�7oO�o�3�	������$�|�[x��'gG�?�����(zL���[�ZpYe�JY�E5���k�����8ftH����?��|f���o�fF�D������134L~��yg�Jb���}��~�J�����;�n���b�����M�I�kx,�l���{?>9�?�������r;����fb�l'�^}���������w�M��w�D	w���M��u�u��/.K�]�]0��b-g����I���u����c��|u`B��?�N�_�[��Q��0E�Ur���-
��p|G=�S�g����r�aE����[��(�L`d��(�Fo����P��_�q��QQT��7���$W���p�#����O�R�k����7m�5^�u�h��Y���W������5�O��M���'�*�J������FP��a�n}�����
+'�k�������	�a@>����n3f��`�cf��I�Fa�J��.���1w*�1��P�C���i�^P���,�o7a��fU�k�8<�(h�p�_�����x�������v��yo������l�"��p���U���iYn8Y�������[���|�_`{%�Z��-<����D�Z �g��:��g���t�W�Q,��w��F0B��������k���	����n�����et�����^���a�7����47������#�������H�[��K�s������{q%H��ZN��~U��i�p�7p��������U�n	�a������
0�Nt�gp�%����Uz $v����T������4���}��Xx'/?��'Oy|p������B� pn��	`:�p?d�P7�:Y�����|��9��z�N���'E����M�d��a,maT����N����B��������t{����_����)�z����h||q2:�'�5�`��0"g��v~qG�_����X���!��	�����w�u%;D2�X
��a���5���6�������H���{q=v^\N�����B�'���@0����~B^���&�E��[�
����� �7=�������4�(��Gx}���#d�z_p����N��<�.g�/`����
�����?]��xy?���.����u�?K�������9�'�?��������
4�������.Fo1"��]���i^}��6*�^�]��~|�ft�'����v�=5�F�FF L�T�t�]Ci�k8�-���ri%�||���_�:���[�����(�5���P���-�u��l��gt1>������O�^�?�C�R:�RH����o`Db~!��a���c;>�8>eh�����nS	��O�������@I��:��pt����NC�_��#�l PpR7b���G1c������$�2;�0�%���>�]��r|���6z����c��3�����1X��M���"�X����?��r=�
Nsg�w�����W'g�;��~m��=�8�:���Pn�� 6sm��%n`�iq�����F�P�n��t��b�T��A�������3��W�Z=�oc������Q����H�K�����&�u/�b�f�������Af�|Q��x�0:����Q���#�]cd�<�R��&�����p`*��a`�� C���c���l����~Sl��HQ�.�2M�s?aj�>�dS�����-{��q�+�YVg����~���XG�
��J}��f��&����;�z��2F$�e�>t^�P����B�@�)���� ����7�������2���������G�qZ9U���.lpR4��Q���j�!��������1�	��,A����%%���������y��^�����W�1��9r����_g��������3��u��� ���<����zWie�-H�4�3b���X��Ho����1�0�sLLVo7,BQ���>]���������
�7��r~v���FO����P�v�Q���"��y��2*�j"q�{8�[BM��Z��C/I��kc����Km.�K���UB!���-X����DXk<VC���
SJ�����N�:�y��`,i(�B����kd�\Vb��p����5�L��rQ��p�v�
��r�l���n�69��j�r�V��2szh
Y.�IE�iX3���N"�������<'RH����y�j(����fWC(�#�c�0v��o��C@5Q".wa3*�����j[��v&�t��C�q���[�Y�/�k����� c�J��C>#��_���2-��i=�2�0��+$��g$��'o����	#���4+���YH"����A����[��+���'1���06��u�,4��0�`<�����������!b6���i�'��f*3��b@=���5�f�t��q��A�'F�20-&J���������{���S�!��e��0�w��&0H	��m���
s4+7�,7C�
��Un���s���]M�0u�N.A����������"�<[����������R�
���������x��
�r8��'^���0(���y���������`;s��Mw�L�����h�I��_$��i�<�)�U-�eM*��dND����Y3[i{F�.7m�m������&���)B������?zIE�J��_���>���c���}�E���?[jd���������m������NtP9>=9�ku�e#�?�������	�����WK�
o������NG_� |�����yzES��M's���GX��R�d�^���&�~t�e�����f4J����?tu�6M��}Q^�^c�*?�����f�2u��Q��q'x���0f?<p)f\
3bq�Ny||qK��c/{��h���5fX�����:���~�����py�0>Rl�1��F
����yC��gzAB B�{$����W��c�u�"��W���0O������
hx:zu|�?"���&�/�+9����-����C�����^-��������'���p'��B�����C:�$@@
u�d���T;X.L��\��-�s���!����tQ^c���#���p|1�8��@��Z�.�?IP-	���"���h��TC>8��U�!�UBCP����\?���+78p>���L/#��qW���b�zj����w������G������F��1:�8�Lt�a&�> ��D{�Pg����	v��x&��e�D~���p������?�0��<[���B7@*�����e5py���|@����nC�CLY�d��4H���7oG��m�r��7.�Y�X��>.2�f���a�,hmzF�� nKKsQu)ehSa0*~cP-���B���7Y�&�o�0�������'n���X���J���o+����*��gS������r6.m���OG2d��m��}���8�Vd��;���u�����������:U
Y�]���y�����B.�NE�_�������l\�O8x���K�����_��D*��!m�R����)s������.C�[��Q�f�>etv���%D7v��g��4p���r����l�3��������W��q���R�>��H�De9	s�����g�[�Q��A�E�'.3Q�(���_��$f���n+|�|r�p��9^\���=N����}�`�K�����[!���o����2�n����z����86t���F����{rCy�A#����������0�����KI�z`*����"	�r3��:pSz����n��d-�����o���X��%lyfC��h�����"����������4�>�`�E����o��}��/!����250"�K�_���K����������!@��kt���,m������U,d��w��6?�_����;��uU�C~�
<p�wq�&h����|������9=ZH��g��g�OO|z�����
D�O���<�����)x���������������z��>���;%����%ge#��w��RF�
�r���2@x<O����_``
�T2^Y�(���x�k�q���	��I6��l�I�*�l�MY��*����m�l�Y�L�IY�c�E�a�E)�s�F���/`|�m	�d��C������N�Q��9��Zb
�
��.�������������'i1Or���Y�m0.`�����{���Qj��Y-C��R�y��#��c�4�xm�s:��<&��;��&'N�����d6�Z4��B���F���1w��M�����������XSu"��>��&�>�B�o2 �� 5g<�tj�%����S*v�����F�c@�MJ�L�������b���y_��3��z���0?W�qbl��� C(��l����j���MDX�q�vH����:��#����[~Jc�*E?nf�@q�4�	�0��?�gQ�c�2+W6K�z�U0'P�+0I6Rl��{��.i��8F�|p
'2��''��j����jp�%.��/s��,4�
:�	����[&�@�]���h�6��'��`&��(��LB��w��C{*�Y:y�Byw#�b���m|����V���|�t62)}�����%��7��t2�,������	T��(�%������q�v�P�3�R��f�\VD��_
�v�������E��`���N��F��]@�M���2��I~?��!&`���x_��Ju`t.�,+&��@�e/%}qj����R�����7lDx���1��o��:lZH�����<&��C��v���lGx)��i)j����'��2f	��
<�(��u���������� ]h�q�-F��6������K_KdfA)�:����$��.�T�|�����.�<�R<L��Z#9U���{�^yvsY���4�����$2D6���g�D�-��.�[�R����<�G��[��������
���_�z2]	�O
��k5N���}���:�8�K~`��hs	Fh�D��<�$�k%G �RHa���lK����%��1����+�S���������n��>��c��w�'?�jr�z~.
�uU�\���6R����:�T��&J\���b����M9�7$$�m��|~t����n$�MLoF{N�T���a�-�5���	�����l<��?>c��m@Sl�H4~���-r6;�@��fu����U	�6�k��0�C��G�w�Lyw���(�YhyixDV�����%m�4.�yx��b�����������3���P�����C��J�au�$C.C������;u�o�oV7��g��Uzf;	8]�Jd�{�Q�2|g����
F������������6oO�f�������>���������-���Og�r����\���H�^}�4��N��x�$)�����I�����b�f�g��0Sz���+��C���T���`����C��
�=)b{�[q�����3�q���'��G1s�(�A����K��P���y�D�����i���B���*"2vq���yqQr����8��0��sK�1b����o�w��U�z��;���aD�������#fmb�$��J^ �l�pF�#�	��D	>�����i-�K\_�>\~>\���'9wt"8"����Wl������������>L��z`%��K�h��|������EY��?�U�it"G�t�X�����@#�jtg���n �)�V�a&fb����@�N,�>LE�3�\��kI���P�@�T%���I��MF��������c5�o��%����dQ�!�P���'a�k5j��/i,o��|@�'���2���L89wl�<�L�c�d�
�C8��W����ry��m-����|Z4�;��6��~��t&����#��s�����o{b7x�gC2��$|DF�0���^�ug��(��F&a��p9���9�p��lZJ�<aKNb<.���g�-�j����l��p������^�����e>T)F"���L"������sMG�$��M�\.�Io�]|�z!����)�Yc�@���xt|��	�<I�����$�
47v5��4�T��z_�9��>�("���}h����������J�!�q(�!oz�j��\O/��0����/@#�1���3p����t�%�A|'���[��A�h0otY%����P������ZT��"����:e/�Wo.E���6�wFO��G�g�/{�SnbM�����k�Nc�.9Q���C�u��jA5���(��7����Jg�,��K���������^6J3���Q���Ohal��zA�6k6z��n�:�����2���Y�o�j���OQO�l%(U3,�fEO�X" ��U���K��]��
)
�����7���Z?����P�1+6w��f���255h�3f����n'���g�����n6%P��^��AU�w-���r���|���%�7��d��y};�D
�����	����\`N<x��t���s�?��Y@=��oM�=���=����Ql4_�n���bB�C'��> �W
q����f!>`�7?���5�y� Q���y�C�4���u?p,��y �w�ke�-J�n�l��e��\G?� �}���������$K��3<y��8�[������Z6�_�_��7=����^l������,��n�lV�W�}��>��\bA
e�CK�EpE���7����{�l����^#�u%w�H R�
����dE��Y�{D2��7�'����1/��y�a�S��!rCM��&�)�|���J��7�)�����"f+L����`i�*7����k�b8��^<�
�.tS	a��^���U~*`Q���F�7����5�+�cxy�6'���D7hA�$=�����S-ux:����1�&��F������nc-Pdp���.���S��`v%B�@��-++j�4�A�����@�T��z��Gm�
_��7 r����l8�h;Hpp4�W����%!���`�7����\��8a�z��>�N{C���$O�D@����kr�2��Z�b�:���l������%@���?�x���35��D�zB�{��Jm`�ax�2\0������V�Y�,Uqh�����}o�����3������GZY����>~�g�!
C)<��{(���\~�r6�j!#q�s����34�#zo�W�����\���vY��i^>qly�
��;�!#6F<����s�����->���kf/i���6��7��:��"�!m�c��1�8����Te�lJ�eN�
�<,��hI��r�Dl��/K�;Hw�![RY�����%fwP�-���ZO(|��$�\��uBG�s:M��e���Q�N�w���&B}jX@��c��]�p�����@�)d��@P����r�����N��\��_3���J�1BBC�p�6�;���!��Ii�/���������F��Y
�����6b�3W�9h�"�Vo�r/7b��9�:���6��	����������x@�]���1��b��o��C4_s��V�������p��&[|m�������(0ppY3�D�2��p*���c|"�B���a��D�8>
Z8�{?W�W�
V��tE7���k��������Ke(�!0��v&V�\	Ss�����p\A�3ph��MI]���
�c���d@�o��g�D>C�S����\.��K��\�q�d����)D*�:-��D�?�:ku��<}���2�P�����"6^��M��u�d�� (j2��Cy}��	}p���-Z��(���G}-j�g������4,>���(��V�,�p���~��9���d��� �Q��P��$�u��o�oE����F�?H:���v���������1��l�7�����~� #+������[#��g��L�EG�>�P��Y7\�# U;$nqw�������s�-t|��:6�����i�-���\���'����sG���5��c1+�k�V����_����w>WN�,�t����pK�}e1��48�F�	��N��gX��8aB�7c����D�����7_W��������1�W������#�O�t�����%����f�Fw9[�u��=p<���b��qy�����I
vTn�'O��l���>pH��'����l�����jRz�+�tG�@��a��f6��3�G��H����t�:]CH���E8)f�/�C�}�h>'����6z����I���e�(�&.��9���q�L-��
y!���N+��)��)8�C�BTU �N�5��z�����fq�z?������LT��I3���lx/I�:bCQXq��h|�_4����s���������7v���W7��}�p�"��4`L9_��p��G�;���7g5F7���Pge�-n��^���O^�9 9��99��v�Mz��i�s�w� �(M[��=�p����Dd9�w�4g��%*=�
�r)x`H�P�����W�'`!����%���;6cB�7���j+z#���a\av�:��D�v�[�������hV=��v)��-~Q�M��Y���m1;�V9�Z������ptz�������@�%H=L8��Yn{��8�=+&��<:J�P���884�f�<cN������p�E ���I���<��L������p�y��6*7*?��k�|�3I��y����Rk(�$�IOO�t<tm��4x�95�E tV�3;&h��(���y�iGs#�������*���N��m�g�Y���7?������.���[�����C���s��[2qGIevJ�sfs��,[e�����"����7��'�~{|1��]��S�����Y2�5�C�������-|(����7pv�>]�-<I�_�j�����FX(0��E@]i�\e^�<(]r��Z�9�h���z8�d�A����^
�_����(P���$�/vO���M�sw��&�����w���pkK����l����y�N�|�����3m����������Zk.#=�{���;S�0��#�S�pt�iX�>��!�#����:��TvD�T�;�����\�
a.�
y��l���P9{��}��;�������us�U~D�����a)O������`a�Rj+V+AkVZPPN_tNS&��,���a�W��cC/	,�p2����a�B��t�=+�!{�V(Fe����x����\��M��$�eJ�m0�}�(,��G�7	�
�%���H9o1�-N
[���BeC�6��K�
o��mg�z������<��&�]���O
�1�h� �n��N��)�nM���	j���R4����q@�)�����(�3����S���n���������Vu=���s�Z��$������>O��������*�He��k�_�fW^J�)|����RKT���FS��[���?��v����l�z+"�^���pder���8�����k�r;=���<���6���lCT�2�0!��,����!|�����x�F���P�C����,�����U*�Ar.�#u����H�h����������� d�t�A�d��1�~r[g8�Zm�0�S�A�Hp)�@�����?1u��hS?��d�XXC���~w|�'�(���
n�~~<<wX���w�(�F#�f}`c��F0K��^�-}�q ���5�z�2v��g�����m��z�j<��`y�O�]�Pc���D��[�mF~��&��KX�h��v����*��d��!��	9bf[���Mu����~���F�	�=��{F�	�6�w�����Vd�
Nli��C�����d�'U�%F�,���kg�3_~�r�������.w�A&�p�28��ft�����y����<R-{LxUi���%lz�5\P���=����^�������{��`
�T��9����?�
]����Py�����7"��`-�MW������0�<�_�)o��A��k��{�W!���"8��Jk�	�H�������������������^k���
��-�O�G�(����P�������V�<�"�l��VP�$AvLHKB��:}�����
��.���,��`�I{_�u	x�u��Rk;!ST�\��H3��ovO�4���`�Ao]�O����c���Z�Q0
mu����m��i'_�Y�}!?M���
��G��G�Tz���4���;����������1�gT��}����C�~����BkM�&~��;�d�K'"�^�9�X������aKVOa;2���}����������/�@�����E����[|p~�\Uo��s;��#c$�?b�2g�$����nUj��2+Z�U�������������Y�,P���a_��u��������{p�%u�%�yv`�Ng�kr��%t(����|����b�~T��E�5,�h���fz�
hfm+��`�����Zf/)��g����k%6o�6����=�:��8���\�`������
#�v������+����]4����%����b&^�����
�-�I����� g�Y��JlD���P���k4>t�����i��,B��������9\����y�<���!�������|?_�g�GC]9=�,]9=
w��m���w�nL��-�<g����h�����NOO^G}�0o��������Z�����_@?��o ������}�������"�K
���zu<���8j���V��3��<������0FD��q�~��r�o�]�Q��b����-�����?�u��w%��������l�K��������NeO�@N����N#�X��O5x:W�6��g��?-���e�U��+�(,i]o�2���~<)�3�c�oQ�H��� �8��d^�}�t+��|�����L>�<��u��N�Y��sTQ����2U@y��E"�Y�!�(rz���_�1�=���6������2���K�
�RYJO��H�z�����c4�GZAg#{�����?����2��=�ub>�����i�(��J���u�
�w����&Y�5����?�>����+��*�fR�>�7�/�@I��[:�Ob�����uL��J2 Z��{�g�����:!O��O��8O���<����.R�^��=������~Z�j�;=�R�^�Z�dA^��Uz-��(��S��������_��V���*���p�-Q��#���������s�1%y��h���N�<'�x���0���Ai�H�_��*�Fwa��~6����r��Kr_8)��Lp9Z��wN��N�����c�:�����~�C�
�>fG�
WN�0.��&+�*.�����?-$-�Pw)�J�^�������NR�B��h�-|8��'z�O�C\�e�]�s���:[�*i �������������Uw�����2/J/�L)�{���.b%p���_G;�������f�5�B���[�	�G��|s�9��a����<~������/
.�SyI�Yh�"�.�����^qw���@`D1W%;���/Ib����j���	�)(��������.tp���Rw��^��b�����]����-�7 wZ4`��A� R,M��n�4��{g;���6J�*m�A�#1�@EO����p��G���IYM"V����M`~v�B�����}$���5��QY#���1�������qmg0���g_K*�m����;�C��Z�k�|���x�"h1���#���dM�/��0���` q�:9:>���+W�[�^�%�|1&��r��������QD�[�_P��yPD�	���+�&*���`��'oF1<�0':��gm
R,�093f�wT�
��9�G�y(�Ei��et"u����h*�Y�U���/����K�wg'����x���K�h�bR�w���j��-.K_
�Z���?����,�s7'b@\�8�$W�Aq�y��|.��'i�T��l|pC~C}J=����6�v3������4����|>i�2[HV����t|XM����fBW�i�����a��;0u�n5���T�#���1�:y���V��$z��`�G5~������h=������_�j���{�I��:�����g�c�k���"��%U?Lg+�T����\?���_�2��OD����fcg�L��2����=S�����c�w��s�d9P��6D��$fN�����uL��X��E��_�9�W�����#����������[W�r�����:E��a4q���������B����p�9 C��74	f�,���h4~������'���+~�������E��2�$8�+Q5��E�L:I�Y�)�$R����\����|��T�2��@K_���)J����6���%� ����'�e����?��A��yr?&(�@]E-Zj���dBu�K7�jOQ��k�7��1�BwiQ��%X��a	��I���iN�F�%m�y6�B��_�m��i���-��5G~u�r�g����o�e��h..D:o]��;�"�{���������O�H�8^���������5�w�5�������dj������F�v?,�+�
�rD��e��1����apwau�-�hAn"����Q���iT�1_����Fi��#�w,I��& �%��u�Y}i����W���UD�oS`��,��IT�U���6.g����Z��[Q�����@�z[���=g7����?/�_�<z�}�q �m}'���)
�hi���&TI���{twv���V�=���Y3}����,�h����i�+�h��q�U�D��+����7plu��@#������{u�5�<f�t�-{����l��k�<maD ���?c�
;-��ILU��8n�"���+��.��7�Ks�\.c������mY�^�!?�]�PJ��1	��b�IY�
�����ru�dA��8s��5�k/���0\�Ey]UuQLm�hV��;p>�=�O��:�
�����4�
}^|[m2��M����HY$���;���k�}�[�zX��Y!�M+��y:)���y���j�c�z��r���h
�!55T]��.����t5�Z�R�ta��_YL�������B/Xk2v-������ V���!�Y��8mt�q�c=��
������@"�Gt�wtG�����F��i�,�h�|���5u\e��Y3�m��,�1��q'�<���Ao0=X�	�,s�]����,���XTI���W�Mv%����1��O�dr=�A���6P��5��Q��<�
�g�>��()'���!KO�-Y����yHVq����I]�����Ns}`T��h��T[���6��"k���S�"k�A��|_���ov"�����$�.�:��rih��2�cr������LV�I?:mt�1���S�hs�)�PDk?�]��J"�dg���Hy.��i�(�� ����������["*��yn�3%�b%�P���8��A~_��fl�G��>J������Q������Rl�Gi����wZ�y[{6Os[�3J#�?ItQ�NZ�kWWTE1Z^�����,@������k�v��e;Y��Fl�.w ��T�w!�fdq�
�i@��h�vqA�6R�!�4�F�4�F��9-t����9�8��3���t�r ;��N��C���0�.�N['�FGX��nw�-)@���]�(v�}3;+�!��g!q�_��`#��9���h
���|����Uk�v'Y��|��4��`w�2�w�Pp)mCbm�nwt�n7�^�B"��N#�(V��$xd}�q���H[t!�o�rj]	Y�������4�r�i�&��h?�^fq���'q�o��h���c��&���Fs.h���R�oN�"�\���BId]y�p��P$��u������xp@��qOW�?����4n%��w����/*l@�>�3�������D���������F�_�&d�}�i�*��=�2�+5e�����(mR���w�N�fH�wq�d���.o�����E��7��� �T�ID�	�-�nA�S���k�E�Y�k���z���:u�f0b%���.��niS3�S���_S6 F�q��J�-��#c��E�������i�+��)���#�����X,T8�d�S���>L-Cl�
=�������#��gU�����S�h���ms��]Zg!;Yf���H�|��;If�T�>��:ce>��E����(F��HJ���f���5+���mv��������=��9��m��E�Nc���~��W#���d{�l�n��)>q/���BeH����3��@���W[��hy�q��qF��82��YS������dZ�ud���*�a�
�2����d��[��>�D������mX����n��*n�Pq�zB4n�#��k��g�'v�nx���1�������%��%lc�+������moUca�o���]�k.�F��J���=#�;H�U��^KVy����� j�
��;Y��7�^�U�?�ZU�\�j���3gu�`q[N����w���;���_;��y�v�W������;�����5i<
���_](	T�0+�����r�������*D<����u��%F�Yls|��8�v�)�&(''|;k���
��i_�R��->���������g���#���8�8;9�� y4���Pj=�^�7cL�o:{������?��?�/��M�0�}��T�[��tA>Kv��D��1oRL��x��/������~����y>��?Q����l��N���ge����(,<&s��������:-��JT����kx�W�Jj�&�
:���O=�C^�������J����!��%E����Q���"�T���m�-�������f����=0�sd��9��[�I!����� �C������7������7_�g�����������3{�|���o������O#�����'1����H�����/�<��~��o#���1i(���9�����4���/���"�$����Z�������\���xrv���G�����#������S������a���B��o�b���%�<p����|�����0P"��~���o�'����7$������_�
O�@<�E��	�$]���'���}��m��{��8��i"#J,�+Q��P��}���>�(OPw���U���������EQ�9���`,��O�����K��x���7��^��88"_�/��
�GA6�
V�S�m�O��:������������O�~��V<�sm��J0A������������(A�2h���$K�=����'5��\�=�������6�^�_�_���2���>&�M�7�#E��%%��3F��'U~R������}'/�/�$}$Q�_�{T�@�n�.�rD:���Tmb�Hc	z8�3#�e�@S���Z�J��o_���7�������={��a��j�����z���Ij|y��o�<yq�Dn�O�������o���������:>K��p,{�Xb�,f��4	L5m���O��C?EQ9,77p.X5��������o������?��YV����D�$G�l��`���,�-}u�\�%���:��$[��,��c�Wd��5(C��>��l������;���V��w���/��F�c����?�/���e�Q�+q��y���*��u�2��v`T��{�����R�H�<�H2��V�p�k�>#����U
�:Zx�K6�:L�e����^���	/�D��2xr)U�0�k�6|�I��<�m�E�l�*��w^�A3y����9��jM,�*���o3}Hjp�����4���xt��Ay{::��/��A�}�h���M�4Q�|�,R���a(�����
�4�fXQ�H��P	F��}Z-Kg%��xs��n�X�m�tw0��j��+��M�|U�����\�k�4j��k�u�~�,��N��.v*���V�PV��QZ:\���XK1M'|��blS�v�<Q����R�HsG%�Ou���H-�h�*��Bz%������9�"�!g�c����(�����S���.��	�.�gr��{:���uY���B�.l���t���Js=4cR��f�D�A�SJg5l,�h�����g�0��s�]a�0�!�%u�@-I��`jd3��ta����*��!U1�s�yF���fL,.K�C�+�tH1����lI#����t�R��q�HD����A�g��uV��ynN�-;J�����z��X�3Q@���f:�����x��<=H^�Zt�������zd�G�h�>�/u�k��i�@�� ��2�bI��o$/�F\9W�x�����+rH�������!��x_{�_��K ��Y{�}�i7ZY�I��+�Vz����-n���%��I@�#��#��j
�Y�_��S'1������q&6�Y�h,Z�Kr&�k"���%{'0E(IH��$\(G�w���I#y�U�+�Qn��2�a�PYm�,�g��'��.e�6���S����P\I�0���uVAC�>�����"[n8�m
�H{<�������V������/+]���l��QU�h���$���a����p��q�8��IA��Ze��V�A���N`z�A���$�����
L;d��x��c��8��{�������	����,��l�Ms���B)izsL��y��.��Z�)���A;)H%����n�<�v��O-����f�����l�6Lj�����aDg�:O�U��/���p�ep{�&f>�0�Sv��x����S&=;#�#]g���y��oi�m�g��W�Kr)�k�_�?�[p >�^�����������nf3PW�_P����o��hzx-�\��d�v9|�$5W�����=RX��kb�@
Y/S�!yQOqm�5��Q����i��7�P��p���4�����Y9D�kl	�5����|�Z�v�%t�����}J�'���j���GR�S������C>����f���Q��B����pUu���RD�!��_���t��qv>>�Z�������b��J��+�A�����\�K]Ja
���)��{xG�����}���*+�q(x��g/����@����@L$4�jM�x"{��q?~��D�k�\���|P��P��)��%L%'
���
���P^�!v�f���l�J���2�a!�������_;���fkQ�T u�r���$�dr�SG��*���.����25W�3�tJ���%|��J�j+�!�cy:��M�C��G�0����-$�q`Ora,�n2���O[�a�R_)����LL�B�I{��S^��+LuNF6jgw��%���+�M)��g���0��/�o������$N�_
oi#���O��lC��2�;R�����]����<Uc"��"�\��H?[g���ZR�8��(�	���h�|�?�=����N��}�??6���ew�U�)��m���?��Vk�X��k<���+��|�j��INQ��_��8Z.l`�0�������|��*��WA�R���t�Zm�}�W=�}y���?�&��t	P~��>�_2Z��]tL���9n��/��(�����ydN�@�����Z�����c��KY�9{Uy��ww�]Ufw�=���N��I.7�y�M`'#Q��]~S���a�$�Q�ku���.Z����������-l���T�P�Q����$_��{�')$�-��*�!y�.[�'�e��4�������x��8?��	|��RyLu���9S�w��=�.N��n�f���d�KyWD��PN�_+���]�W��c�7���������O�g��������B�6�{�M�:#��F/�����s����sL�5�����=N��<�=����}�0,�=s�Ge
7q����+�kjm��u�Z2�{`��� ��I���iO��i��j����h5�A������~�s�]�mj��o����;������$3�N����l
��P^�������"McC?�;�Q�T
/Y��E�"�V�S��
�e���l�5{�1�l_����t�����������$"��}3-�h�g���k2q$�J"�;������B3v�,��^*M_|�f^fR+�R��7�J!�U$����g�l����t�3U��C�����(��h;�d]gy�`���v�Z�"EH�IX���)7	�8�\����t�mJi��1�M�d5R$Z�	�k����@E����#���(����r�|�B���d�2���X�h�
\�Z�&9��$R�*�����/�B�eO;��xQ m��5f�E��Z�:�~_���<$o��
���tz�h
�]3m:
c������wR�%Sc��a)���}!���x�lj�������&J�x���%-������c]�����=F�6w��{.s��uxe��AY����<�o69�diC���� �q��b�D������6 �j%����A��L���{��J�w|�P/��t�M�)���x$@�o�%r��� ��������U�J�8J��/����W[������D�?~~r$���*�/=��ls��r�.Ph�}3���T�^���yZ��=)�Y������(����`�:��7����a6�w3m��/�'�����i�aW�-���8�j
����uz�DlFP�O��R*'��:����BS��K������jKV���)��p���R`\$e7n#��y�n�i�
��
-���s������;��hEN�`R��������J�/��>F-�s��uz����4U�����

J���j/�A)K��H��Y�1�������k�m��}{��67�
��A��7���w2�S:�t3�'�D���s�	�Y�/�s;����f)E�����d�G�\��3i��~Nw��,z�`���� h����'�(?��=iNN�����C�4��xW���5_?�������=�okHlH
���<*ai�2�-TC�t����U�=T�g��]��&����_��H��]�#��I.�2�]e��\*�#��a�R[�\�J�|����(�_��_��~�� �������=�=����Z����~�[��������x^�H�u��G�����/��D�tC������\:�NP�pm�?����T�LA>(|�;�0�g���x��=el?1}���3;����}�1��I��k�9h����?{��������Z���;R|vV���n�{RI�O4��������������
+f�u�G���<^f��@�Au���^�
%����q��q3���g����^�����M�m%l��Ry�(�R�p���e��mw����h����2��Z�I��� ��^?WT��7���(w<u+�9-�� �N�IC�2~�F��S���A��a]���~�H#,���%���e��s����Z�g����|��S6i���T�_
�1;
�5��2Df��~�hlh�tY�+>�����\�V�����;'�?J�5
�Z"��6y���%vk=�\��&sGb��{�m�=�>n�"G}�O_�Y0&A�E�'������2�J���?��kb�=�$�~6/����o����x�}o�1
>�,&���o~����^��E�����m�����~��1��uA��d��=H�l����������
�k�����!KYa��R�t������0�
{��T�P�r!+��R@��x�${cr�Nq�	�BE���,O��ah����;U��3�������l?K�"];��Q��
��������P�k��H'��������Aktbz�����f�_d���j�{���Qc����:u>p@4$�hd��NXi�3i�/+�d+�w��:���#H(�\(/��S=mr�A��K�v�����6PI'�#�O�a�3h�/�~�Kd�\$�`���[������O��8���+Qy�{�-)d��q'�{��jV��Qz�pZp�?�z�{iC�z���U����aI�;v����H���z��V����5,�����zY9O����s��S/�F���!�%$e��1:Y(��l�dy��5YQ��H��IgUI�du���xI���e�FGp���u�U���������d���R�#�v�E���Sg�Va_/k���h����/0)��G7qE���'�X�U��R�#�=Jn_�BD�}�E�3�E�I�l6U��F�~�m�Q���r{SK]����H!N%f�.
�N�G�����������K��]EG�O���Y�]���oH���V-��k���ntZS��t�W|f��o��n��?��L��ja�4���3�<p�_���=��]��0�V#���C�z�:Awe��UJ�=&x�l���}����=�a���yr6�=�Sxr�<�}���S����xU	��eW����u����o�����|b��������%�{WH'\�o���>�x334@�/�
��-��_i��|����0 ���NL�{������Lz����e
�]Qc���nt[J��4�mQ�V�De�N�="�/�h��PA�pE�l��L:p��4��~7��G ���}I�=��#��V�}��q`r�
QJ{A��1��t������%�����&��o���)]��sr���flM3��p|���M�j�L�6��:��E��C5������/tsQ�k<�}�	��!�`C��S��P��*�I4�99"�:??���[�������z����r|q�K�L�����DAOb��j�w��u��:��.���$�j:��~��������_&�8K�MAk���m�_�����>�*9t�����C��t�
����2�^���Z������y�TdWg���vO����B$8��
W�I�����������st��t�] m@T��W(��$����A�����__LF�?��(����G��3��a��{����4�UL?Q���<�������3<�~�����g2J�3��?}�09��7��+>fM�[G�g�{�'���k�2��h�%q��^HG�V�%����'�<�����}�+���?���*��z8��/Y�@�V����Xu	7�x�7"����}y`�H��t]�_���)Y
�Z^�o�r��{B��������a�O���>|�	���rh����L��$����E�uG���^(���������D
�=�O0��I~��n�[�e��i[���u����:R���t����Gim�1��N���C��,*��=qV�/^�=u�d�u��'�5s�G��]�?T������2�����p��o-�J�#]x��������$��yP�su�;�Q���x�v����pW���I:�O�2��,�|�,��y�Z�����A��u�&�Gw��E���m�kvY�o����Sb#[vPQ+7d�#�q������0LbNPh�?H�����(�XS���q�����O�0��{x~v9����
�5W[��c��T�����YZ\�f�.�>J9^�e
����5]�����+����Wi=Z��1>�L���X�����5�q���f�{~D��f�9��6).� �bR��1�����m���������!�����F���V5��zAC��J��
Q�n�`:4DV^c����s�m�,�b�g3�����v�.YW�������[%b\������0W�@��*�1���b������i$�{�GW)���6�����Q��k�c��aQ����vk5�p��R���uy+P����T�0��[�6����i���g���e:�@/U�=��N?�!3�";8��Ns{d��-��5x����v����u��`�$~�P4f�D�����s[�X��D����Z�0e����G���'��M&����O���A3;d�\7�h/��Sw�'>�_9�4bP�"N��#�k���3L%#��M!�R����P�@	2���n^���t�$�Y6�N���b,#9$�Z������UP��
6:�P`g+���\��9QA��=���0�S`g�c�5X+�m�5/{��L�1K���|T�B�3\��%a,DP2*s��2��db~���c#+���G�e$;=(�I#N��
!����Y�d���[�:���%(�7����o/�6[��xT^G.4'�M#�R�M\���A����J�6��^Am8}�Dn ����+�N�>(��l��4��|1c�T��G����0|]�C3�f�J�&���uva�m�n�Ynv��-��X��NA��O(���O�"�yJ�'3�����8�&AO���f�XH��M����n����b����?���N@v���b������kY�b�������
�Z6�/����\�;2'���y�,0�q���>��;*��m��ps�:|(B�t���T�6���,����]�R��-��a��E=�V�����y9J��N�,,,
��p@�B����b�s�p���3p&i��Cd5��M|���@��I�����q��a0�
|�����[v�0���J���*���/P9����\�k4����-2�]bP�3NX]e��{{O7�0^�b������^d�l��N����UZ��C�0�zc�:u`�e���I�g�!�g��
E���^����gK��w�i����9�A�ib�rV�,jK��H@�<�x����.���r��@�K�g5��X
.������nI�E����}��k�W�m�6��kQ~Qz�4�=��������f*j��~q�@@F��ki� 4���M-�e^� �P�0�]����-�p��i%�:��~�j!A�k'].E�'�l"X w����4��b�k�mS�Z.A�����38��u����R[���;
�����m�R�K4�p0z)6�c��]������X_���������<_������!������	2���8���N�0������Ke� ]�c����/���`�&���y��#;-�����~��0�`��=���vZ��l���/\y�;s�]�Z3l4�|�H�w����vo0��P�����4R	�X&9���pB�����p|�� w�M����]��_���G???�#D�U�7�PJc��p_t��qAZ$@���5���s_k�NkV�Q��O�	����B�����E;s���e������q�o�#�e�X�On��g�r�?���A��{"B�����_3i��>iMHw�o������Z�p�;Yx�m[�����]�-���R%�\�V#t��I��S'\�P��w����Z�W�`
�S�>�ti�@�
82i��(%V}�5Oo�mU�|AO`�Td�����~�����,/�\���D�(-0.�o������D}��dtZ�Oo/^>4b��m�4�����/�[*�&�Wg�c���ArUm���S�S���S���T��w@�G0cL�%T:_v?|���=�/.r�*�|�5vC���bv_�z��<-d�D�&�M���/a����{7#nUm�1�|\��IG��������~��K�5Xd������\��������8�� �v>�P�-�$X�b����� ���zM�z�\��E�����u���tw�]{m����S�sO$T�_�3�/J�I�C�����%-��4i���������R3��'$�Ort}e�v�r��5��h;�:4�������'��!�[������s$s��
�
\�9�wg]�H��'��"x����e<AZ��(��r~o�Q�i��*��
��(������9����&�lc������{$�#����������u�D{�c����p
���C��8����7uh�k o�k�<�u�`���f1�M�����8sJp��A�H��Zp���|�e����}�������O6Uh�U�H��Q�CC���=*�Z���<��vW��k�����3Id(e`1G�j����Cs�hN�K�r�H�����
��!��m5$f�L�����L��iv�����0{��`��<v�7Y�&��'@W��+��a�����u�����h�u\�e�7��l���R���*��cr��i��6"�Y������{�q������(?�=&XU��@��F���+s���=�0����O����ft��:����3��j�p�g��cA��]���e
��j���@'@�<�-B72��f���������JF2��Xw�,t�Pv���;:`;}:���f\��4s��Xntq�x��~Q�����>�)L��$k��2������2�~���}lw�����9�w[-�|���k�8����WA��p���Y����dv�pq�9^���F
@0��Xx�z-v
��!.�����n�0K�M�D��r->���n��{RPFP��lj��[�R�m��e1�U��e\nfyZG�Ud ���q#��V[�?�jQ��f�q�/f��;��2�G��?��U�l�9�a�Z��]�����#4�O���������C�bv�z��N�q���2+�Q����\�4���)��'���hY}�6�������XJye�A?%�~�xK������ET�vW���� Upf��3����q���m�&�'��<
�b����bX$���M�������i��
�%w�"�1������6���L����F�*��i~���#�a�'/4E��j#O��iA���@=������/|�L�%y�`�����`tTL�����M��,\bI��s��3�d�p�<���b|��B=����n@
���~A�OIe��{���T�~5��ky��?0S�{��h"X��0�R��0��;w������/�����z;��?<�	�Z���L�������3�y~b�Xn����4��J���^�;;t�m
2�R������W��W���)�g�����WTSf�U	�f��F'�E`�.(g
UI9�0]�J���S�>��Hg�=qO�h�s�WE2����|<��E��%��/�-\,�cw��
]����/���at����Og�x���f��z���W�^�]�����c��l����Q#�gV�U�/&���j�'���y6zs|4~����r|~�Y�;d3;	��-�%�3����yq|��t��5.1�k��9����	xQ�H��w�ZQ�t}[�������`�k��G�V<��C��u����*1+*�o����w������ �.������R,�$��w>L+�������Y�J��q�=ug�v���4psgX�0�������?��"m/�ADz)(��9���iA��/>Yl�w1!�8/&"c��������h���F�M|��#��T��s2�(��AKF�e��C�0�y �wW��P��T�C�-M�������?���v!���\�����!:�p�m�<TQ����"@����`hO$mJ�2Q48(/�������E���(�z�\��qF.�>����y�����9s��1��H��z+K����
v# �*����R'G��q�+��s��#+@�=i8#I���b�^�F���/���HZ���x�If����jZ�p�>Q��)u�$v`��u�n}��{����>3q��@=�0z�&���n&��4a�M�@�<�d3�5��:�7~eK��Iz�V��4���?l
~�>a�hdp����o�����^e����!}���5���Q��(7=���`�mF^O�<����`s��Oq� 	�uFm���������;�+S��}�K?2,�E��t��o��o��9����mQi[�[�)��E�id�W����2���C�E?-�g����w_�tU���%�g�0O`�}RY`e<����n��'i�c@v{��r��������]#es��_���+�w��_Q|#9�o���7n�����H.'"�y���Q����p)��w+p1>�6����r���>�x{SY��M?Y?o��M�����i����n&]Z�X���PV�-`'-e�D����`:�����C�M��K�b��
!�,��a��O����R"T�.�������e�+<���:mz�wE�c��M�,�7g��b�sr��]�d���3������91��C(�X��E���|�;��F<��w�x���e�����T���s>��������A��3���eh��/gw:����	10��N'��cl\5|�5�������3�8@��Y��I���q�R|��H��"�%��kd����-�:����-��s���3v�:���� E�?����S%���B��L77h�9~�=d�P���1(������D�j�4�r�k�3��ZBR]��"%j��
37d��.
��F�G���,8V�{���f�w���5�
���q�&��B���w"�p�0�^�8L.�u7�'���6�<;�*�.�������w��|�K�2��}�_�-jq�6e���������XQ8ua(����HlG&w	�����K��u�]��_���5����:�D,��Y<&��$��L�{���o��x�"�
�wMP�S�[���S�[0���<�.��C2���A�����`PU�$�����cY����Z�.��Y��6��4���"B�|�����]+
;�["�*o�'����{���q����@��[%��I�m��+#�6�H�V������P���%�~�x��{g	�H��ms�D0�p~V�-�����^�[����VO9�������x>�����C:[4�����x�TQlA��
*$}�D{�G�P/���K����9Ep�s*L�u��o���5�����\L�����Q�H@p0[t1�;�I�5��9������@���x���z"NA��T���9�7��Zph2��	0gY�E�2�{o
S�)��l
r^��A����]z�?��K��ua
4������4����v�����\��)c�U1�J�*���^������Ku`#�_�C2�S%�?�b�v3R���F}�J�N����H�����A�Z����^G�+x�Z��4"�*f
��i!�M����*e�Kq|�AQ>Q��m9�����"�����������a"�%�R���3y�2{��*��*��|kN(��L&����.{�C��k��.��V��U�����~-�}���E��RA�A�1�.W�O����|�b���e����R-������=��R�N�������������� ��f�f�m��t�U����r�V�*B��>���r�:�p�;J1i��6�R�	�,����>1����XM���Nv$����@a
������-+���������'�V%��#�{����	o��X�jj��cW�]��2�uY��RA�?mR|���������]<��)b��4�YG����j����Q�C	3�Y����Q���������bn����1��Zd�s�N���b�[r�+7>i:-�HG
9��37���O��U���p
���v:q�L��
����M����J���@c������?������R�D�S@|+d�
����r��
�c��1Z��:e����-3��[���o�����y�9wX�*7��Z��z�l�w�i�>���A��0q���]aZ�u�;���lB��:l|�Tf�a(Q{S��V�_3����
7m�r�Z'��@�^���a�^����.���-H<sn�.��I2���K[ ��f
�M�R�-~�d5��d��St�(���%��3���6��,��!���f�e
�]����$���������x��Qt<���(2�p�u���P
��6�k�8�����E�n0=p&?Q������aq
��������l��/Szc.��b)`~`���xi>��_���[1&0���w����k��XM�x_�*C���i�����Q��3h��^N]��h���}�D��g��ceD����B#=G��z��l0_,��qL������ ����6i�F���m���DG�OZJWe��I^H�[ZS��.�����'����-���z(�����
&F=E�H	�w��0k�$��W�����J�%����,&���{��+w&R;��������i��:����������7�)D����!��Y{��yX�~������]����������|?Wq��l�9��t������R���*��eEo7��<��,�W)t�aO�/|,|b�t���*�*W\���Q��*��u�� J6���R!�����������,�'�Es1����QGvT�^���1��7�K����S��u�k,�k�?��>�S�i:i
����`���Q�M�'�MHK
�����;;I��k8�M��x���
��}?m*����*rJ����� ��,�y^e������+BL?�x��W�$�l-�f��x�h�+�?(ozJ-�*p��-<�:����r%�j��yRRC���@���y=(1,��>�|F��@��1�%��h��q������f1L)R��bc���W2�m��s!��x�]�����RS��k$7O�����<��(�f�����3��Qr��!�r
�K��<U��(�V��4���j��K�w��e|������M�1���g����,������k������o����[n>U�:��;X�x.h{��9jw�^�oL��~5>K[������u|��.�������R"��:{���	�L�#-�1�����m�����y��o�	�(������W���g����ly}�$z����HgI����s�;��;����&�9	�e��f�_�]x��wm��&���M\L��5�v;�P�[�h^B9~�I65%�63��]�GZ�?h�����G���lF�^+��n��0g��h^�����~p�����2-�����v0h������v0i$�
������4�-nR6��5��z=���/��l<;���0�!���*��W� �k)�ei'!_����|U��/^����YGL��~���x�,q���&�X���XD��)���;��A,���V�v`��9���}�I��4�9�0��:��]�Z����:vS���M/I�	�t�L�hE�L]�E���{X_�����V�y \���������e[�)l����
3A��CB'e�&�[�k�5���������1����^��R����
�Wa��F�i��~o�5�UBuH����p��
|�\����P<���;@���f�y�w��S�f��~��:��%��Wb��mV�{7��zm������lu���Z����~�w����N;����n��G5��[��_�Z(3���B�@���nt�,�iU�(<n��"�*��0.��V\t(�Ax���h�Zz9�
��a,�j���s���z�A����������|0�������
sf���4�
��Bn����@���v	8����lKj����K`�:f����uK���MP��e��V�-����ys���
���,e6;�������s��\�'3�h�sid������W!�������]�����C�S���?�?��ug�I���C2�k!�|d6y�S�������	F���&Um�#�my��"o���g��r�u�bx���s	��k~w/�0��u�c�W�����MRTB5�����v��I�i�'�4���JK�8QQr]Z��2��/:b�9��K�h���k�#�_���%,;�����3b��QX�e��Qw�D�83�4�K��o����/�8�e��C	;��$F�MUM����������yr-!:8��eV��I9e~&�Q���%B.�KM�d����r`Z�"�-"��� ]J& ��f����-��_Ns��~����h9$��p�|�
{o�P>W=�����^p���uM�d[��0�vv*@�f�[�Q<����Za�-9�����$�p�,��7B9�����4����7�{��r�H�����Jv���x��6x�����mEc���r��wp ��4Bk�G:�:,)g��78�Kn�E@�c<IS�W<%��*Ln&R�������<$�8�6���w}��AfA;(���� �KZ~�q���P�/�cV8H����A��a�w�����\��������R�9&o�/��{�wIH�\��+tE����:��:8r���[YIWT����Ew��YJ�����a?�y-��oG��K ��F����������M�]��?ts�ux�9�w�fU����������\�KL��R
zG�9��G�dv����u�����u}t~��c������F��KN%��T��x��
}g��xI^1�,^�_�	�A�^	�c5�
����N��]MH�-�e)��D.�K��R;uh��I��-���6�
��2��`�CRZ|=�'k�Y)��������n����������i��A�	%��nJb�dj��b�E�G�0m���O~�=��N�	�9�o��D�5�C�e���!�F���k��M��B�>$��o��L�N4&6PG������tDb�f�Mj�|T���b����D�#�P�����������&��%.y���.�g��5#�B��K�H3��+�b��_���+�?��_��|��]��V����/'���a������z�.�5�H�VB�~:N�?/��h9(v@��	������JV��e�j	4�b	��h��#��*|�~H>�w>Fv+�������KL����,?�9���ha���J���x�o4�owA�g���\N����������[�?r���5�^��v�:�kN{�������j���g^�W����.�V}2*M�wF�fx	lU+�5�BI2��U��f���i:�8�VC���8ZF�ds����������TI�H�x+]�q�Y}�'�kS���*"(���"��0���R6��o��<�/r��-�����>�T]���	e�yF�M�TD\0B�Fp���C!������;2��'�*Y���l@�� K!{|N���Cx���1;����/L��3���LQ��ug�L�l�2����z5~:��0n���>EF`���p�4�lT�g�"�aS<��><z����8F�'��A���?�����������Jo��?�����g�l�9z���V�b� ���#���?~;��_�}��SgaB���Q$��E�:f�]�������L�6�nS+�������-9<�������O��#���;{�{���`�_�CJj*(�����<�i�d�=( �0V����d:�����;�;���?2�U�t��B	�N��^�l������������� :�g �z����U�^��������}�,1��%��M��A�6m����Ym%-� �������rgYA�{��!-�#}i��j�_
�"�����x�>D����~t��������x�����X���j�����:����[(Y����,�|�� �F
"w�� !>B������N�9��P"
{[2���X� �w���]�mb/������q�r�h�8~�����aq/3C��0s;�������1��{H���'�9�^"����������6XX���=�1�������tG�.j�{�_��&qp�G�S�_I�Za�����f��`3���@���%��f��t������a��?��-����`R8�����d�t��������``�g��� �p�����}�K�vy�b��o��7���X�� ��8Z#�Z=�x��.��1jJ�L)l�����mv����}���������e��p���sw�RZ�X��HL�j�DR���#�:4��i�����1�0�	��s�8z�8h5.������G/vv��%�Z�6
v2-0012-WIP-Add-support-for-copying-node-tree-into-single.patch.gzapplication/x-patch-gzipDownload
#5Andres Freund
andres@anarazel.de
In reply to: Andres Freund (#4)
Re: WIP: Generic functions for Node types using generated metadata

Hi,

On 2019-09-19 22:18:57 -0700, Andres Freund wrote:

While working on this I evolved the node string format a bit:

1) Node types start with the their "normal" name, rather than
uppercase. There seems little point in having such a divergence.

2) The node type is followed by the node-type id. That allows to more
quickly locate the corresponding node metadata (array and one name
recheck, rather than a binary search). I.e. the node starts with
"{Scan 18 " rather than "{SCAN " as before.

3) Nodes that contain other nodes as sub-types "inline", still emit {}
for the subtype. There's no functional need for this, but I found the
output otherwise much harder to read. E.g. for mergejoin we'd have
something like

{MergeJoin 37 :join {Join 35 :plan {Plan ...} :jointype JOIN_INNER ...} :skip_mark_restore true ...}

4) As seen in the above example, enums are decoded to their string
values. I found that makes the output easier to read. Again, not
functionally required.

5) Value nodes aren't emitted without a {Value ...} anymore. I changed
this when I expanded the WRITE/READ tests, and encountered failures
because the old encoding is not entirely rountrip safe
(e.g. -INT32_MIN will be parsed as a float at raw parse time, but
after write/read, it'll be parsed as an integer). While that could be
fixed in other ways (e.g. by emitting a trailing . for all floats), I
also found it to be clearer this way - Value nodes are otherwise
undistinguishable from raw strings, raw numbers etc, which is not
great.

It'd also be easier to now just change the node format to something else.

E.g. to just use json. Which'd certainly be a lot easier to delve into,
given the amount of tooling (both on the pg SQL level, and for
commandline / editors / etc). I don't think it'd be any less
efficient. There'd be a few more = signs, but the lexer is smarter /
faster than the one currently in use for the outfuncs format. And we'd
just reuse pg_parse_json rather than having a dedicated parser.

- Andres

#6David Fetter
david@fetter.org
In reply to: Andres Freund (#5)
Re: WIP: Generic functions for Node types using generated metadata

On Fri, Sep 20, 2019 at 03:43:54PM -0700, Andres Freund wrote:

Hi,

On 2019-09-19 22:18:57 -0700, Andres Freund wrote:

While working on this I evolved the node string format a bit:

1) Node types start with the their "normal" name, rather than
uppercase. There seems little point in having such a divergence.

2) The node type is followed by the node-type id. That allows to more
quickly locate the corresponding node metadata (array and one name
recheck, rather than a binary search). I.e. the node starts with
"{Scan 18 " rather than "{SCAN " as before.

3) Nodes that contain other nodes as sub-types "inline", still emit {}
for the subtype. There's no functional need for this, but I found the
output otherwise much harder to read. E.g. for mergejoin we'd have
something like

{MergeJoin 37 :join {Join 35 :plan {Plan ...} :jointype JOIN_INNER ...} :skip_mark_restore true ...}

4) As seen in the above example, enums are decoded to their string
values. I found that makes the output easier to read. Again, not
functionally required.

5) Value nodes aren't emitted without a {Value ...} anymore. I changed
this when I expanded the WRITE/READ tests, and encountered failures
because the old encoding is not entirely rountrip safe
(e.g. -INT32_MIN will be parsed as a float at raw parse time, but
after write/read, it'll be parsed as an integer). While that could be
fixed in other ways (e.g. by emitting a trailing . for all floats), I
also found it to be clearer this way - Value nodes are otherwise
undistinguishable from raw strings, raw numbers etc, which is not
great.

It'd also be easier to now just change the node format to something else.

E.g. to just use json.

+many

JSON's been around long enough to give some assurance that it's not
going away, and it's pretty simple.

Best,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#7Robert Haas
robertmhaas@gmail.com
In reply to: Fabien COELHO (#3)
Re: WIP: Generic functions for Node types using generated metadata

On Fri, Aug 30, 2019 at 9:03 AM Fabien COELHO <coelho@cri.ensmp.fr> wrote:

I have found this thread:

/messages/by-id/E1cq93r-0004ey-Mp@gemulon.postgresql.org

It seems that comments from committers discouraged me to go on… :-) For
instance Robert wanted a "checker", which is basically harder than a
generator because you have to parse both sides and then compare.

Well, I don't think I intended to ask for something that was more
difficult than a full generator. I think it's more that I had the
idea that a checker would be simpler. It's true that you'd have to
parse both sides and compare. On the other hand, a checker can be
incomplete -- only checking certain things -- whereas a generator has
to work completely -- including all of the strange cases. So it seemed
to me that a checker would allow for tolerating more in the way of
exceptions than a generator. A generator also has to integrate
properly into the build system, which can be tricky.

It seems like the approach Andres is proposing here could work pretty
well. I think the biggest possible problem is that any semi-serious
developer will basically have to have LLVM installed. To build the
software, you wouldn't need LLVM unless you want to build with JIT
support. But to modify the software, you'll need LLVM for any
modification that touches node definitions. I don't know how much of a
nuisance that's likely to be for people, especially people developing
on less-mainstream platforms. One concern I have is about whether the
code that uses LLVM is likely to be dependent on specific LLVM
versions. If I can just type something like 'yum/port/brew/apt-get
install llvm' on any semi-modern platform and have that be good
enough, it won't bother me much at all.

On the other hand, if I have to hand-compile it because RHEL version
$X only ships older LLVM $Y (or ships unexpectedly-newer version $YY)
then that's going to be annoying. We already have the same annoyance
with autoconf; at some times, I've needed to have multiple versions
installed locally to cater to all the branches. However, that's less
of a problem than this would be, because (1) updating configure is a
substantially less-common need than updating node definitions and (2)
autoconf is a much smaller piece of software than libclang. It builds
in about 1 second, which I bet LLVM does not.

To point to an analogous case, note that we pretty much have to adjust
a bunch of things every few years to be able to support new versions
of Visual Studio, and until we do, it Just Doesn't Work. That stinks.
In contrast, new versions of gcc often cause new warnings, but those
are easier to work around until such time as somebody gets around to
cleaning them up. But most developers get to ignore Windows most of
the time, whereas if this breaks for somebody, they can't really work
at all until they either work around it on their side or it gets fixed
upstream. So it's a significant potential inconvenience.

As a benchmark, I'd propose this: if the LLVM interfaces that this new
code would use work in all versions of LLVM released in the last 3
years and there's no indication that they will change in the next
release, then I'd feel pretty comfortable. If they've changed once,
that'd probably still be OK. If they've changed more than once,
perhaps we should think about a Perl script under our own control as
an alternative, so as to avoid having to keep adjusting the C code
every time LLVM whacks the interfaces around.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#8Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#7)
Re: WIP: Generic functions for Node types using generated metadata

Robert Haas <robertmhaas@gmail.com> writes:

It seems like the approach Andres is proposing here could work pretty
well. I think the biggest possible problem is that any semi-serious
developer will basically have to have LLVM installed. To build the
software, you wouldn't need LLVM unless you want to build with JIT
support. But to modify the software, you'll need LLVM for any
modification that touches node definitions. I don't know how much of a
nuisance that's likely to be for people, especially people developing
on less-mainstream platforms.

I'm afraid that's going to be a deal-breaker for lots of people.
It's fine for prototyping the idea but we'll need to find another
implementation before we can move to commit.

One concern I have is about whether the
code that uses LLVM is likely to be dependent on specific LLVM
versions.

Yeah, that's one of the reasons it's a deal-breaker. We've been able to
insist that everybody touching configure use the same autoconf version,
but I don't think that could possibly fly for LLVM. But without that,
all the derived files would change in random ways depending on who'd
committed last. Even if it's only whitespace changes, that'd be a mess.

regards, tom lane

#9Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#8)
Re: WIP: Generic functions for Node types using generated metadata

On Wed, Oct 2, 2019 at 12:03 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

I'm afraid that's going to be a deal-breaker for lots of people.
It's fine for prototyping the idea but we'll need to find another
implementation before we can move to commit.

Why do you think it will be a deal-breaker for lots of people? I mean,
if we get this to a point where it just requires installing some
reasonably modern version of LLVM, I don't see why that's worse than
having to do the same thing for say, Perl if you want to build
--with-perl, or Python if you want to build --with-python, or bison or
lex if you want to change the lexer and parser. One more build-time
dependency shouldn't be a big deal, as long as we don't need a really
specific version. Or am I missing something?

One concern I have is about whether the
code that uses LLVM is likely to be dependent on specific LLVM
versions.

Yeah, that's one of the reasons it's a deal-breaker. We've been able to
insist that everybody touching configure use the same autoconf version,
but I don't think that could possibly fly for LLVM. But without that,
all the derived files would change in random ways depending on who'd
committed last. Even if it's only whitespace changes, that'd be a mess.

I don't really see a reason why that would be an issue here. The code
Andres wrote just uses LLVM to parse the structure definitions from
our header files; the code generation stuff is hand-rolled and just
prints out C. It's basically two big arrays, one of which is indexed
by NodeTag and thus in a fixed order, and the other of which is an
array of all structure members of all node types. The latter doesn't
seem to be sorted in any terribly obvious way at the moment --
structure members are in order of occurrence within the corresponding
definition, but the definitions themselves are not in any
super-obvious order. That could presumably be fixed pretty easily,
though.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#10Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#9)
Re: WIP: Generic functions for Node types using generated metadata

Robert Haas <robertmhaas@gmail.com> writes:

On Wed, Oct 2, 2019 at 12:03 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

I'm afraid that's going to be a deal-breaker for lots of people.
It's fine for prototyping the idea but we'll need to find another
implementation before we can move to commit.

Why do you think it will be a deal-breaker for lots of people? I mean,
if we get this to a point where it just requires installing some
reasonably modern version of LLVM, I don't see why that's worse than
having to do the same thing for say, Perl if you want to build
--with-perl, or Python if you want to build --with-python, or bison or
lex if you want to change the lexer and parser. One more build-time
dependency shouldn't be a big deal, as long as we don't need a really
specific version. Or am I missing something?

Think it's available/trivially installable on e.g. Windows? I'm not
convinced. In any case, our list of build requirements is depressingly
long already.

The existing expectation is that we make our build tools in Perl.
I'm sure Andres doesn't want to write a C parser in Perl, but
poking around suggests that there are multiple options already
available in CPAN. I'd much rather tell people "oh, there's YA
module you need to get from CPAN" than "figure out how to install
version XXX of LLVM".

The other direction we could plausibly go in is to give up the
assuption that parsenodes.h and friends are the authoritative
source of info, and instead declare all these structs in a little
language based on JSON or what-have-you, from which we generate
parsenodes.h along with the backend/nodes/ files. I kind of
suspect that we'll be forced into that eventually anyway, because
one thing you are not going to get from LLVM or a pre-existing
Perl C parser is anything but the lowest-common-denominator version
of what's in the structs. I find it really hard to believe that
we won't need some semantic annotations in addition to the bare C
struct declarations. As an example: in some cases, pointer values
in a Node struct point to arrays of length determined by a different
field in the struct. How do we tie those together without magic?
I think there has to be an annotation marking the connection, and
we're not going to find that out from LLVM.

regards, tom lane

#11Andres Freund
andres@anarazel.de
In reply to: Robert Haas (#9)
Re: WIP: Generic functions for Node types using generated metadata

Hi,

On 2019-10-02 14:30:08 -0400, Robert Haas wrote:

On Wed, Oct 2, 2019 at 12:03 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

I'm afraid that's going to be a deal-breaker for lots of people.
It's fine for prototyping the idea but we'll need to find another
implementation before we can move to commit.

Why do you think it will be a deal-breaker for lots of people? I mean,
if we get this to a point where it just requires installing some
reasonably modern version of LLVM, I don't see why that's worse than
having to do the same thing for say, Perl if you want to build
--with-perl, or Python if you want to build --with-python, or bison or
lex if you want to change the lexer and parser. One more build-time
dependency shouldn't be a big deal, as long as we don't need a really
specific version. Or am I missing something?

It shouldn't be that bad. On windows it can just be a binary to install:
http://releases.llvm.org/download.html
and newer versions of visual studio apparently even have GUI support for
installing LLVM + clang + ...

One concern I have is about whether the
code that uses LLVM is likely to be dependent on specific LLVM
versions.

FWIW, after one forward-compatible code change (a convenience function
didn't exist), one configure check (3.7 is older than what we support
for JIT), gennodes.c generated exactly the same output with 3.7 and
the tip-of-tree libclang that I used for development.

I did not check further back, but 3.7 is plenty old.

The libclang API is part of the small set of "stable" APIs (which only
expose C) in LLVM, and the deprecation cycles are fairly long. That
obviously doesn't protect against accidentally adding dependencies on a
feature only available in newer libclang versions, but I don't think
we'd be likely to change the feature set of the node generation program
all that often, and we already have buildfarm animals using most llvm
versions.

Yeah, that's one of the reasons it's a deal-breaker. We've been able to
insist that everybody touching configure use the same autoconf version,
but I don't think that could possibly fly for LLVM. But without that,
all the derived files would change in random ways depending on who'd
committed last. Even if it's only whitespace changes, that'd be a mess.

I don't really see a reason why that would be an issue here. The code
Andres wrote just uses LLVM to parse the structure definitions from
our header files; the code generation stuff is hand-rolled and just
prints out C. It's basically two big arrays, one of which is indexed
by NodeTag and thus in a fixed order, and the other of which is an
array of all structure members of all node types. The latter doesn't
seem to be sorted in any terribly obvious way at the moment --
structure members are in order of occurrence within the corresponding
definition, but the definitions themselves are not in any
super-obvious order. That could presumably be fixed pretty easily,
though.

Yea, I don't think there should be any big problem here. The order
already is "consistent" between versions etc, and only depends on the
content of our include files. It's not quite right yet, because adding
a structure member currently can causes a too big diff in the generated
metadata file, due to renumbering of array indexes included in struct
contents of structs.

For the "structure members" array that is probably best solved by simply
removing it, and instead referencing the members directly from within
the node aray. That'll slightly increase the size (pointer, rather than
uint16) of the "node structs" array, and make it harder to iterate over
the members of all structures (uh, why would you want that?), but is
otherwise easy.

The strings table, which is currently "uniqued", is suboptimal for
similar reasons, and also performance (one more lookup in a separate
array). I suspect the best way there too might be to just inline them,
instead of storing them de-duplicated.

Inlining the contents of those would also make it fairly easy to update
the file when doing small changes, if somebody doesn't want to/can't
install libclang. We could probably include a few static asserts (once
we can have them on file scope) in the generated node file, to make
mistakes more apparent.

If we decide that size is enough of an issue, we'd probably have to
output some macros to reduce the amount of visible
re-numbering. So instead of something like

{.name = 2201 /* Result */, .first_field_at = 1857, .num_fields = 2, .size = sizeof(Result)},
we'd have
{.name = TI_STRINGOFF_RESULT, .first_field_at = TI_FIRST_FIELD_RESULT, .num_fields = 2, .size = sizeof(Result)},

#define TI_STRINGOFF_RESULT (TI_STRINGOFF_RESCONSTQUAL + 1)
#define TI_FIRST_FIELD_RESULT (TI_FIRST_FIELD_PLAN + 15)

(with a bit more smarts for how to name the string #defines in a
non-conflicting way)

Greetings,

Andres Freund

#12Andres Freund
andres@anarazel.de
In reply to: Tom Lane (#10)
Re: WIP: Generic functions for Node types using generated metadata

Hi,

On 2019-10-02 14:47:22 -0400, Tom Lane wrote:

Robert Haas <robertmhaas@gmail.com> writes:

On Wed, Oct 2, 2019 at 12:03 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

I'm afraid that's going to be a deal-breaker for lots of people.
It's fine for prototyping the idea but we'll need to find another
implementation before we can move to commit.

Why do you think it will be a deal-breaker for lots of people? I mean,
if we get this to a point where it just requires installing some
reasonably modern version of LLVM, I don't see why that's worse than
having to do the same thing for say, Perl if you want to build
--with-perl, or Python if you want to build --with-python, or bison or
lex if you want to change the lexer and parser. One more build-time
dependency shouldn't be a big deal, as long as we don't need a really
specific version. Or am I missing something?

Think it's available/trivially installable on e.g. Windows? I'm not
convinced. In any case, our list of build requirements is depressingly
long already.

As I wrote nearby, it's just a download of an installer away.

The existing expectation is that we make our build tools in Perl.
I'm sure Andres doesn't want to write a C parser in Perl, but
poking around suggests that there are multiple options already
available in CPAN. I'd much rather tell people "oh, there's YA
module you need to get from CPAN" than "figure out how to install
version XXX of LLVM".

As far as I can tell they're all at least one of
1) written in C, so also have build requirements (obviously a shorter
build time)
2) not very good (including plenty unsupported C, not to speak of
various optional extensions we use, not having preprocessor support,
...)
3) unmaintained for many years.

Did you find any convincing ones?

Whereas libclang / llvm seem very unlikely to be unmaintained anytime
soon, given the still increasing adoption. It's also much more complete,
than any such perl module will realistically be.

The other direction we could plausibly go in is to give up the
assuption that parsenodes.h and friends are the authoritative
source of info, and instead declare all these structs in a little
language based on JSON or what-have-you, from which we generate
parsenodes.h along with the backend/nodes/ files.

I think this should really work for more than just parsenodes (if you
mean primnodes etc with "friends"), and even more than just node types
(if you mean all the common node types with "friends"). For other Node
types we already have to have pretty complete out/readfuncs support
(e.g. to ship plans to parallel workers). and there's plenty other cases
where we can use that information, e.g. as done in the prototype
attached upthread:

On 2019-09-19 22:18:57 -0700, Andres Freund wrote:

Using that metadata one can do stuff that wasn't feasible before. As an
example, the last patch in the series implements a version of
copyObject() (badly named copyObjectRo()) that copies an object into a
single allocation. That's quite worthwhile memory-usage wise:

PREPARE foo AS SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, pg_catalog.array_to_string(c.reloptions || array(select 'toast.' || x from pg_catalog.unnest(tc.reloptions) x), ', '), c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid) LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid) WHERE c.oid = '1259';
EXECUTE foo ;

With single-allocation:
CachedPlan: 24504 total in 2 blocks; 664 free (0 chunks); 23840 used
Grand total: 24504 bytes in 2 blocks; 664 free (0 chunks); 23840 used

Default:
CachedPlan: 65536 total in 7 blocks; 16016 free (0 chunks); 49520 used
Grand total: 65536 bytes in 7 blocks; 16016 free (0 chunks); 49520 used

And with a bit more elbow grease we could expand that logic so that
copyObject from such a "block allocated" node tree would already know
how much memory to allocate, memcpy() the source over to the target, and
just adjust the pointer offsets.

And I'm currently prototyping implementing the
serialization/deserialization of UNDO records into a compressed format
using very similar information, to resolve the impasse that one side
(among others, Robert) wants efficient and meaningful compression of
undo records, while not believing a general compression library can
provide that, and the other side (most prominently Heikki), doesn't want
to limit format of undo record that much.

I kind of suspect that we'll be forced into that eventually anyway,
because one thing you are not going to get from LLVM or a pre-existing
Perl C parser is anything but the lowest-common-denominator version of
what's in the structs. I find it really hard to believe that we won't
need some semantic annotations in addition to the bare C struct
declarations. As an example: in some cases, pointer values in a Node
struct point to arrays of length determined by a different field in
the struct. How do we tie those together without magic?

I did solve that in the patchset posted here by replacing such "bare"
arrays with an array type that includes both the length, and the members
(without loosing the type, using some macro magic). I think that
approach has some promise, not just for this - I'd greatly appreciate
thoughts on the part of the messages upthread (copied at the bottom, for
convenience).

But also:

I think there has to be an annotation marking the connection, and
we're not going to find that out from LLVM.

libclang does allow to access macro "expansions" and also parsing of
comments. So I don't think it'd be a problem to just recognize such
connections if we added a few macros for that purpose.

On 2019-09-19 22:18:57 -0700, Andres Freund wrote:

The one set of fields this currently can not deal with is the various
arrays that we directly reference from nodes. For e.g.

typedef struct Sort
{
Plan plan;
int numCols; /* number of sort-key columns */
AttrNumber *sortColIdx; /* their indexes in the target list */
Oid *sortOperators; /* OIDs of operators to sort them by */
Oid *collations; /* OIDs of collations */
bool *nullsFirst; /* NULLS FIRST/LAST directions */
} Sort;

the generic code has no way of knowing that sortColIdx, sortOperators,
collations, nullsFirst are all numCols long arrays.

I can see various ways of dealing with that:

1) We could convert them all to lists, now that we have fast arbitrary
access. But that'd add a lot of indirection / separate allocations.

2) We could add annotations to the sourcecode, to declare that
association. That's probably not trivial, but wouldn't be that hard -
one disadvantage is that we probably couldn't use that declaration
for automated asserts etc.

3) We could introduce a few macros to create array type that include the
length of the members. That'd duplicate the lenght for each of those
arrays, but I have a bit of a hard time believing that that's a
meaningful enough overhead.

I'm thinking of a macro that'd be used like
ARRAY_FIELD(AttrNumber) *sortColIdx;
that'd generate code like
struct
{
size_t nmembers;
AttrNumber members[FLEXIBLE_ARRAY_MEMBER];
} *sortColIdx;

plus a set of macros (or perhaps inline functions + macros) to access
them.

I've implemented 3), which seems to work well. But it's a fair bit of
macro magic.

Basically, one can define a type to be array supported, by once using
PGARR_DEFINE_TYPE(element_type); which defines a struct type that has a
members array of type element_type. After that variables of the array
type can be defined using PGARR(element_type) (as members in a struct,
variables, ...).

Macros like pgarr_size(arr), pgarr_empty(arr), pgarr_at(arr, at) can be
used to query (and in the last case also modify) the array.

pgarr_append(element_type, arr, newel) can be used to append to the
array. Unfortunately I haven't figured out a satisfying a way to write
pgarr_append() without specifying the element_type. Either there's
multiple-evaluation of any of the types (for checking whether the
capacity needs to be increased), only `newel`s that can have their
address taken are supported (so it can be passed to a helper function),
or compiler specific magic has to be used (__typeof__ solves this
nicely).

The array can be allocated (using pgarr_alloc_ro(type, capacity)) so
that a certain number of elements fit inline.

Greetings,

Andres Freund

#13Robert Haas
robertmhaas@gmail.com
In reply to: Andres Freund (#12)
Re: WIP: Generic functions for Node types using generated metadata

On Wed, Oct 2, 2019 at 4:46 PM Andres Freund <andres@anarazel.de> wrote:

The existing expectation is that we make our build tools in Perl.
I'm sure Andres doesn't want to write a C parser in Perl, but
poking around suggests that there are multiple options already
available in CPAN. I'd much rather tell people "oh, there's YA
module you need to get from CPAN" than "figure out how to install
version XXX of LLVM".

As far as I can tell they're all at least one of
1) written in C, so also have build requirements (obviously a shorter
build time)
2) not very good (including plenty unsupported C, not to speak of
various optional extensions we use, not having preprocessor support,
...)
3) unmaintained for many years.

I find this argument to be compelling.

To me, it seems like having to install some random CPAN module is
probably more likely to be a problem than having to install LLVM. For
one thing, it's pretty likely that any given developer already has
LLVM, either because they're using clang as their C compiler in
general, or because their system has it installed anyway, or because
they've built with JIT support at least once. And, if they haven't got
it, their favorite packaging system will certainly have a build of
LLVM, but it may not have a build of Parse::C::Erratically.

Really, this has been a problem even just for TAP tests, where we've
had periodic debates over whether it's OK for a test to depend on some
new module that everyone may not have installed, possibly because
they're running some ancient Perl distribution (and our definition of
"ancient" might make a historian giggle) where it wasn't bundled with
core Perl. Can we rewrite the test so it doesn't need the module? Do
we just skip the test, possibly masking a failure for some users? Do
we make it fail and force everybody to find a way to install that
module?

Just to be clear, I'm not in love with using LLVM. It's a big hairy
piece of technology that I don't understand. However, it's also a very
widely-supported and very capable piece of technology that other
people do understand, and we're already using it for other things. I
don't think we're going to do better by using something different and
probably less capable and less well-supported for this thing.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#14David Rowley
dgrowleyml@gmail.com
In reply to: Andres Freund (#4)
Re: WIP: Generic functions for Node types using generated metadata

On Fri, 20 Sep 2019 at 17:19, Andres Freund <andres@anarazel.de> wrote:

3) WIP: Improve and expand stringinfo.[ch].

Expands the set of functions exposed, to allow appending various
numeric types etc. Also improve efficiency by moving code to inline
functions - that's beneficial because the size is often known, which
can make the copy faster.

I've thought it might be useful to have appendStringInfoInt() and the
like before. However, I wondered if there's a good reason that the
format needs to be easily human-readable. We could reduce the size of
the output and speed up read/write functions if we were to use base16
or even base64 output.

I also think the Bitmapset output is pretty inefficient. The output is
optimized for something that Bitmapsets themselves are not optimized
for. The only time the current output will be efficient is if there
are very few set bits but the values of those bits are very far apart.
Bitmapsets themselves are not optimal for that, so I don't see why our
out function for it should be. ISTM it would be better encoded as a
hex string, or perhaps if we still want to optimize a bit for sparse
Bitmapsets then it could be done as word_number:word_value. However,
that would mean the output would be variable depending on the width of
the bitmapword.

David