PL/Ruby

Started by Anton Nikiforovabout 22 years ago5 messagesgeneral
Jump to latest
#1Anton Nikiforov
Anton.Nikiforov@loteco.ru

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.

#2David Garamond
lists@zara.6.isreserved.com
In reply to: Anton Nikiforov (#1)
Re: PL/Ruby

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

#3Anton Nikiforov
Anton.Nikiforov@loteco.ru
In reply to: David Garamond (#2)
Re: PL/Ruby

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=#

#4David Garamond
lists@zara.6.isreserved.com
In reply to: Anton Nikiforov (#3)
Re: PL/Ruby

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

#5Anton Nikiforov
Anton.Nikiforov@loteco.ru
In reply to: David Garamond (#4)
Re: PL/Ruby

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:

Show quoted text

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?