On Wednesday, November 7, 2018 3:25:31 PM CET Tom Lane wrote:
> Pavel Raiskup <praiskup@redhat.com> writes:
> > On Tuesday, November 6, 2018 7:28:21 PM CET Tom Lane wrote:
> >> Done. I realized that the immediate problem, rb_iterate(), was only
> >> added as of PG v10, which may explain why we hadn't heard complaints
> >> about this till now. So I've made the change only as far back as v10.
>
> > The 'rb_iterate' seems to exist at least in REL9_2_STABLE branch, so it is
> > probably much older.
>
> Oh! Hmm ... I think I jumped to conclusions when the part of my patch
> that touched struct RBTreeIterator failed to apply. But you're right,
> rb_iterate has been there since 9.0 now that I look more carefully.
> So we really ought to back-patch further. However:
>
> > That
> > said, I'm still not sure how this could work before ... Maybe it has not
> > been working for some time.
>
> Yeah, I'm now mighty confused about this as well. PL/Ruby is pretty old
> too, so how come nobody noticed this before? Is its rb_iterate call in
> someplace that hardly gets any use?
I can not authoritatively answer this (getting familiar with the code) but
many of the rb_iterate() calls were replaced with alternative API (if
available), so you might be right.
That said, I reproduced this by trigger function from tests/plt test-case
on the first try, more info and related fixes in [1]. But it is truth
that we haven't run the test-suite for RPM builds so far.
Might the reason be that nobody used plruby at all for a very long time?
[1] https://github.com/devrimgunduz/postgresql-plruby/pull/3
Pavel