From: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
---|---|
To: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com> |
Cc: | PostgreSQL mailing lists <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Re: Regression tests for functions of info.c |
Date: | 2014-03-18 20:28:01 |
Message-ID: | 5328AC51.5060905@vmware.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
On 03/18/2014 03:08 PM, Michael Paquier wrote:
> On Thu, Mar 13, 2014 at 11:01 PM, Heikki Linnakangas
> <hlinnakangas(at)vmware(dot)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.
Thanks, pushed.
> 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.
Hmm, it seems that we don't publish the SQLColumnPrivileges function to
the driver manager. See PGAPI_GetFunctions30 in odbcapi30.c:
> if (ci->drivers.lie)
> SQL_FUNC_ESET(pfExists, SQL_API_SQLCOLUMNPRIVILEGES); /* 56 */
So you have to specify the "Lie" configuration option to enable
SQLColumnPrivileges. Got to love the name of that option :-).
I wonder why. Perhaps because PostgreSQL used to not support per-column
permissions, and no-one's gotten around to implement SQLColumnPrivileges
properly since they was added to the backend?
- Heikki
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2014-03-18 23:07:52 | Re: relkind check in info.c |
Previous Message | Alvaro Herrera | 2014-03-18 18:39:06 | relkind check in info.c |