Thread: pl/R problem
Hi list, Information first: gds2=# select version(); version ---------------------------------------------------------------------------------------------------------- PostgreSQL 8.1.4 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20) (1 row) pl/R 0.6.2 R.2.3 (compiled from source) R_HOME is defined (before starting postmaster) gds2=# select * from pg_language; lanname | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl -----------+---------+--------------+---------------+--------------+-------- internal | f | f | 0 | 2246 | c | f | f | 0 | 2247 | sql | f | t | 0 | 2248 | plpgsql | t | t | 16393 | 16394 | plperl | t | t | 18064 | 18065 | plpythonu | t | f | 18067 | 0 | plperlu | t | f | 18064 | 18065 | plr | t | f | 24576 | 0 | Now, for the problem: gds2=# create function sd(_float8) returns float as '' language 'plr'; CREATE FUNCTION gds2=# select round(sd('{1.23,1.31,1.42,1.27}'::_float8)::numeric,8); server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Failed. Relevant server log piece: cannot find system Renviron Fatal error: unable to open the base package LOG: server process (PID 6792) exited with exit code 2 So, the question: what am I missing that enables it to find the "Renviron" Thank you. Don
On Tue, Aug 22, 2006 at 04:24:46PM -0500, Don Isgitt wrote: > gds2=# create function sd(_float8) returns float as '' language 'plr'; > CREATE FUNCTION > > gds2=# select round(sd('{1.23,1.31,1.42,1.27}'::_float8)::numeric,8); > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed. > > Relevant server log piece: > > cannot find system Renviron > Fatal error: unable to open the base package > > LOG: server process (PID 6792) exited with exit code 2 I can reproduce this on Solaris 9 with PL/R 0.6.2-alpha and R 2.2.1 if I rename $R_HOME/etc/Renviron to something else. I don't get the "unable to open the base package" error but I do get "cannot find system Renviron" and several other errors like "Error in options(...) : invalid editor parameter" followed by a segmentation fault. > So, the question: what am I missing that enables it to find the "Renviron" Does the file $R_HOME/etc/Renviron or $R_HOME/etc/<architecture>/Renviron exist and have permissions such that the PostgreSQL server can read it? The error "cannot find system Renviron" comes from the R function process_system_Renviron() in src/main/Renviron.c in response to process_Renviron() returning 0, which it does if its filename argument is NULL or if it can't open that file. -- Michael Fuhr
Michael Fuhr wrote: > On Tue, Aug 22, 2006 at 04:24:46PM -0500, Don Isgitt wrote: > >> gds2=# create function sd(_float8) returns float as '' language 'plr'; >> CREATE FUNCTION >> >> gds2=# select round(sd('{1.23,1.31,1.42,1.27}'::_float8)::numeric,8); >> server closed the connection unexpectedly >> This probably means the server terminated abnormally >> before or while processing the request. >> The connection to the server was lost. Attempting reset: Failed. >> >> Relevant server log piece: >> >> cannot find system Renviron >> Fatal error: unable to open the base package >> >> LOG: server process (PID 6792) exited with exit code 2 >> > > I can reproduce this on Solaris 9 with PL/R 0.6.2-alpha and R 2.2.1 > if I rename $R_HOME/etc/Renviron to something else. I don't get > the "unable to open the base package" error but I do get "cannot > find system Renviron" and several other errors like "Error in > options(...) : invalid editor parameter" followed by a segmentation > fault. > > >> So, the question: what am I missing that enables it to find the "Renviron" >> > > Does the file $R_HOME/etc/Renviron or $R_HOME/etc/<architecture>/Renviron > exist and have permissions such that the PostgreSQL server can read > it? The error "cannot find system Renviron" comes from the R > function process_system_Renviron() in src/main/Renviron.c in response > to process_Renviron() returning 0, which it does if its filename > argument is NULL or if it can't open that file. > > Hi Michael, Thanks for the reply and the research. The relevant file is [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 /home/djisgitt/R-2.3.0/etc/Renviron so I don't see that as the problem. I use R quite a lot, so I know the installation of R itself is good, but this is the first time I have tried pl/R. Also, pgsql works, so I assume there is something incorrect between pgsql and R. I just don't know what! If you have any more suggestions, or need more information, let me know. Don
Don Isgitt wrote: > Thanks for the reply and the research. The relevant file is > > [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron > -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 > /home/djisgitt/R-2.3.0/etc/Renviron > > so I don't see that as the problem. > > > I use R quite a lot, so I know the installation of R itself is good, but > this is the first time I have tried pl/R. Also, pgsql works, so I assume > there is something incorrect between pgsql and R. I just don't know what! > > If you have any more suggestions, or need more information, let me know. I just got back from a business trip, and am trying to get caught up -- give me a few days and I'll see if I can help (i.e. I should be able to find time on the weekend)... Joe
On Wed, Aug 23, 2006 at 08:38:01AM -0500, Don Isgitt wrote: > Thanks for the reply and the research. The relevant file is > > [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron > -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 > /home/djisgitt/R-2.3.0/etc/Renviron > > so I don't see that as the problem. Have you checked the permissions on all of the directories in the file's path? Have you verified that PostgreSQL is using the same $R_HOME? You can check the environment with plr_environ(): SELECT * FROM plr_environ() ORDER BY name; -- Michael Fuhr
Adam Witney wrote: > Don Isgitt wrote: > >> Michael Fuhr wrote: >> >>> On Tue, Aug 22, 2006 at 04:24:46PM -0500, Don Isgitt wrote: >>> >>> >>>> gds2=# create function sd(_float8) returns float as '' language 'plr'; >>>> CREATE FUNCTION >>>> >>>> gds2=# select round(sd('{1.23,1.31,1.42,1.27}'::_float8)::numeric,8); >>>> server closed the connection unexpectedly >>>> This probably means the server terminated abnormally >>>> before or while processing the request. >>>> The connection to the server was lost. Attempting reset: Failed. >>>> >>>> Relevant server log piece: >>>> >>>> cannot find system Renviron >>>> Fatal error: unable to open the base package >>>> >>>> LOG: server process (PID 6792) exited with exit code 2 >>>> >>>> >>> I can reproduce this on Solaris 9 with PL/R 0.6.2-alpha and R 2.2.1 >>> if I rename $R_HOME/etc/Renviron to something else. I don't get >>> the "unable to open the base package" error but I do get "cannot >>> find system Renviron" and several other errors like "Error in >>> options(...) : invalid editor parameter" followed by a segmentation >>> fault. >>> >>> >>> >>>> So, the question: what am I missing that enables it to find the >>>> "Renviron" >>>> >>>> >>> Does the file $R_HOME/etc/Renviron or $R_HOME/etc/<architecture>/Renviron >>> exist and have permissions such that the PostgreSQL server can read >>> it? The error "cannot find system Renviron" comes from the R >>> function process_system_Renviron() in src/main/Renviron.c in response >>> to process_Renviron() returning 0, which it does if its filename >>> argument is NULL or if it can't open that file. >>> >>> >>> >> Hi Michael, >> >> Thanks for the reply and the research. The relevant file is >> >> [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron >> -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 >> /home/djisgitt/R-2.3.0/etc/Renviron >> >> so I don't see that as the problem. >> >> >> I use R quite a lot, so I know the installation of R itself is good, but >> this is the first time I have tried pl/R. Also, pgsql works, so I assume >> there is something incorrect between pgsql and R. I just don't know what! >> >> If you have any more suggestions, or need more information, let me know. >> > > Hi Don, > > your functions work fine on my linux system. Just wondering, could the > fact that your R_HOME is installed under your home directory be causing > the problem? Postgesql will be running as a different user... > > adam > > Hi Adam, Thanks for checking that. There is world read access to R_HOME, so I hope that is sufficient. Don
Michael Fuhr wrote: > On Wed, Aug 23, 2006 at 08:38:01AM -0500, Don Isgitt wrote: > >> Thanks for the reply and the research. The relevant file is >> >> [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron >> -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 >> /home/djisgitt/R-2.3.0/etc/Renviron >> >> so I don't see that as the problem. >> > > Have you checked the permissions on all of the directories in the > file's path? Have you verified that PostgreSQL is using the same > $R_HOME? You can check the environment with plr_environ(): > > Yes. At least world read all the way. gds2=# select * from plr_environ() order by name; R_HOME | /home/djisgitt/R-2.3.0 > SELECT * FROM plr_environ() ORDER BY name; > > Thank you, Michael. I appreciate your help. Don
Don Isgitt wrote: > Michael Fuhr wrote: > >On Wed, Aug 23, 2006 at 08:38:01AM -0500, Don Isgitt wrote: > > > >>Thanks for the reply and the research. The relevant file is > >> > >>[djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron > >>-rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 > >>/home/djisgitt/R-2.3.0/etc/Renviron > >> > >>so I don't see that as the problem. > >> > > > >Have you checked the permissions on all of the directories in the > >file's path? Have you verified that PostgreSQL is using the same > >$R_HOME? You can check the environment with plr_environ(): > > > > > Yes. At least world read all the way. The best way to make sure this is the case I've found is su - postgres stat /home/djisgitt/R-2.3.0/etc/Renviron (or ls, whatever) I've seen people swearing they have world access all the way and then noticing they are missing a little bit somewhere. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
On Wed, Aug 23, 2006 at 09:37:17AM -0500, Don Isgitt wrote: > Michael Fuhr wrote: > >Have you checked the permissions on all of the directories in the > >file's path? Have you verified that PostgreSQL is using the same > >$R_HOME? You can check the environment with plr_environ(): > > > Yes. At least world read all the way. Just readable or also executable? What's the output of the following? ls -ld /home/djisgitt/R-2.3.0/etc /home/djisgitt/R-2.3.0 /home/djisgitt /home -- Michael Fuhr
Alvaro Herrera wrote: > Don Isgitt wrote: > >> Michael Fuhr wrote: >> >>> On Wed, Aug 23, 2006 at 08:38:01AM -0500, Don Isgitt wrote: >>> >>> >>>> Thanks for the reply and the research. The relevant file is >>>> >>>> [djisgitt@prs1 R-2.3.0]$ ls -l $R_HOME/etc/Renviron >>>> -rw-rw-r-- 1 djisgitt djisgitt 1151 Jun 1 11:42 >>>> /home/djisgitt/R-2.3.0/etc/Renviron >>>> >>>> so I don't see that as the problem. >>>> >>>> >>> Have you checked the permissions on all of the directories in the >>> file's path? Have you verified that PostgreSQL is using the same >>> $R_HOME? You can check the environment with plr_environ(): >>> >>> >>> >> Yes. At least world read all the way. >> > > The best way to make sure this is the case I've found is > > su - postgres > stat /home/djisgitt/R-2.3.0/etc/Renviron > (or ls, whatever) > > I've seen people swearing they have world access all the way and then > noticing they are missing a little bit somewhere. > > Quite so, Alvaro & Michael. Yes, world read as I said, but missing execute at one level. Sorry for my carelessness. It works as expected now. Thank you, Don
Don Isgitt wrote: > Quite so, Alvaro & Michael. Yes, world read as I said, but missing > execute at one level. Sorry for my carelessness. It works as expected now. > Ah, good to know. I'll add myself a todo to eliminate the crash in this scenario. I will include a fix in the next release, which will probably be sometime after postgres 8.2 beta starts. Joe