Thread: PL/Ruby

PL/Ruby

From
Anton Nikiforov
Date:
Dear sirs,
Does someone made PL/Ruby working on 4.7.1?
I tried alot of things. Manual install, port install and nothing happend.
Please give me the idea how to fix the problem with
plruby.c: In function `pl_tuple_put':
plruby.c:498: error: too few arguments to function `tuplestore_begin_heap'
plruby.c: In function `pl_func_handler':
plruby.c:1450: error: too few arguments to function `tuplestore_begin_heap'
*** Error code 1

Stop in /usr/ports/databases/postgresql-plruby/work/plruby-0.3.8.
*** Error code 1

Stop in /usr/ports/databases/postgresql-plruby.

Re: PL/Ruby

From
David Garamond
Date:
Anton Nikiforov wrote:
> Dear sirs,
> Does someone made PL/Ruby working on 4.7.1?
> I tried alot of things. Manual install, port install and nothing happend.
> Please give me the idea how to fix the problem with
> plruby.c: In function `pl_tuple_put':
> plruby.c:498: error: too few arguments to function `tuplestore_begin_heap'
> plruby.c: In function `pl_func_handler':
> plruby.c:1450: error: too few arguments to function `tuplestore_begin_heap'
> *** Error code 1
>
> Stop in /usr/ports/databases/postgresql-plruby/work/plruby-0.3.8.
> *** Error code 1

I just experienced the same today. Apparently extconf.rb can't detect
7.4 correctly (at least on my Redhat 7.3) so it assumes your PG is 7.3
(and thus fails to build). Try using:

  $ ruby extconf.rb --with-pgsql-include=... --with-pgsql-version=74

That did it for me.

--
dave


Re: PL/Ruby

From
Anton Nikiforov
Date:
> Anton Nikiforov wrote:
>
>> Dear sirs,
>> Does someone made PL/Ruby working on 4.7.1?
...skipped....
David Garamond wrote:
>
>
> I just experienced the same today. Apparently extconf.rb can't detect
> 7.4 correctly (at least on my Redhat 7.3) so it assumes your PG is 7.3
> (and thus fails to build). Try using:
>
>  $ ruby extconf.rb --with-pgsql-include=... --with-pgsql-version=74
>
> That did it for me.
>
Thanks, David, but i did try this way already and in the case i build
plruby like this i have the following in the psql:
template1=# create function plruby_call_handler () returns opaque as
'/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' language 'C';
ERROR:  could not load library
"/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so": dlopen
'/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' failed.
(/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so: Undefined symbol
"rb_hash_delete")
template1=#

Re: PL/Ruby

From
David Garamond
Date:
Anton Nikiforov wrote:
> Thanks, David, but i did try this way already and in the case i build
> plruby like this i have the following in the psql:
> template1=# create function plruby_call_handler () returns opaque as
> '/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' language 'C';
> ERROR:  could not load library
> "/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so": dlopen
> '/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' failed.
> (/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so: Undefined symbol
> "rb_hash_delete")
> template1=#

Hm, I'm pretty clueless myself about the above, but a couple of observation:

1) the path seems strange, why does it install to
/usr/local/lib/ruby/1.6/ instead of the more usual
/usr/local/lib/ruby/site_ruby/1.6/ ...

2) what does 'ldd /usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' say?
Does it include the line similar to:

  libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0x40037000)

(*.so.1.6 in your case).

3) have you tried upgrading your Ruby installation to 1.8?

--
dave


Re: PL/Ruby

From
Anton Nikiforov
Date:
Hello David, thanks, changing to Ruby18 solved my problem after some
manual passages with woodoo around the computer :)

Best regards,
Anton Nikiforov

David Garamond wrote:
> Anton Nikiforov wrote:
>
>> Thanks, David, but i did try this way already and in the case i build
>> plruby like this i have the following in the psql:
>> template1=# create function plruby_call_handler () returns opaque as
>> '/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' language 'C';
>> ERROR:  could not load library
>> "/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so": dlopen
>> '/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' failed.
>> (/usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so: Undefined symbol
>> "rb_hash_delete")
>> template1=#
>
>
> Hm, I'm pretty clueless myself about the above, but a couple of
> observation:
>
> 1) the path seems strange, why does it install to
> /usr/local/lib/ruby/1.6/ instead of the more usual
> /usr/local/lib/ruby/site_ruby/1.6/ ...
>
> 2) what does 'ldd /usr/local/lib/ruby/1.6/i386-freebsd5/plruby.so' say?
> Does it include the line similar to:
>
>  libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0x40037000)
>
> (*.so.1.6 in your case).
>
> 3) have you tried upgrading your Ruby installation to 1.8?
>