Re: DBD::Pg (version 3.16.3) returns EMPTY char columns as 'undef'

Поиск
Список
Период
Сортировка
От Ian Lawrence Barwick
Тема Re: DBD::Pg (version 3.16.3) returns EMPTY char columns as 'undef'
Дата
Msg-id CAB8KJ=hp2HdjT46jX067T4LxoE7YuPG3c4hBoiT5_W1WnpkQJw@mail.gmail.com
обсуждение исходный текст
Ответ на DBD::Pg (version 3.16.3) returns EMPTY char columns as 'undef'  (Matthias Apitz <guru@unixarea.de>)
Ответы Re: DBD::Pg (version 3.16.3) returns EMPTY char columns as 'undef'  (Matthias Apitz <guru@unixarea.de>)
Список pgsql-general
2023年4月25日(火) 21:42 Matthias Apitz <guru@unixarea.de>:
>
>
> Hello,
>
> We're using the above DBD::Pg version on Linux together with PostgreSQL 15.1
> On fetch empty char columns are returned as (Perl) 'undef'
>
>                   while ( my @row_ary = $dba->FetchArray()) {
>                        foreach my $i (0..$#row_ary) {
>                                 if ($row_ary[$i] eq undef)  {
>                                         print $row_ary[1] . "\n";
>                                         next;
>                                 }
>                                 ...
> which later leads in our code to NULL values '\N' in the writing of a CSV-like export
> files. Ofc NULL values in the database are something else as '' char
> strings.
>
> How this must be distinguished with DBD::Pg?

"eq undef" looks very wrong there:

    $ perl -e "printf(qq|%i\n|, '' eq undef);"
    1
    $ perl -e "printf(qq|%i\n|, defined '');"
    1

You probably want "if (!defined $row_ary[$i])". And possibly warnings enabled:

    $ perl -w -e "printf(qq|%i\n|, '' eq undef);"
    Use of uninitialized value in string eq at -e line 1.
    1
    $ perl -w -e "printf(qq|%i\n|, defined '');"
    1

Regards

Ian Barwick



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

Предыдущее
От: Erik Wienhold
Дата:
Сообщение: Re: psql:t_mstr.sql:994: ERROR: function to_char(numeric) does not exist
Следующее
От: postgresql439848@heinz-it.de
Дата:
Сообщение: Re: FW: Error!