PQresult() return value not very handy...

Поиск
Список
Период
Сортировка
От Peter de Vroomen
Тема PQresult() return value not very handy...
Дата
Msg-id aeq881$pcp$1@news1.xs4all.nl
обсуждение исходный текст
Ответы Re: PQresult() return value not very handy...  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi,

For NULL fields in a record, PQresult returns an empty string. This is not
very usefull, as it means I will have to check the resulting string for
empty AND check for errors retrieving the value, something like:

    m_bField1IsNull = false;
    pszValue = PQresult( m_Result, nTuple, 0 );
    if( pszValue == NULL )
    {
        return( false );
    }
    if( pszValue[0] == '\0' )
    {
        if( PQgetisnull( m_Result, nTuple, 0 ))
        {
            m_bField1IsNull = true;
        }
    }
    strcpy( m_szField1, pszValue );

I have to issue 2 if-statements, one to check for error, one to check for
NULL. I have to do this for EVERY field that could be NULL, even if the
field is definately not NULL. The call to PQgetisnull is just wasted CPU
time.

It would have been better if PQresult() would return NULL when an error
occurs and also return NULL when the field is NULL. In that case my code
would become the following:

    m_bField1IsNull = false;
    pszValue = PQresult( m_Result, nTuple, 0 );
    if( pszValue == NULL )
    {
        if( PQgetisnull( m_Result, nTuple, 0 ))
        {
            m_bField1IsNull = true;
            strcpy( m_szField1, "" );
        }
        else
        {
            return( false );
        }
    }
    else
    {
        strcpy( m_szField1, pszValue );
    }

In this case, the function PQgetisnull would ONLY be called if there was a
possibility that the field actually was NULL.

Any chance that this will be changed in the future? I expect that these
kinds of things can be done throughout the libpq C API (I am just beginning
to use it, so I wouldn't actually know :-)), so it would be nice if someone
would do some optimizations like this one :-).

Please don't flame me on bugs/typing errors in the above code examples, they
are not real code, I just typed them in to explain the general idea.

Regards,

Peter



В списке pgsql-general по дате отправления:

Предыдущее
От: "Marc G. Fournier"
Дата:
Сообщение: Re: Download version on website
Следующее
От: Jeremy Cowgar
Дата:
Сообщение: OUTER JOIN and WHERE