Remove explicit FreeExprContext calls during plan node shutdown. The
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 23 Apr 2005 21:32:34 +0000 (21:32 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 23 Apr 2005 21:32:34 +0000 (21:32 +0000)
commit9b5b9616f49e0da74d227019e1ce20e73980dcb8
treef5c870aaa1147ab02344e114108eb9baec9a44fc
parent95c7bff47c3e5ed9016c0c6042431107d81090a4
Remove explicit FreeExprContext calls during plan node shutdown.  The
ExprContexts will be freed anyway when FreeExecutorState() is reached,
and letting that routine do the work is more efficient because it will
automatically free the ExprContexts in reverse creation order.  The
existing coding was effectively freeing them in exactly the worst
possible order, resulting in O(N^2) behavior inside list_delete_ptr,
which becomes highly visible in cases with a few thousand plan nodes.

ExecFreeExprContext is now effectively a no-op and could be removed,
but I left it in place in case we ever want to put it back to use.
src/backend/executor/execUtils.c
src/backend/executor/nodeBitmapIndexscan.c
src/backend/executor/nodeIndexscan.c