Fix EquivalenceClass code to handle volatile sort expressions in a more
predictable manner; in particular that if you say ORDER BY output-column-ref, it will in fact sort by that specific column even if there are multiple syntactic matches. An example is SELECT random() AS a, random() AS b FROM ... ORDER BY b, a; While the use-case for this might be a bit debatable, it worked as expected in earlier releases, so we should preserve the behavior for 8.3. Per my recent proposal. While at it, fix convert_subquery_pathkeys() to handle RelabelType stripping in both directions; it needs this for the same reasons make_sort_from_pathkeys does.
Showing
- src/backend/nodes/outfuncs.c 2 additions, 1 deletionsrc/backend/nodes/outfuncs.c
- src/backend/optimizer/path/equivclass.c 11 additions, 3 deletionssrc/backend/optimizer/path/equivclass.c
- src/backend/optimizer/path/pathkeys.c 158 additions, 89 deletionssrc/backend/optimizer/path/pathkeys.c
- src/backend/optimizer/plan/createplan.c 95 additions, 74 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/util/tlist.c 22 additions, 11 deletionssrc/backend/optimizer/util/tlist.c
- src/include/nodes/relation.h 6 additions, 2 deletionssrc/include/nodes/relation.h
- src/include/optimizer/paths.h 3 additions, 2 deletionssrc/include/optimizer/paths.h
- src/include/optimizer/tlist.h 3 additions, 1 deletionsrc/include/optimizer/tlist.h
Loading
Please register or sign in to comment