https://bugs.freedesktop.org/show_bug.cgi?id=82688

--- Comment #5 from Julien Nabet <[email protected]> ---
I think I understood how it works.
    131     if( ( pODBC3SQLGetInfo      =  
(T3SQLGetInfo)osl_getFunctionSymbol(pODBCso, OUString("SQLGetInfo").pData )) ==
NULL )
    132         return false;
http://opengrok.libreoffice.org/xref/core/connectivity/source/drivers/odbc/OFunctions.cxx#131
which calls sqlliteodbc
(on Debian testing, "apt-cache show libsqliteodbc" gives:
Package: libsqliteodbc
Source: sqliteodbc
Version: 0.992-2
)

Retrieving the sources of sqliteodbc (from
http://www.ch-werner.de/sqliteodbc/), I got in sqliteodbc.c:
   8368 #if (defined(HAVE_UNIXODBC) && (HAVE_UNIXODBC)) || !defined(WINTERFACE)
   8369 /**
   8370  * Return information about what this ODBC driver supports.
   8371  * @param dbc database connection handle
   8372  * @param type type of information to be retrieved
   8373  * @param val output buffer
   8374  * @param valMax length of output buffer
   8375  * @param valLen output length
   8376  * @result ODBC error code
   8377  */
   8378 
   8379 SQLRETURN SQL_API
   8380 SQLGetInfo(SQLHDBC dbc, SQLUSMALLINT type, SQLPOINTER val, SQLSMALLINT
valMax,
   8381            SQLSMALLINT *valLen)
   8382 {
   8383     SQLRETURN ret;
   8384 
   8385     HDBC_LOCK(dbc);
   8386     ret = drvgetinfo(dbc, type, val, valMax, valLen);
   8387     HDBC_UNLOCK(dbc);
   8388     return ret;
   8389 }
   8390 #endif

Then
   7875 /**
   7876  * Internal return information about what this ODBC driver supports.
   7877  * @param dbc database connection handle
   7878  * @param type type of information to be retrieved
   7879  * @param val output buffer
   7880  * @param valMax length of output buffer
   7881  * @param valLen output length
   7882  * @result ODBC error code
   7883  */
   7884 
   7885 static SQLRETURN
   7886 drvgetinfo(SQLHDBC dbc, SQLUSMALLINT type, SQLPOINTER val, SQLSMALLINT
valMax,
   7887            SQLSMALLINT *valLen)
   7888 {
...
   8026     case SQL_ODBC_SQL_CONFORMANCE:
   8027         *((SQLSMALLINT *) val) = SQL_OSC_MINIMUM;
   8028         *valLen = sizeof (SQLSMALLINT);
   8029         break;

Idem in sqlite3odbc.c and sqlite4odbc.c

So we retrieved SQL_OSC_MINIMUM whereas we expect SQL_OSC_CORE or
SQL_OSC_EXTENDED. (sidenote: OSC = "ODBC SQL CONFORMANCE")

Now perhaps the sqliteodbc package fills wrongly SQL_ODBC_SQL_CONFORMANCE part
(unless it really doesn't implement primary key whereas there are functions for
this) or perhaps we shoudn't call "supportsCoreSQLGrammar" but
"supportsMinimumSQLGrammar".

Lionel: any thoughts?

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to