Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite248016

Browse files
committed
plperl was not being quite paranoid enough about detecting 'undef' values
returned by Perl. Per report from Nicolas Addington.
1 parent6ff4087 commite248016

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

‎src/pl/plperl/plperl.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* ENHANCEMENTS, OR MODIFICATIONS.
3434
*
3535
* IDENTIFICATION
36-
* $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.65 2004/11/29 20:11:05 tgl Exp $
36+
* $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.66 2005/01/11 06:08:45 tgl Exp $
3737
*
3838
**********************************************************************/
3939

@@ -295,7 +295,7 @@ plperl_build_tuple_result(HV *perlhash, AttInMetadata *attinmeta)
295295
(errcode(ERRCODE_UNDEFINED_COLUMN),
296296
errmsg("Perl hash contains nonexistent column \"%s\"",
297297
key)));
298-
if (SvTYPE(val)!=SVt_NULL)
298+
if (SvOK(val)&&SvTYPE(val)!=SVt_NULL)
299299
values[attn-1]=SvPV(val,PL_na);
300300
}
301301
hv_iterinit(perlhash);
@@ -446,7 +446,7 @@ plperl_modify_tuple(HV *hvTD, TriggerData *tdata, HeapTuple otup)
446446
ereport(ERROR,
447447
(errcode(ERRCODE_UNDEFINED_COLUMN),
448448
errmsg("$_TD->{new} does not exist")));
449-
if (SvTYPE(*svp)!=SVt_RV||SvTYPE(SvRV(*svp))!=SVt_PVHV)
449+
if (!SvOK(*svp)||SvTYPE(*svp)!=SVt_RV||SvTYPE(SvRV(*svp))!=SVt_PVHV)
450450
ereport(ERROR,
451451
(errcode(ERRCODE_DATATYPE_MISMATCH),
452452
errmsg("$_TD->{new} is not a hash reference")));
@@ -467,7 +467,7 @@ plperl_modify_tuple(HV *hvTD, TriggerData *tdata, HeapTuple otup)
467467
(errcode(ERRCODE_UNDEFINED_COLUMN),
468468
errmsg("Perl hash contains nonexistent column \"%s\"",
469469
key)));
470-
if (SvTYPE(val)!=SVt_NULL)
470+
if (SvOK(val)&&SvTYPE(val)!=SVt_NULL)
471471
{
472472
Oidtypinput;
473473
Oidtypioparam;
@@ -873,7 +873,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
873873
TupleDesctupdesc;
874874
AttInMetadata*attinmeta;
875875

876-
if (SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVAV)
876+
if (!SvOK(perlret)||SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVAV)
877877
ereport(ERROR,
878878
(errcode(ERRCODE_DATATYPE_MISMATCH),
879879
errmsg("set-returning Perl function must return reference to array")));
@@ -911,7 +911,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
911911
svp=av_fetch(ret_av,funcctx->call_cntr, FALSE);
912912
Assert(svp!=NULL);
913913

914-
if (SvTYPE(*svp)!=SVt_RV||SvTYPE(SvRV(*svp))!=SVt_PVHV)
914+
if (!SvOK(*svp)||SvTYPE(*svp)!=SVt_RV||SvTYPE(SvRV(*svp))!=SVt_PVHV)
915915
ereport(ERROR,
916916
(errcode(ERRCODE_DATATYPE_MISMATCH),
917917
errmsg("elements of Perl result array must be reference to hash")));
@@ -933,7 +933,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
933933
AV*ret_av;
934934
FuncCallContext*funcctx;
935935

936-
if (SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVAV)
936+
if (!SvOK(perlret)||SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVAV)
937937
ereport(ERROR,
938938
(errcode(ERRCODE_DATATYPE_MISMATCH),
939939
errmsg("set-returning Perl function must return reference to array")));
@@ -957,7 +957,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
957957
svp=av_fetch(ret_av,funcctx->call_cntr, FALSE);
958958
Assert(svp!=NULL);
959959

960-
if (SvTYPE(*svp)!=SVt_NULL)
960+
if (SvOK(*svp)&&SvTYPE(*svp)!=SVt_NULL)
961961
{
962962
char*val=SvPV(*svp,PL_na);
963963

@@ -988,7 +988,7 @@ plperl_func_handler(PG_FUNCTION_ARGS)
988988
AttInMetadata*attinmeta;
989989
HeapTupletup;
990990

991-
if (SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVHV)
991+
if (!SvOK(perlret)||SvTYPE(perlret)!=SVt_RV||SvTYPE(SvRV(perlret))!=SVt_PVHV)
992992
ereport(ERROR,
993993
(errcode(ERRCODE_DATATYPE_MISMATCH),
994994
errmsg("composite-returning Perl function must return reference to hash")));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp