mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
This is a quick patch to fix a crash in pgquery_dictresult() introduced
recently. I just ran into it while running a set of python test scripts, and I'm not sure who the normal maintainer is for interfaces/python. John Nield
This commit is contained in:
parent
b60acaf568
commit
f5fea0808f
@ -1788,41 +1788,7 @@ pgquery_getresult(pgqueryobject * self, PyObject * args)
|
||||
n = PQnfields(self->last_result);
|
||||
reslist = PyList_New(m);
|
||||
|
||||
if ((typ = malloc(sizeof(int) * n)) == NULL)
|
||||
{
|
||||
PyErr_SetString(PyExc_SyntaxError, "memory error in getresult().");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (j = 0; j < n; j++)
|
||||
{
|
||||
switch (PQftype(self->last_result, j))
|
||||
{
|
||||
case INT2OID:
|
||||
case INT4OID:
|
||||
case OIDOID:
|
||||
typ[j] = 1;
|
||||
break;
|
||||
|
||||
case INT8OID:
|
||||
typ[j] = 2;
|
||||
break;
|
||||
|
||||
case FLOAT4OID:
|
||||
case FLOAT8OID:
|
||||
case NUMERICOID:
|
||||
typ[j] = 3;
|
||||
break;
|
||||
|
||||
case CASHOID:
|
||||
typ[j] = 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
typ[j] = 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
typ = get_type_array(self->last_result, n);
|
||||
|
||||
for (i = 0; i < m; i++)
|
||||
{
|
||||
@ -1944,41 +1910,7 @@ pgquery_dictresult(pgqueryobject * self, PyObject * args)
|
||||
n = PQnfields(self->last_result);
|
||||
reslist = PyList_New(m);
|
||||
|
||||
if ((typ = malloc(sizeof(int) * n)) == NULL)
|
||||
{
|
||||
PyErr_SetString(PyExc_SyntaxError, "memory error in dictresult().");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (j = 0; j < n; j++)
|
||||
{
|
||||
switch (PQftype(self->last_result, j))
|
||||
{
|
||||
case INT2OID:
|
||||
case INT4OID:
|
||||
case OIDOID:
|
||||
typ[j] = 1;
|
||||
break;
|
||||
|
||||
case INT8OID:
|
||||
typ[j] = 2;
|
||||
break;
|
||||
|
||||
case FLOAT4OID:
|
||||
case FLOAT8OID:
|
||||
case NUMERICOID:
|
||||
typ[j] = 2;
|
||||
break;
|
||||
|
||||
case CASHOID:
|
||||
typ[j] = 3;
|
||||
break;
|
||||
|
||||
default:
|
||||
typ[j] = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
typ = get_type_array(self->last_result, n);
|
||||
|
||||
for (i = 0; i < m; i++)
|
||||
{
|
||||
@ -2034,9 +1966,13 @@ pgquery_dictresult(pgqueryobject * self, PyObject * args)
|
||||
* one */
|
||||
s++;
|
||||
|
||||
for (k = 0; *s; s++)
|
||||
for (k = 0;
|
||||
*s && k < sizeof(cashbuf)/sizeof(cashbuf[0])-1;
|
||||
s++)
|
||||
{
|
||||
if (*s != ',')
|
||||
cashbuf[k++] = *s;
|
||||
}
|
||||
|
||||
cashbuf[k] = 0;
|
||||
val = PyFloat_FromDouble(strtod(cashbuf, NULL) * mult);
|
||||
|
Loading…
Reference in New Issue
Block a user