Bug #693: python interface doesn't handle int8 correctly.

Started by PostgreSQL Bugs Listalmost 24 years ago4 messagesbugs
Jump to latest
#1PostgreSQL Bugs List
pgsql-bugs@postgresql.org

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 will overflow.

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

#2Bruce Momjian
bruce@momjian.us
In reply to: PostgreSQL Bugs List (#1)
Re: Bug #693: python interface doesn't handle int8 correctly.

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 will overflow.

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
#3Bruce Momjian
bruce@momjian.us
In reply to: PostgreSQL Bugs List (#1)
Re: Bug #693: python interface doesn't handle int8 correctly.

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 will overflow.

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
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#3)
Re: Bug #693: python interface doesn't handle int8 correctly.

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