|
9 | 9 | *
|
10 | 10 | *
|
11 | 11 | * IDENTIFICATION
|
12 |
| - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump_sort.c,v 1.27 2010/01/02 16:57:59 momjian Exp $ |
| 12 | + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump_sort.c,v 1.28 2010/02/15 19:59:47 petere Exp $ |
13 | 13 | *
|
14 | 14 | *-------------------------------------------------------------------------
|
15 | 15 | */
|
@@ -163,7 +163,18 @@ DOTypeNameCompare(const void *p1, const void *p2)
|
163 | 163 | if (cmpval!=0)
|
164 | 164 | returncmpval;
|
165 | 165 |
|
166 |
| -/* Probably shouldn't get here, but if we do, sort by OID */ |
| 166 | +/* To have a stable sort order, break ties for some object types */ |
| 167 | +if (obj1->objType==DO_FUNC||obj1->objType==DO_AGG) |
| 168 | +{ |
| 169 | +FuncInfo*fobj1=*(FuncInfo**)p1; |
| 170 | +FuncInfo*fobj2=*(FuncInfo**)p2; |
| 171 | + |
| 172 | +cmpval=fobj1->nargs-fobj2->nargs; |
| 173 | +if (cmpval!=0) |
| 174 | +returncmpval; |
| 175 | +} |
| 176 | + |
| 177 | +/* Usually shouldn't get here, but if we do, sort by OID */ |
167 | 178 | returnoidcmp(obj1->catId.oid,obj2->catId.oid);
|
168 | 179 | }
|
169 | 180 |
|
|