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

Commit96471bf

Browse files
committed
Using strtol() on int8 values (input parameters or result sets) in
plpython would result in numeric overflows causing the backend toterminate abruptly.This patch fixes it.Bradley McLean
1 parenta6020b3 commit96471bf

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

‎src/pl/plpython/plpython.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
* MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
3030
*
3131
* IDENTIFICATION
32-
*$Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.6 2001/10/01 17:53:12 tgl Exp $
32+
*$Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.7 2001/10/04 15:45:49 momjian Exp $
3333
*
3434
*********************************************************************
3535
*/
@@ -229,6 +229,7 @@ static PyObject *PLyDict_FromTuple(PLyTypeInfo *, HeapTuple, TupleDesc);
229229
staticPyObject*PLyBool_FromString(constchar*);
230230
staticPyObject*PLyFloat_FromString(constchar*);
231231
staticPyObject*PLyInt_FromString(constchar*);
232+
staticPyObject*PLyLong_FromString(constchar*);
232233
staticPyObject*PLyString_FromString(constchar*);
233234

234235

@@ -1378,12 +1379,16 @@ PLy_input_datum_func2(PLyDatumToOb *arg, Form_pg_type typeStruct)
13781379
case'i':
13791380
{
13801381
if ((strncasecmp("int",type,3)==0)&&
1381-
((type[3]=='4')|| (type[3]=='2')|| (type[3]=='8'))&&
1382+
((type[3]=='4')|| (type[3]=='2'))&&
13821383
(type[4]=='\0'))
13831384
{
13841385
arg->func=PLyInt_FromString;
13851386
return;
13861387
}
1388+
elseif (strcasecmp("int8",type)==0 )
1389+
{
1390+
arg->func=PLyLong_FromString;
1391+
}
13871392
break;
13881393
}
13891394
case'n':
@@ -1464,6 +1469,12 @@ PLyInt_FromString(const char *src)
14641469
returnPyInt_FromLong(v);
14651470
}
14661471

1472+
PyObject*
1473+
PLyLong_FromString(constchar*src)
1474+
{
1475+
returnPyLong_FromString((char*)src,NULL,0);
1476+
}
1477+
14671478
PyObject*
14681479
PLyString_FromString(constchar*src)
14691480
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp