From 330ed4ac6c55294c62bfd975d6e1aafda274e096 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sun, 3 Feb 2013 00:31:01 -0500 Subject: PL/Python: Add result object str handler This is intended so that say plpy.debug(rv) prints something useful for debugging query execution results. reviewed by Steve Singer --- src/pl/plpython/plpy_resultobject.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/pl/plpython/plpy_resultobject.c') diff --git a/src/pl/plpython/plpy_resultobject.c b/src/pl/plpython/plpy_resultobject.c index ea93ad7d29f..077bde6dc35 100644 --- a/src/pl/plpython/plpy_resultobject.c +++ b/src/pl/plpython/plpy_resultobject.c @@ -22,6 +22,7 @@ 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); @@ -74,7 +75,7 @@ static PyTypeObject PLy_ResultType = { &PLy_result_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ - 0, /* tp_str */ + &PLy_result_str, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ @@ -248,6 +249,26 @@ PLy_result_ass_slice(PyObject *arg, Py_ssize_t lidx, Py_ssize_t hidx, PyObject * return rv; } +static PyObject * +PLy_result_str(PyObject *arg) +{ + 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) { -- cgit v1.2.3