Re: Regression tests for functions of info.c
От | Heikki Linnakangas |
---|---|
Тема | Re: Regression tests for functions of info.c |
Дата | |
Msg-id | 5328AC51.5060905@vmware.com обсуждение исходный текст |
Ответ на | Re: Regression tests for functions of info.c (Michael Paquier <michael.paquier@gmail.com>) |
Список | pgsql-odbc |
On 03/18/2014 03:08 PM, Michael Paquier wrote: > 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. 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
В списке pgsql-odbc по дате отправления: