Обсуждение: Backend Question
Can anyone tell me what the concept of a "group" is in backend/libpq/portal.c? There are functions like PQntuplesGroup, PQfnumberGroup, PQfsizeGroup, PQftypeGroup etc etc.
Chris Bitmead <chris@bitmead.com> writes: > Can anyone tell me what the concept of a "group" is in > backend/libpq/portal.c? There are functions like PQntuplesGroup, > PQfnumberGroup, PQfsizeGroup, PQftypeGroup etc etc. Once upon a time it probably supported something like the ability to merge tuples of different types into a SELECT result. It does not now: a little scanning shows there is no way to get no_groups above 1 in the current logic. You should realize, however, that all that backend-PQexec code is dead code and has been for a long time. It's unlikely that it works at all any more, considering all the changes that have gone on while it sits untested on the sidelines. I proposed ripping it out a few months ago, and no one objected ... but I haven't got round to it yet. regards, tom lane
Tom Lane wrote: > > Chris Bitmead <chris@bitmead.com> writes: > > Can anyone tell me what the concept of a "group" is in > > backend/libpq/portal.c? There are functions like PQntuplesGroup, > > PQfnumberGroup, PQfsizeGroup, PQftypeGroup etc etc. > > Once upon a time it probably supported something like the ability to > merge tuples of different types into a SELECT result. It does not > now: a little scanning shows there is no way to get no_groups above 1 > in the current logic. > > You should realize, however, that all that backend-PQexec code is dead > code and has been for a long time. It's unlikely that it works at all > any more, considering all the changes that have gone on while it sits > untested on the sidelines. I proposed ripping it out a few months ago, > and no one objected ... but I haven't got round to it yet. Why is it dead code? Why is it no longer necessary?
Chris Bitmead <chris@bitmead.com> writes: >> You should realize, however, that all that backend-PQexec code is dead >> code and has been for a long time. > Why is it dead code? Why is it no longer necessary? It's dead code because it's not called from anywhere. Once upon a time it was intended to be called by dynamically-loaded C functions, but the SPI interface superseded it a long time ago. The only reason for not ripping it out is the faint possibility that somewhere out there is someone with hoary old C-function code that still does queries via the backend-PQexec interface instead of SPI. But considering that backend-PQexec has been undocumented at least since Berkeley days, I rather doubt it. regards, tom lane
Tom Lane wrote: > You should realize, however, that all that backend-PQexec code is dead > code and has been for a long time. It's unlikely that it works at all > any more, considering all the changes that have gone on while it sits > untested on the sidelines. I proposed ripping it out a few months ago, > and no one objected ... but I haven't got round to it yet. Oh does it allow you to execute queries from within the backend? Sounds like a good thing to resurrect at some stage.