Tom Lane wrote:
> Yes.
>
> 1) It's of no value to us
>
> 2) On many platforms there is a nonzero performance penalty
>
>
I think you have your head in the ground, but its your perogative. *You*
might not care, but anyone wanting to use thread-aware libraries (and I'm
*not* talking about threading in any Postgres code) will certainly value
it if
they can do so with some stability.
There's a clear benefit to being able to use such code. I suggested a
build option but you reject it out of hand. And in doing so, you also
lock out
the benefits that you *could* have as well, in future.. It seems religious,
which is unfortunate.
Are you suggesting that the performance penalty, apart from the
malloc performance (which is easily dealt with) is *material*?
An extra indirection in access to errno will hurt so much? Non-zero I can
accept, but clinging to 'non-zero' religiously isn't smart, especially
if its a
build-time choice.
We'll clearly move to multiple cores, and the clock speed enhancements will
slow (at best). In many cases, the number of available cores will
exceed the
number of instantaneously active connections. Don't you want to be able
to use all the horsepower?
Certainly on the sort of systems I work in my day job (big derivative
trading
systems) its the norm that the cache hit rate on Sybase is well over
99%, and
such systems are typically CPU bound. Parallelism matters, and will matter
more and more in future.
So, an ability to start incrementally adding parallel operation of some
actions
(whether scanning or updating indices or pushing data to the peer) is
valuable,
as is the ability to use threaded libraries - and the (potential?)
ability to use
embedded languages and more advanced libraries in Postgres procs is one
of the
advantages of the system itself. (I'd like to discount the use of a
runtime in a
seperate process - the latency is a problem for row triggers and functions)
James