| From: | "Hou, Zhijie" <houzj(dot)fnst(at)cn(dot)fujitsu(dot)com> | 
|---|---|
| To: | PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> | 
| Subject: | Use list_delete_xxxcell O(1) instead of list_delete_ptr O(N) in some places | 
| Date: | 2020-10-10 02:44:49 | 
| Message-ID: | b3517353ec7c4f87aa560678fbb1034b@G08CNEXMBPEKD05.g08.fujitsu.local | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Hi
I found some code places call list_delete_ptr can be replaced by list_delete_xxxcell which can be faster.
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index db54a6b..61ef7c8 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -1005,8 +1005,8 @@ sort_inner_and_outer(PlannerInfo *root,
 		/* Make a pathkey list with this guy first */
 		if (l != list_head(all_pathkeys))
 			outerkeys = lcons(front_pathkey,
-							  list_delete_ptr(list_copy(all_pathkeys),
-											  front_pathkey));
+							  list_delete_nth_cell(list_copy(all_pathkeys),
+												   foreach_current_index(l)));
 		else
 			outerkeys = all_pathkeys;	/* no work at first one... */
 
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index fe777c3..d0f15b8 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -650,7 +650,7 @@ adjustJoinTreeList(Query *parsetree, bool removert, int rt_index)
 			if (IsA(rtr, RangeTblRef) &&
 				rtr->rtindex == rt_index)
 			{
-				newjointree = list_delete_ptr(newjointree, rtr);
+				newjointree = list_delete_cell(newjointree, l);
Best regards,
houzj
| Attachment | Content-Type | Size | 
|---|---|---|
| 0001-Use-list_delete_xxxcell-instead-of-list_delete_ptr.patch | application/octet-stream | 1.5 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David G. Johnston | 2020-10-10 03:10:49 | Re: Possible NULL dereferencing null pointer (src/backend/executor/nodeIncrementalSort.c) | 
| Previous Message | movead.li@highgo.ca | 2020-10-10 01:50:02 | Re: Wrong statistics for size of XLOG_SWITCH during pg_waldump. |