Обсуждение: sqlDescribeCol not setting null flag correctly for sqlDescribeCol

Поиск
Список
Период
Сортировка

sqlDescribeCol not setting null flag correctly for sqlDescribeCol

От
the6campbells
Дата:

A basic table is described where one column has a null constraint: create table TNUM( RNUM integer not null, CNUM numeric(7,2)  )
A simple view is defined that projects all the columns of said table: create view VNUM as select * from TNUM
A query which projects the columns of the table or the view will return inconsistent null flags when you call sqlDescribeCol after sqlPrepare

Does not matter if you have parse, server side prepare etc enabled/disabled. 

Looks like another bug to me. 

SQL_DRIVER_NAME=6, 30, "PSQLODBC35W.DLL"
SQL_DRIVER_ODBC_VER=77, 10, "03.51"
SQL_DRIVER_VER=7, 20, "08.04.0100"


Describe Column All: 
icol, szColName, *pcbColName, *pfSqlType, *pcbColDef, *pibScale, *pfNullable 
1, rnum, 4, SQL_INTEGER=4, 10, 0, SQL_NO_NULLS=0 
2, cnum, 4, SQL_NUMERIC=2, 7, 2, SQL_NULLABLE=1 

Describe Column All: 
icol, szColName, *pcbColName, *pfSqlType, *pcbColDef, *pibScale, *pfNullable 
1, rnum, 4, SQL_INTEGER=4, 10, 0, SQL_NULLABLE=1 
2, cnum, 4, SQL_NUMERIC=2, 7, 2, SQL_NULLABLE=1 

Re: sqlDescribeCol not setting null flag correctly for sqlDescribeCol

От
Hiroshi Inoue
Дата:
the6campbells wrote:
>
> A basic table is described where one column has a null
> constraint: create table TNUM( RNUM integer not null, CNUM numeric(7,2)  )
> A simple view is defined that projects all the columns of said
> table: create view VNUM as select * from TNUM
> A query which projects the columns of the table or the view will return
> inconsistent null flags when you call sqlDescribeCol after sqlPrepare
>
> Does not matter if you have parse, server side prepare etc
> enabled/disabled.
>
> Looks like another bug to me.

It seems very hard for the driver to get more accurate results
  than psql does. I see the following result via psql.

xxxxx=> \d tnum
         Table "public.tnum"
  Column |     Type     | Modifiers
--------+--------------+-----------
  rnum   | integer      | not null
  cnum   | numeric(7,2) |

xxxxx=> \d vnum
         View "public.vnum"
  Column |     Type     | Modifiers
--------+--------------+-----------
  rnum   | integer      |
  cnum   | numeric(7,2) |
View definition:
  SELECT tnum.rnum, tnum.cnum
    FROM tnum;

regards,
Hiroshi Inoue