Re: Wrong column size using MIN/MAX without return result

From: "Inoue, Hiroshi" <h-inoue(at)dream(dot)email(dot)ne(dot)jp>
To: fabriziomello(at)gmail(dot)com
Cc: pgsql-odbc(at)lists(dot)postgresql(dot)org
Subject: Re: Wrong column size using MIN/MAX without return result
Date: 2018-09-25 03:12:30
Message-ID: d6fec2c3-7934-c5da-a167-0bf8482dad8a@dream.email.ne.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Hi,

On 2018/09/24 23:49, Fabrízio de Royes Mello wrote:
> Hi all,
>
> We've experiencing an issue using the driver version 10.03.0000 under
> unixODBC 2.3.1 environment.
>
> When we use MIN/MAX functions in a query returning CHAR without
> results,  the column size is wrong. Seems if we use any function that
> return "text types" without returning tuples the column size is wrong.

SQL returns NULL for MIN/MAX functions without results.

regards,
Hiroshi Inoue

>
> Below there are some self contained testcases:
>
> ** SQL testcase 1 (ERROR):
>
> SQL> DROP TABLE IF EXISTS T1;
> SQL> CREATE TABLE T1 ( FLD char(10) NOT NULL DEFAULT '         ' );
> SQL> INSERT INTO T1 VALUES('1');
> SQL> INSERT INTO T1 VALUES('22');
> SQL> INSERT INTO T1 VALUES('333');
> SQL> SELECT MAX(FLD) AS OK FROM T1;
> +-----------+
> | ok        |
> +-----------+
> | 333       |
> +-----------+
> SQLRowCount returns 1
> 1 rows fetched
> SQL> SELECT MAX(FLD) AS ERROR FROM T1 WHERE 1 = 0;
> +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> | error |
> +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> | |
> +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> SQLRowCount returns 1
> 1 rows fetched
>
>
> ** SQL testcase 2 (ERROR):
> SQL> DROP TABLE IF EXISTS T1;
> SQL> CREATE TABLE T1 ( FLD char(10) NOT NULL DEFAULT '         ' );
> SQL> INSERT INTO T1 VALUES('1');
> SQL> INSERT INTO T1 VALUES('22');
> SQL> INSERT INTO T1 VALUES('333');
> SQL> SELECT SUBSTR(FLD,1,5) AS OK FROM T1 WHERE FLD = '333';
> +----+
> | ok |
> +----+
> | 333|
> +----+
> SQLRowCount returns 1
> 1 rows fetched
> SQL> SELECT SUBSTR(FLD,1,5) AS ERROR FROM T1 WHERE 1 = 0;
> +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> | error      |
> +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
> SQLRowCount returns 0
>
>
> ** SQL testcase 3 (OK):
> SQL> DROP TABLE IF EXISTS T1;
> SQL> CREATE TABLE T1 ( FLD char(10) NOT NULL DEFAULT '         ' );
> SQL> INSERT INTO T1 VALUES('1');
> SQL> INSERT INTO T1 VALUES('22');
> SQL> INSERT INTO T1 VALUES('333');
> SQL> SELECT FLD AS OK FROM T1 WHERE FLD = '333';
> +-----------+
> | ok        |
> +-----------+
> | 333       |
> +-----------+
> SQLRowCount returns 1
> 1 rows fetched
> SQL> SELECT FLD AS ERROR FROM T1 WHERE 1 = 0;
> +-----------+
> | error     |
> +-----------+
> +-----------+
> SQLRowCount returns 0
>
> There are some config to fix this weird behaviour?
>
> Regards,
>
> --
>    Fabrízio de Royes Mello       Timbira - http://www.timbira.com.br/
>    PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message Clemens Ladisch 2018-09-25 06:43:00 Re: Wrong column size using MIN/MAX without return result
Previous Message Igor Korot 2018-09-25 01:36:41 Building programs with libpq