#include "postgres.h"#include "plpython.h"#include "plpy_resultobject.h"#include "plpy_elog.h"
Go to the source code of this file.
Functions | |
| static void | PLy_result_dealloc (PyObject *arg) |
| static PyObject * | PLy_result_colnames (PyObject *self, PyObject *unused) |
| static PyObject * | PLy_result_coltypes (PyObject *self, PyObject *unused) |
| static PyObject * | PLy_result_coltypmods (PyObject *self, PyObject *unused) |
| static PyObject * | PLy_result_nrows (PyObject *self, PyObject *args) |
| static PyObject * | PLy_result_status (PyObject *self, PyObject *args) |
| static Py_ssize_t | PLy_result_length (PyObject *arg) |
| static PyObject * | PLy_result_item (PyObject *arg, Py_ssize_t idx) |
| static PyObject * | PLy_result_slice (PyObject *arg, Py_ssize_t lidx, Py_ssize_t hidx) |
| static int | PLy_result_ass_slice (PyObject *arg, Py_ssize_t lidx, Py_ssize_t hidx, PyObject *slice) |
| static PyObject * | PLy_result_str (PyObject *arg) |
| static PyObject * | PLy_result_subscript (PyObject *arg, PyObject *item) |
| static int | PLy_result_ass_subscript (PyObject *self, PyObject *item, PyObject *value) |
| void | PLy_result_init_type (void) |
| PyObject * | PLy_result_new (void) |
Variables | |
| static char | PLy_result_doc [] |
| static PySequenceMethods | PLy_result_as_sequence |
| static PyMappingMethods | PLy_result_as_mapping |
| static PyMethodDef | PLy_result_methods [] |
| static PyTypeObject | PLy_ResultType |
| static int PLy_result_ass_slice | ( | PyObject * | arg, | |
| Py_ssize_t | lidx, | |||
| Py_ssize_t | hidx, | |||
| PyObject * | slice | |||
| ) | [static] |
Definition at line 243 of file plpy_resultobject.c.
References PLyResultObject::rows.
{
int rv;
PLyResultObject *ob = (PLyResultObject *) arg;
rv = PyList_SetSlice(ob->rows, lidx, hidx, slice);
return rv;
}
| static int PLy_result_ass_subscript | ( | PyObject * | self, | |
| PyObject * | item, | |||
| PyObject * | value | |||
| ) | [static] |
Definition at line 281 of file plpy_resultobject.c.
References PLyResultObject::rows.
{
PLyResultObject *ob = (PLyResultObject *) arg;
return PyObject_SetItem(ob->rows, item, value);
}
| static PyObject * PLy_result_colnames | ( | PyObject * | self, | |
| PyObject * | unused | |||
| ) | [static] |
Definition at line 137 of file plpy_resultobject.c.
References tupleDesc::attrs, i, sort-test::list, NameStr, tupleDesc::natts, PLy_exc_error, PLy_exception_set(), and PLyResultObject::tupdesc.
{
PLyResultObject *ob = (PLyResultObject *) self;
PyObject *list;
int i;
if (!ob->tupdesc)
{
PLy_exception_set(PLy_exc_error, "command did not produce a result set");
return NULL;
}
list = PyList_New(ob->tupdesc->natts);
for (i = 0; i < ob->tupdesc->natts; i++)
PyList_SET_ITEM(list, i, PyString_FromString(NameStr(ob->tupdesc->attrs[i]->attname)));
return list;
}
| static PyObject * PLy_result_coltypes | ( | PyObject * | self, | |
| PyObject * | unused | |||
| ) | [static] |
Definition at line 157 of file plpy_resultobject.c.
References tupleDesc::attrs, i, sort-test::list, tupleDesc::natts, PLy_exc_error, PLy_exception_set(), and PLyResultObject::tupdesc.
{
PLyResultObject *ob = (PLyResultObject *) self;
PyObject *list;
int i;
if (!ob->tupdesc)
{
PLy_exception_set(PLy_exc_error, "command did not produce a result set");
return NULL;
}
list = PyList_New(ob->tupdesc->natts);
for (i = 0; i < ob->tupdesc->natts; i++)
PyList_SET_ITEM(list, i, PyInt_FromLong(ob->tupdesc->attrs[i]->atttypid));
return list;
}
| static PyObject * PLy_result_coltypmods | ( | PyObject * | self, | |
| PyObject * | unused | |||
| ) | [static] |
Definition at line 177 of file plpy_resultobject.c.
References tupleDesc::attrs, i, sort-test::list, tupleDesc::natts, PLy_exc_error, PLy_exception_set(), and PLyResultObject::tupdesc.
{
PLyResultObject *ob = (PLyResultObject *) self;
PyObject *list;
int i;
if (!ob->tupdesc)
{
PLy_exception_set(PLy_exc_error, "command did not produce a result set");
return NULL;
}
list = PyList_New(ob->tupdesc->natts);
for (i = 0; i < ob->tupdesc->natts; i++)
PyList_SET_ITEM(list, i, PyInt_FromLong(ob->tupdesc->attrs[i]->atttypmod));
return list;
}
| static void PLy_result_dealloc | ( | PyObject * | arg | ) | [static] |
Definition at line 120 of file plpy_resultobject.c.
References FreeTupleDesc(), PLyResultObject::nrows, PLyResultObject::rows, PLyResultObject::status, and PLyResultObject::tupdesc.
{
PLyResultObject *ob = (PLyResultObject *) arg;
Py_XDECREF(ob->nrows);
Py_XDECREF(ob->rows);
Py_XDECREF(ob->status);
if (ob->tupdesc)
{
FreeTupleDesc(ob->tupdesc);
ob->tupdesc = NULL;
}
arg->ob_type->tp_free(arg);
}
| void PLy_result_init_type | ( | void | ) |
Definition at line 94 of file plpy_resultobject.c.
References elog, ERROR, and PLy_ResultType.
Referenced by PLy_init_plpy().
{
if (PyType_Ready(&PLy_ResultType) < 0)
elog(ERROR, "could not initialize PLy_ResultType");
}
| static PyObject * PLy_result_item | ( | PyObject * | arg, | |
| Py_ssize_t | idx | |||
| ) | [static] |
Definition at line 223 of file plpy_resultobject.c.
References NULL, and PLyResultObject::rows.
{
PyObject *rv;
PLyResultObject *ob = (PLyResultObject *) arg;
rv = PyList_GetItem(ob->rows, idx);
if (rv != NULL)
Py_INCREF(rv);
return rv;
}
| static Py_ssize_t PLy_result_length | ( | PyObject * | arg | ) | [static] |
Definition at line 215 of file plpy_resultobject.c.
References PLyResultObject::rows.
{
PLyResultObject *ob = (PLyResultObject *) arg;
return PyList_Size(ob->rows);
}
| PyObject* PLy_result_new | ( | void | ) |
Definition at line 101 of file plpy_resultobject.c.
References PLyResultObject::nrows, NULL, PLy_ResultType, PLyResultObject::rows, PLyResultObject::status, and PLyResultObject::tupdesc.
Referenced by PLy_cursor_fetch(), and PLy_spi_execute_fetch_result().
{
PLyResultObject *ob;
if ((ob = PyObject_New(PLyResultObject, &PLy_ResultType)) == NULL)
return NULL;
/* ob->tuples = NULL; */
Py_INCREF(Py_None);
ob->status = Py_None;
ob->nrows = PyInt_FromLong(-1);
ob->rows = PyList_New(0);
ob->tupdesc = NULL;
return (PyObject *) ob;
}
| static PyObject * PLy_result_nrows | ( | PyObject * | self, | |
| PyObject * | args | |||
| ) | [static] |
Definition at line 197 of file plpy_resultobject.c.
References PLyResultObject::nrows.
{
PLyResultObject *ob = (PLyResultObject *) self;
Py_INCREF(ob->nrows);
return ob->nrows;
}
| static PyObject * PLy_result_slice | ( | PyObject * | arg, | |
| Py_ssize_t | lidx, | |||
| Py_ssize_t | hidx | |||
| ) | [static] |
Definition at line 235 of file plpy_resultobject.c.
References PLyResultObject::rows.
{
PLyResultObject *ob = (PLyResultObject *) arg;
return PyList_GetSlice(ob->rows, lidx, hidx);
}
| static PyObject * PLy_result_status | ( | PyObject * | self, | |
| PyObject * | args | |||
| ) | [static] |
Definition at line 206 of file plpy_resultobject.c.
References PLyResultObject::status.
{
PLyResultObject *ob = (PLyResultObject *) self;
Py_INCREF(ob->status);
return ob->status;
}
| static PyObject * PLy_result_str | ( | PyObject * | arg | ) | [static] |
Definition at line 253 of file plpy_resultobject.c.
References PLyResultObject::nrows, PLyResultObject::rows, and PLyResultObject::status.
{
PLyResultObject *ob = (PLyResultObject *) arg;
#if PY_MAJOR_VERSION >= 3
return PyUnicode_FromFormat("<%s status=%S nrows=%S rows=%S>",
Py_TYPE(ob)->tp_name,
ob->status,
ob->nrows,
ob->rows);
#else
return PyString_FromFormat("<%s status=%ld nrows=%ld rows=%s>",
ob->ob_type->tp_name,
PyInt_AsLong(ob->status),
PyInt_AsLong(ob->nrows),
PyString_AsString(PyObject_Str(ob->rows)));
#endif
}
| static PyObject * PLy_result_subscript | ( | PyObject * | arg, | |
| PyObject * | item | |||
| ) | [static] |
Definition at line 273 of file plpy_resultobject.c.
References PLyResultObject::rows.
{
PLyResultObject *ob = (PLyResultObject *) arg;
return PyObject_GetItem(ob->rows, item);
}
PyMappingMethods PLy_result_as_mapping [static] |
{
PLy_result_length,
PLy_result_subscript,
PLy_result_ass_subscript,
}
Definition at line 43 of file plpy_resultobject.c.
PySequenceMethods PLy_result_as_sequence [static] |
{
PLy_result_length,
NULL,
NULL,
PLy_result_item,
PLy_result_slice,
NULL,
PLy_result_ass_slice,
}
Definition at line 33 of file plpy_resultobject.c.
char PLy_result_doc[] [static] |
{
"Results of a PostgreSQL query"
}
Definition at line 29 of file plpy_resultobject.c.
PyMethodDef PLy_result_methods[] [static] |
{
{"colnames", PLy_result_colnames, METH_NOARGS, NULL},
{"coltypes", PLy_result_coltypes, METH_NOARGS, NULL},
{"coltypmods", PLy_result_coltypmods, METH_NOARGS, NULL},
{"nrows", PLy_result_nrows, METH_VARARGS, NULL},
{"status", PLy_result_status, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
}
Definition at line 49 of file plpy_resultobject.c.
PyTypeObject PLy_ResultType [static] |
Definition at line 58 of file plpy_resultobject.c.
Referenced by PLy_result_init_type(), and PLy_result_new().
1.7.1