mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
Remove artificial restrictions on which node types have out/read funcs.
The initial version of gen_node_support.pl manually excluded most utility statement node types from having out/read support, and also some raw-parse-tree-only node types. That was mostly to keep the output comparable to the old hand-maintained code. We'd like to have out/read support for utility statements, for debugging purposes and so that they can be included in new-style SQL functions; so it's time to lift that restriction. Most if not all of the previously-excluded raw-parse-tree-only node types can appear in expression subtrees of utility statements, so they have to be handled too. We don't quite have full read support yet; certain custom_read_write node types need to have their handwritten read functions implemented before that will work. Doing this allows us to drop the previous hack in _outQuery to not dump the utilityStmt field in most cases, which means we no longer need manually-maintained out/read functions for Query, so get rid of those in favor of auto-generating them. Fix a couple of omissions in gen_node_support.pl that are exposed through having to handle more node types. catversion bump forced because somebody was sloppy about the field order in the manually-maintained Query out/read functions. (Committers should note that almost all changes in parsenodes.h are now grounds for a catversion bump.)
This commit is contained in:
@ -240,56 +240,6 @@ readBitmapset(void)
|
||||
* special_read_write attribute
|
||||
*/
|
||||
|
||||
static Query *
|
||||
_readQuery(void)
|
||||
{
|
||||
READ_LOCALS(Query);
|
||||
|
||||
READ_ENUM_FIELD(commandType, CmdType);
|
||||
READ_ENUM_FIELD(querySource, QuerySource);
|
||||
local_node->queryId = UINT64CONST(0); /* not saved in output format */
|
||||
READ_BOOL_FIELD(canSetTag);
|
||||
READ_NODE_FIELD(utilityStmt);
|
||||
READ_INT_FIELD(resultRelation);
|
||||
READ_BOOL_FIELD(hasAggs);
|
||||
READ_BOOL_FIELD(hasWindowFuncs);
|
||||
READ_BOOL_FIELD(hasTargetSRFs);
|
||||
READ_BOOL_FIELD(hasSubLinks);
|
||||
READ_BOOL_FIELD(hasDistinctOn);
|
||||
READ_BOOL_FIELD(hasRecursive);
|
||||
READ_BOOL_FIELD(hasModifyingCTE);
|
||||
READ_BOOL_FIELD(hasForUpdate);
|
||||
READ_BOOL_FIELD(hasRowSecurity);
|
||||
READ_BOOL_FIELD(isReturn);
|
||||
READ_NODE_FIELD(cteList);
|
||||
READ_NODE_FIELD(rtable);
|
||||
READ_NODE_FIELD(jointree);
|
||||
READ_NODE_FIELD(targetList);
|
||||
READ_ENUM_FIELD(override, OverridingKind);
|
||||
READ_NODE_FIELD(onConflict);
|
||||
READ_NODE_FIELD(returningList);
|
||||
READ_NODE_FIELD(groupClause);
|
||||
READ_BOOL_FIELD(groupDistinct);
|
||||
READ_NODE_FIELD(groupingSets);
|
||||
READ_NODE_FIELD(havingQual);
|
||||
READ_NODE_FIELD(windowClause);
|
||||
READ_NODE_FIELD(distinctClause);
|
||||
READ_NODE_FIELD(sortClause);
|
||||
READ_NODE_FIELD(limitOffset);
|
||||
READ_NODE_FIELD(limitCount);
|
||||
READ_ENUM_FIELD(limitOption, LimitOption);
|
||||
READ_NODE_FIELD(rowMarks);
|
||||
READ_NODE_FIELD(setOperations);
|
||||
READ_NODE_FIELD(constraintDeps);
|
||||
READ_NODE_FIELD(withCheckOptions);
|
||||
READ_NODE_FIELD(mergeActionList);
|
||||
READ_BOOL_FIELD(mergeUseOuterJoin);
|
||||
READ_LOCATION_FIELD(stmt_location);
|
||||
READ_INT_FIELD(stmt_len);
|
||||
|
||||
READ_DONE();
|
||||
}
|
||||
|
||||
static Const *
|
||||
_readConst(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user