summaryrefslogtreecommitdiff
path: root/psycopg/adapter_pfloat.c
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-12-25 12:03:15 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-12-31 03:18:27 +0100
commit3214c23f51c8effa7e78f9a7f59735c5b3e10868 (patch)
treee11d356c8ee4a70c7ab80cd6dbebe1b943a87693 /psycopg/adapter_pfloat.c
parent2e22eef727fc3b57e63c7a6a1b5cbae9533cd632 (diff)
downloadpsycopg2-3214c23f51c8effa7e78f9a7f59735c5b3e10868.tar.gz
Fixed adaptation in several adapters.
The getquoted methods always return bytes. The str() convert this representation to string on the fly.
Diffstat (limited to 'psycopg/adapter_pfloat.c')
-rw-r--r--psycopg/adapter_pfloat.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/psycopg/adapter_pfloat.c b/psycopg/adapter_pfloat.c
index 3260d2c..2753737 100644
--- a/psycopg/adapter_pfloat.c
+++ b/psycopg/adapter_pfloat.c
@@ -36,21 +36,34 @@
/** the Float object **/
static PyObject *
-pfloat_str(pfloatObject *self)
+pfloat_getquoted(pfloatObject *self, PyObject *args)
{
+ PyObject *rv;
double n = PyFloat_AsDouble(self->wrapped);
if (isnan(n))
- return Text_FromUTF8("'NaN'::float");
+ rv = Bytes_FromString("'NaN'::float");
else if (isinf(n))
- return Text_FromUTF8("'Infinity'::float");
- else
- return PyObject_Repr(self->wrapped);
+ rv = Bytes_FromString("'Infinity'::float");
+ else {
+ rv = PyObject_Repr(self->wrapped);
+
+#if PY_MAJOR_VERSION > 2
+ /* unicode to bytes in Py3 */
+ if (rv) {
+ PyObject *tmp = PyUnicode_AsUTF8String(rv);
+ Py_DECREF(rv);
+ rv = tmp;
+ }
+#endif
+ }
+
+ return rv;
}
static PyObject *
-pfloat_getquoted(pfloatObject *self, PyObject *args)
+pfloat_str(pfloatObject *self)
{
- return pfloat_str(self);
+ return psycopg_ensure_text(pfloat_getquoted(self, NULL));
}
static PyObject *