Bug 68676 - ODBC: optionally use W variants of ODBC calls
Summary: ODBC: optionally use W variants of ODBC calls
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Base (show other bugs)
Version:
(earliest affected)
4.2.0.0.alpha0+ Master
Hardware: All All
: medium enhancement
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: difficultyInteresting, easyHack, skillCpp, skillSql
Depends on:
Blocks: Database-Connectivity
  Show dependency treegraph
 
Reported: 2013-08-28 17:51 UTC by Lionel Elie Mamane
Modified: 2020-12-10 08:50 UTC (History)
3 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lionel Elie Mamane 2013-08-28 17:51:45 UTC
Currently, LibreOffice only uses the "ANSI" variants of the ODBC calls, never the Unicode variants (with a W suffix). However, much (but not all) of the code is actually prepared to use the Unicode variants.

Using the Unicode variants can be useful because it allows us not to mess with encodings, we get more-or-less directly the UTF-16 that our OUStrings need. Also, it allows to work around bugs in ODBC drivers, see e.g. the discussion in comment 13 of bug 68426. But it may trigger *other* bugs in ODBC drivers...

Some decision needs to be done when to use which variant. Possibly it should just be an "Advanced setting" (see menu edit / database / advanced settings), or even better something set in the same dialog tab as the connection charset.

See in directory connectivity/source/drivers/odbcbase/:

 - OTools.cxx: argument _bUseWChar to various functions

 - OPreparedStatement.cxx: constant useWChar

 - OResultsetMetaData.cxx: this one is not ready;
   need to use N3SQLColAttribute OR  N3SQLColAttributeW
   depending on conditions / configuration / ...

directory connectivity/source/drivers/odbc/:

 - OFunctions.cxx

 - ORealDriver.cxx

these to add the W variants to these two functions.

There is a good explanation on ODBC and Unicode in general at
http://www.easysoft.com/products/data_access/odbc_oracle_driver/unicode.html#odbc
the authoritative reference is at
http://msdn.microsoft.com/en-us/library/windows/desktop/ms716246(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms709439(v=vs.85).aspx
Comment 1 Alex Thurgood 2015-01-03 17:39:26 UTC Comment hidden (no-value)
Comment 2 Robinson Tryon (qubit) 2015-12-13 13:24:12 UTC Comment hidden (obsolete)
Comment 3 Robinson Tryon (qubit) 2016-02-18 14:52:23 UTC Comment hidden (obsolete)