Discussion on the parallel sequential scan thread has revealed the
need for a way to make dsm_create() return NULL, instead of failing,
when we hit the system-wide maximum on the number of dynamic shared
memory segments than can be created. I've developed a small patch for
this which I attach here. It adds a second argument to dsm_create(),
an integer flags argument. I would like to go ahead and commit this
more or less immediately if there are not objections.
One question I struggled with is whether to keep the existing
dsm_create() signature intact and add a new function
dsm_create_extended(). I eventually decided against it. The
dsm_create() API is relatively new at this point, so there probably
aren't too many people who will be inconvenienced by an API break now.
If we go ahead and create dsm_create_extended() now, and then need
to make another API change down the line, I doubt there will be much
support for dsm_create_extended2() or whatever. So my gut is that
it's better to just change this outright, and keep
dsm_create_extended() as an idea for the future. But I could go the
other way on that if people feel strongly about it.
Thanks,
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company