On Mon, Mar 2, 2015 at 1:42 PM, Greg Stark <stark@mit.edu> wrote:
So earlier someone commented that using lists list_nth() seemed odd and a tuplestore might be better. In fact using lists this way is O(n^2). I've done some quick tests and it doesn't start being a problem until about 10,000 lines which obviously isn't a terribly common way to use pg_hba_settings. However we have in the past had people doing multi-tenant clusters with hundreds or thousands of databases in a cluster complaining about scalability of certain operations. It would be a shame to introduce a new one.
It does seem annoying to use a tuplestore as IIRC the function scan node also materializes the results in recent years. But at least it would scale linearly.
So I didn't get the memo about SFRM_Materialize. Here's a rewrite of this using that interface which seems to test ok up to 100k. At that point I start running into memory errors on reading the HBA file so I guess that's an indication that's large enough to stop worrying about it.