Re: support for MERGE
От | Alvaro Herrera |
---|---|
Тема | Re: support for MERGE |
Дата | |
Msg-id | 202201271515.rtftzh6boln3@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: support for MERGE (Alvaro Herrera <alvherre@alvh.no-ip.org>) |
Ответы |
Re: support for MERGE
|
Список | pgsql-hackers |
Here's MERGE v9. The main difference in this version is that I have changed the way MERGE is processed at parse analysis. In previous versions, a fake JOIN was constructed at that point; this was critiziced a long time ago ([1] is an example, but IIRC there were others) and had not been addressed. The new code is ~30 lines shorter. I think those can be attributed to comments explaining why the previous thing was so strange; with the new code we don't need to explain as much. In this rewrite, the two relations (target and source) are preserved and passed down separately, and the JOIN is constructed in early optimizer. This is what was suggested in those earlier sub-threads. The new code looks a bit simpler, though some things are not completely clear to me, such as why it works even though we have an empty 'joinaliasvars' for that join. Another odd thing is the way we pass the join condition from parse analysis to optimizer. In this code we're using the regular 'jointree' to store the source relation, and the 'quals' there refer to both the source relation and the target relation -- which is not in the jointree. Later at optimizer time we swap that jointree out with the manufactured one; and the quals are moved one layer down. So for a brief time, the quals can refer to Vars that are not part of the rangetable they are attached to. I still have some things to clean up, but it seems worth sharing at this point as the remaining items that I'm aware of are pretty minor. [1] https://www.postgresql.org/message-id/CA%2BTgmoZj8fyJGAFxs%3D8Or9LeNyKe_xtoSN_zTeCSgoLrUye%3D9Q%40mail.gmail.com -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/ "Las cosas son buenas o malas segun las hace nuestra opinión" (Lisias)
Вложения
В списке pgsql-hackers по дате отправления: