|
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 | +staticAggreg* |
| 1025 | +_readAggreg() |
| 1026 | +{ |
| 1027 | +Aggreg*local_node; |
| 1028 | +char*token; |
| 1029 | +intlength; |
| 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 | }elseif (!strncmp(token,"SORT",4)) {
|
1824 | 1863 | return_value=_readSort();
|
| 1864 | + }elseif (!strncmp(token,"AGGREG",6)) { |
| 1865 | +return_value=_readAggreg(); |
1825 | 1866 | }elseif (!strncmp(token,"AGG",3)) {
|
1826 | 1867 | return_value=_readAgg();
|
1827 | 1868 | }elseif (!strncmp(token,"UNIQUE",4)) {
|
|