Subject: Avoid using lcons and list_delete_first in plan_union_children()

From: "Hou, Zhijie" <[email-masked]>
Date: Tue, 1 Dec 2020 10:52:11 +0000

Hi,

In function plan_union_children(),  
I found the lcons and list_delete_first here is easy to be replaced by lappend and list_delete_last.

And I also found a previous commit do similar thing, so I try to improve this one.

Previous commit:
d97b714a219959a50f9e7b37ded674f5132f93f3

Best regards,
houzj

---

From: Heikki Linnakangas <[email-masked]>
Date: Tue, 1 Dec 2020 18:17:24 +0200

> d97b714a219959a50f9e7b37ded674f5132f93f3

This doesn't matter much in practice. I was able to measure a 
performance difference with a very extreme example: "SELECT 1 UNION 
SELECT 2 UNION ... UNION SELECT 10000". That was about 30% faster with 
this patch.

I don't see any downside, though. And like the commit message of 
d97b714a21, it's better to have good examples than bad ones in the code 
base, if someone copy-pastes it to somewhere where it matters.

But then again, I'm not excited about changing these one by one. If this 
is worth changing, what about the one in simplify_or_arguments()? Or in 
CopyMultiInsertInfoFlush()?

Perhaps it would make sense to invent a new Queue abstraction for this. 
Or maybe it would be overkill..

- Heikki