From 8a4386b6f76a93165ade6ca42850878e93e6f1ce Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Wed, 18 Nov 2020 21:56:53 +0000 Subject: [PATCH] More efficient float loading --- psycopg3_c/psycopg3_c/types/numeric.pyx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/psycopg3_c/psycopg3_c/types/numeric.pyx b/psycopg3_c/psycopg3_c/types/numeric.pyx index d2e12754c..144add2c8 100644 --- a/psycopg3_c/psycopg3_c/types/numeric.pyx +++ b/psycopg3_c/psycopg3_c/types/numeric.pyx @@ -13,7 +13,8 @@ from cpython.float cimport PyFloat_FromDouble # work around https://github.com/cython/cython/issues/3909 cdef extern from "Python.h": - object PyFloat_FromString(object) + double PyOS_string_to_double( + const char *s, char **endptr, object overflow_exception) except? -1.0 cdef class IntLoader(CLoader): @@ -43,9 +44,8 @@ cdef class OidBinaryLoader(CLoader): cdef class FloatLoader(CLoader): cdef object cload(self, const char *data, size_t length): - cdef bytes b = data - return PyFloat_FromString(b) - + cdef double d = PyOS_string_to_double(data, NULL, NULL) + return PyFloat_FromDouble(d) cdef class Float4BinaryLoader(CLoader): cdef object cload(self, const char *data, size_t length): -- 2.47.3