Thread: statement level trigger causes pltcl, plpython SIGSEGV

statement level trigger causes pltcl, plpython SIGSEGV

From
Joe Conway
Date:
I was working on trigger support for PL/R and ran across this bug in my 
own code related to STATEMENT level triggers. I decided to try it in PL/Tcl:

regression=# CREATE FUNCTION tcltrigfunc() RETURNS trigger AS '
regression'#    return OK
regression'# ' LANGUAGE pltcl;
CREATE FUNCTION
regression=#
regression=# CREATE TRIGGER tcltrig BEFORE INSERT OR UPDATE OR DELETE ON foo
regression-#     FOR EACH STATEMENT EXECUTE PROCEDURE tcltrigfunc();
CREATE TRIGGER
regression=# insert into foo values(11,'cat99',1.89);
The connection to the server was lost. Attempting reset: Failed.
connection pointer is NULL
!>

Hmm, same problem. Looks like PL/pgSQL does the right thing, but 
plpython will crash also. I don't think plperl supports triggers.

I'll try to submit a patch later tonight or tomorrow morning if no one 
beats me to it.

Joe




Re: statement level trigger causes pltcl,

From
"Neil Conway"
Date:
Joe Conway said:
> Hmm, same problem. Looks like PL/pgSQL does the right thing, but
> plpython will crash also. I don't think plperl supports triggers.

Right -- I only had time to implement support for statement-level
triggers in the backend itself and in PL/PgSQL. Thanks for taking the
time to update PL/TCL -- you're welcome to go ahead and fix PL/Python
as well, if you're so inclined.

-Neil


Re: statement level trigger causes pltcl, plpython SIGSEGV

From
elein
Date:
I thought that statement level triggers did not work yet.
Are they supposed to work in 7.4?

(But even if they don't work they shouldn't crash...)

elein

On Sun, Aug 03, 2003 at 08:04:11PM -0700, Joe Conway wrote:
> I was working on trigger support for PL/R and ran across this bug in my 
> own code related to STATEMENT level triggers. I decided to try it in PL/Tcl:
> 
> regression=# CREATE FUNCTION tcltrigfunc() RETURNS trigger AS '
> regression'#    return OK
> regression'# ' LANGUAGE pltcl;
> CREATE FUNCTION
> regression=#
> regression=# CREATE TRIGGER tcltrig BEFORE INSERT OR UPDATE OR DELETE ON foo
> regression-#     FOR EACH STATEMENT EXECUTE PROCEDURE tcltrigfunc();
> CREATE TRIGGER
> regression=# insert into foo values(11,'cat99',1.89);
> The connection to the server was lost. Attempting reset: Failed.
> connection pointer is NULL
> !>
> 
> Hmm, same problem. Looks like PL/pgSQL does the right thing, but 
> plpython will crash also. I don't think plperl supports triggers.
> 
> I'll try to submit a patch later tonight or tomorrow morning if no one 
> beats me to it.
> 
> Joe
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
> 


Re: statement level trigger causes pltcl, plpython SIGSEGV

From
Joe Conway
Date:
elein wrote:
> I thought that statement level triggers did not work yet.
> Are they supposed to work in 7.4?
> 
> (But even if they don't work they shouldn't crash...)
> 

Yeah, they work - not as everyone would like, but they work. All fixed 
now anyway.

Joe