From 3e248edf4352fa3dc7c57f16f9bb4ec54c222693 Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" <vadim4o@yahoo.com> Date: Mon, 12 May 1997 07:17:23 +0000 Subject: [PATCH] Added _readAggreg() to work with T_Aggreg type. --- src/backend/nodes/readfuncs.c | 43 ++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 334f820dd06..fc5797e2be4 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.4 1996/11/10 03:00:51 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.5 1997/05/12 07:17:23 vadim Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -1015,6 +1015,45 @@ _readParam() return(local_node); } +/* ---------------- + * _readAggreg + * + * Aggreg is a subclass of Node + * ---------------- + */ +static Aggreg * +_readAggreg() +{ + Aggreg *local_node; + char *token; + int length; + + local_node = makeNode(Aggreg); + + token = lsptok(NULL, &length); /* eat :aggname */ + token = lsptok(NULL, &length); /* get aggname */ + local_node->aggname = (char*) palloc (length + 1); + memset (local_node->aggname, 0, length + 1); + strncpy (local_node->aggname, token, length); + + token = lsptok(NULL, &length); /* eat :basetype */ + token = lsptok(NULL, &length); /* get basetype */ + local_node->basetype = (Oid)atol(token); + + token = lsptok(NULL, &length); /* eat :aggtype */ + token = lsptok(NULL, &length); /* get aggtype */ + local_node->aggtype = (Oid)atol(token); + + token = lsptok(NULL, &length); /* eat :aggno */ + token = lsptok(NULL, &length); /* get aggno */ + local_node->aggno = atoi(token); + + token = lsptok(NULL, &length); /* eat :target */ + local_node->target = nodeRead(true); /* now read it */ + + return(local_node); +} + /* * Stuff from execnodes.h */ @@ -1822,6 +1861,8 @@ parsePlanString(void) return_value = _readTemp(); }else if (!strncmp(token, "SORT", 4)) { return_value = _readSort(); + }else if (!strncmp(token, "AGGREG", 6)) { + return_value = _readAggreg(); }else if (!strncmp(token, "AGG", 3)) { return_value = _readAgg(); }else if (!strncmp(token, "UNIQUE", 4)) { -- GitLab