git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 2762792) | patch
Improve planner's handling of SetOp plans.
2024年12月19日 22:02:25 +0000 (17:02 -0500)
2024年12月19日 22:02:25 +0000 (17:02 -0500)
commit 8d96f57d5cc79c0c51050bb707c19bf07d2895eb
Improve planner's handling of SetOp plans.

Remove the code for inserting flag columns in the inputs of a SetOp.
That was the only reason why there would be resjunk columns in a
set-operations plan tree, so we can get rid of some code that
supported that, too.

Get rid of choose_hashed_setop() in favor of building Paths for
the hashed and sorted alternatives, and letting them fight it out
within add_path().

Remove set_operation_ordered_results_useful(), which was giving wrong
answers due to examining the wrong ancestor node: we need to examine
the immediate SetOperationStmt parent not the topmost node. Instead
make each caller of recurse_set_operations() pass down the relevant
parent node. (This thinko seems to have led only to wasted planning
cycles and possibly-inferior plans, not wrong query answers. Perhaps
we should back-patch it, but I'm not doing so right now.)

Teach generate_nonunion_paths() to consider pre-sorted inputs for
sorted SetOps, rather than always generating a Sort node.

Patch by me; thanks to Richard Guo and David Rowley for review.

Discussion: https://postgr.es/m/1850138.1731549611@sss.pgh.pa.us
src/backend/optimizer/plan/planner.c diff | blob | blame | history
src/backend/optimizer/prep/prepunion.c diff | blob | blame | history
src/backend/optimizer/util/pathnode.c diff | blob | blame | history
src/include/optimizer/prep.h diff | blob | blame | history
src/test/regress/expected/subselect.out diff | blob | blame | history
src/test/regress/expected/union.out diff | blob | blame | history
src/test/regress/sql/subselect.sql diff | blob | blame | history
src/test/regress/sql/union.sql diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /