|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.4 1996/11/10 03:00:51 momjian Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.5 1997/05/12 07:17:23 vadim Exp $ |
11 | 11 | *
|
12 | 12 | * NOTES
|
13 | 13 | * Most of the read functions for plan nodes are tested. (In fact, they
|
@@ -1015,6 +1015,45 @@ _readParam()
|
1015 | 1015 | return(local_node);
|
1016 | 1016 | }
|
1017 | 1017 |
|
| 1018 | +/* ---------------- |
| 1019 | + * _readAggreg |
| 1020 | + * |
| 1021 | + * Aggreg is a subclass of Node |
| 1022 | + * ---------------- |
| 1023 | + */ |
| 1024 | +static Aggreg * |
| 1025 | +_readAggreg() |
| 1026 | +{ |
| 1027 | + Aggreg *local_node; |
| 1028 | + char *token; |
| 1029 | + int length; |
| 1030 | + |
| 1031 | + local_node = makeNode(Aggreg); |
| 1032 | + |
| 1033 | + token = lsptok(NULL, &length); /* eat :aggname */ |
| 1034 | + token = lsptok(NULL, &length); /* get aggname */ |
| 1035 | + local_node->aggname = (char*) palloc (length + 1); |
| 1036 | + memset (local_node->aggname, 0, length + 1); |
| 1037 | + strncpy (local_node->aggname, token, length); |
| 1038 | + |
| 1039 | + token = lsptok(NULL, &length); /* eat :basetype */ |
| 1040 | + token = lsptok(NULL, &length); /* get basetype */ |
| 1041 | + local_node->basetype = (Oid)atol(token); |
| 1042 | + |
| 1043 | + token = lsptok(NULL, &length); /* eat :aggtype */ |
| 1044 | + token = lsptok(NULL, &length); /* get aggtype */ |
| 1045 | + local_node->aggtype = (Oid)atol(token); |
| 1046 | + |
| 1047 | + token = lsptok(NULL, &length); /* eat :aggno */ |
| 1048 | + token = lsptok(NULL, &length); /* get aggno */ |
| 1049 | + local_node->aggno = atoi(token); |
| 1050 | + |
| 1051 | + token = lsptok(NULL, &length); /* eat :target */ |
| 1052 | + local_node->target = nodeRead(true); /* now read it */ |
| 1053 | + |
| 1054 | + return(local_node); |
| 1055 | +} |
| 1056 | + |
1018 | 1057 | /*
|
1019 | 1058 | * Stuff from execnodes.h
|
1020 | 1059 | */
|
@@ -1822,6 +1861,8 @@ parsePlanString(void)
|
1822 | 1861 | return_value = _readTemp();
|
1823 | 1862 | }else if (!strncmp(token, "SORT", 4)) {
|
1824 | 1863 | return_value = _readSort();
|
| 1864 | + }else if (!strncmp(token, "AGGREG", 6)) { |
| 1865 | + return_value = _readAggreg(); |
1825 | 1866 | }else if (!strncmp(token, "AGG", 3)) {
|
1826 | 1867 | return_value = _readAgg();
|
1827 | 1868 | }else if (!strncmp(token, "UNIQUE", 4)) {
|
|
0 commit comments