7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.45 1997/10/12 07:09:20 vadim Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.46 1997/10/16 06:58:38 vadim Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -1816,8 +1816,22 @@ transformGroupClause(ParseState *pstate, List *grouplist, List *targetlist)
1816
1816
gl = glist = lcons (grpcl , NIL );
1817
1817
else
1818
1818
{
1819
- lnext (gl ) = lcons (grpcl , NIL );
1820
- gl = lnext (gl );
1819
+ List * i ;
1820
+
1821
+ foreach (i , glist )
1822
+ {
1823
+ GroupClause * gcl = (GroupClause * ) lfirst (i );
1824
+
1825
+ if ( gcl -> entry == grpcl -> entry )
1826
+ break ;
1827
+ }
1828
+ if ( i == NIL ) /* not in grouplist already */
1829
+ {
1830
+ lnext (gl ) = lcons (grpcl , NIL );
1831
+ gl = lnext (gl );
1832
+ }
1833
+ else
1834
+ pfree (grpcl ); /* get rid of this */
1821
1835
}
1822
1836
grouplist = lnext (grouplist );
1823
1837
}
@@ -1836,8 +1850,7 @@ transformSortClause(ParseState *pstate,
1836
1850
char * uniqueFlag )
1837
1851
{
1838
1852
List * sortlist = NIL ;
1839
- List * s = NIL ,
1840
- * i ;
1853
+ List * s = NIL ;
1841
1854
1842
1855
while (orderlist != NIL )
1843
1856
{
@@ -1860,14 +1873,30 @@ transformSortClause(ParseState *pstate,
1860
1873
}
1861
1874
else
1862
1875
{
1863
- lnext (s ) = lcons (sortcl , NIL );
1864
- s = lnext (s );
1876
+ List * i ;
1877
+
1878
+ foreach (i , sortlist )
1879
+ {
1880
+ SortClause * scl = (SortClause * ) lfirst (i );
1881
+
1882
+ if ( scl -> resdom == sortcl -> resdom )
1883
+ break ;
1884
+ }
1885
+ if ( i == NIL ) /* not in sortlist already */
1886
+ {
1887
+ lnext (s ) = lcons (sortcl , NIL );
1888
+ s = lnext (s );
1889
+ }
1890
+ else
1891
+ pfree (sortcl ); /* get rid of this */
1865
1892
}
1866
1893
orderlist = lnext (orderlist );
1867
1894
}
1868
1895
1869
1896
if (uniqueFlag )
1870
1897
{
1898
+ List * i ;
1899
+
1871
1900
if (uniqueFlag [0 ] == '*' )
1872
1901
{
1873
1902
0 commit comments