Обсуждение: Bug #693: python interface doesn't handle int8 correctly.
Ragnar Kjørstad (postgresql@ragnark.vesdtata.no) reports a bug with a severity of 3 The lower the number the more severe it is. Short Description python interface doesn't handle int8 correctly. Long Description This applies to postgresql 7.2.1 on linux x86 (32 bit) getresult() and dictresult() return int4 data in a python int object, but it should use a python long object, or it willoverflow. From postgresql-7.2.1/src/interfaces/python:pgquery_dictresult : switch (PQftype(self->last_result, j)) { case INT2OID: case INT4OID: case INT8OID: case OIDOID: typ[j] = 1; break; } ... switch (typ[j]) { case 1: val = PyInt_FromLong(strtol(s, NULL, 10)); break; } clearly this is wrong.... Sample Code No file was uploaded with this report
OK, can you suggest a patch? --------------------------------------------------------------------------- pgsql-bugs@postgresql.org wrote: > Ragnar Kjørstad (postgresql@ragnark.vesdtata.no) reports a bug with a severity of 3 > The lower the number the more severe it is. > > Short Description > python interface doesn't handle int8 correctly. > > Long Description > This applies to postgresql 7.2.1 on linux x86 (32 bit) > > getresult() and dictresult() return int4 data in a python int object, but it should use a python long object, or it willoverflow. > > >From postgresql-7.2.1/src/interfaces/python:pgquery_dictresult : > switch (PQftype(self->last_result, j)) { > case INT2OID: > case INT4OID: > case INT8OID: > case OIDOID: > typ[j] = 1; > break; > } > ... > switch (typ[j]) { > case 1: > val = PyInt_FromLong(strtol(s, NULL, 10)); > break; > } > > > clearly this is wrong.... > > > Sample Code > > > No file was uploaded with this report > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Could you supply a patch? --------------------------------------------------------------------------- pgsql-bugs@postgresql.org wrote: > Ragnar Kjørstad (postgresql@ragnark.vesdtata.no) reports a bug with a severity of 3 > The lower the number the more severe it is. > > Short Description > python interface doesn't handle int8 correctly. > > Long Description > This applies to postgresql 7.2.1 on linux x86 (32 bit) > > getresult() and dictresult() return int4 data in a python int object, but it should use a python long object, or it willoverflow. > > >From postgresql-7.2.1/src/interfaces/python:pgquery_dictresult : > switch (PQftype(self->last_result, j)) { > case INT2OID: > case INT4OID: > case INT8OID: > case OIDOID: > typ[j] = 1; > break; > } > ... > switch (typ[j]) { > case 1: > val = PyInt_FromLong(strtol(s, NULL, 10)); > break; > } > > > clearly this is wrong.... > > > Sample Code > > > No file was uploaded with this report > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
Bruce Momjian <pgman@candle.pha.pa.us> writes: > Could you supply a patch? Seems to be fixed already; at least INT8 is treated differently from INT4 in CVS tip... regards, tom lane