elein wrote:

The new plperl returns sets by having the function return an array.

This requires that the entire array be
built before anything is returned.

It seems to me that that does not scale
very well. The technique of RETURN NEXT;
scales much better.



Indeed.

For example, you maybe selecting rows,
doing a little formating and adding some
information and returning the rows as you
process them. It the table you are selecting
is very large, you still have to hold the
results in memory to return them all at once.


Am I misunderstanding something or can
someone explain the reasoning?



The reasoning behind the current set of new features is simple - what has been provided is what we were able to get done before feature freeze. It is not by any means all that is intended by the plperlng project. The rest will have to wait for another release.


In an ideal implementation both techniques
would be possible since returning the array
is kind of cool ;-)





Quite so. I think we would have to provide a callback procedure to add a resultset member, and we could easily have it set a flag so that if it had been used in the function call we would use that method of accumulating resultset members, otherwise we would use the current all-at-once method.


But before we embark on any such exercise, we need to have a good discussion of future features and APIs. My intention was to start that discussion after we put the 7.5 stuff to bed. Please feel free to join the plperlng-devel mailing list.

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to