Improve the implementation of information_schema._pg_expandarray().
Tom Lane <tgl@sss.pgh.pa.us>
Improve the implementation of information_schema._pg_expandarray(). This function was originally coded with a handmade expansion of the array subscripts. We can do it a little faster and far more legibly today, by using unnest() WITH ORDINALITY. While at it, let's apply the rowcount estimation support that exists for the underlying unnest() function: reduce the default ROWS estimate to 100 and attach array_unnest_support. I'm not sure that array_unnest_support can do anything useful today with the call sites that exist in information_schema, but it can't hurt, and the existing default rowcount of 1000 is surely much too high for any of these cases. The psql.sql regression script is using _pg_expandarray() as a test case for \sf+. While we could keep doing so, the new one-line function body makes a poor test case for \sf+ row-numbering, so switch it to print another information_schema function. Discussion: https://postgr.es/m/1424303.1703355485@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/information_schema.sql | modified | +2 −5 |
| src/backend/utils/adt/arrayfuncs.c | modified | +3 −0 |
| src/include/catalog/catversion.h | modified | +1 −1 |
| src/test/regress/expected/psql.out | modified | +22 −18 |
| src/test/regress/sql/psql.sql | modified | +2 −2 |
Discussion
- Improving information_schema._pg_expandarray() 3 messages · 2023-12-23 → 2024-05-13