Re: Regression tests for functions of info.c - Mailing list pgsql-odbc

From Michael Paquier
Subject Re: Regression tests for functions of info.c
Date
Msg-id CAB7nPqQ0TgazVMRE=y5Ss9gd32pfn+8-Cgadhh-kX6a7-u9nYw@mail.gmail.com
Whole thread Raw
In response to Re: Regression tests for functions of info.c  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Responses Re: Regression tests for functions of info.c
List pgsql-odbc
On Thu, Mar 13, 2014 at 11:01 PM, Heikki Linnakangas
<hlinnakangas@vmware.com> wrote:
> On 03/13/2014 03:52 PM, Michael Paquier wrote:
>>
>> Please find attached a patch adding regression tests for the functions
>> in info.c. The following functions, that use hardcoded column names
>> for their results are checked:
>> - SQLGetTypeInfo
>> - SQLTables
>> - SQLColumns
>> - SQLSpecialColumns
>> - SQLStatistics
>> - SQLPrimaryKeys
>> - SQLForeignKeys
>> - SQLProcedureColumns
>> - SQLTablePrivileges
>> Note that the number of columns used for some of those functions, like
>> SQLGetTypeInfo, has increased since 0x0300, so those regression tests
>> are not compatible with versions of odbc older than 0x0300 and would
>> need an alternative output.
>
>
> Hmm, that's fine as far as it goes, but surely we need to test that they
> actually return correct data, not just the column names?
>
> I envisioned the "catalogfunctions" test case to eventually cover these,
> although at the moment it only tests SQLTables. The ODBC standard calls
> these "catalog functions", per
> http://msdn.microsoft.com/en-us/library/ms711722%28v=vs.85%29.aspx. From
> that list, you're missing SQLColumnPrivileges and SQLProcedures.
OK, I have been working more on this patch and have integrated all the
tests directly in catalogfunctions. I have also extended as well the
functions in common.c to be able to print results for arrays of column
IDs. I found that this became necessary as the current logic is able
to print results only for all the columns, and there are some data
like table OID or user name that we do not want as output in the test
suite.

Also, I think that I have found a bug, or let's say a limitation with
SQLColumnPrivileges, which does not work with unixodbc 2.3.2. I tried
to use this function on LInux and OSX, each time it failed with the
following error:
! IM001=[unixODBC][Driver Manager]Driver does not support this function
The patch I am attaching has some commented code for the test case of
SQLColumnPrivileges, but I disabled it.

For example I tried to call it like that but it failed:
rc = SQLColumnPrivileges(hstmt, NULL, 0,
    (SQLCHAR *) "public", SQL_NTS,
    (SQLCHAR *) "testtab1", SQL_NTS,
    (SQLCHAR *) "id", SQL_NTS);
Comments and feedback are welcome.
--
Michael

Attachment

pgsql-odbc by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Adding flag LDFLAGS for compilation of regression tests
Next
From: Alvaro Herrera
Date:
Subject: relkind check in info.c