From 065a54e7a0be98e8dc9842616b267c0e8fbeb318 Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Tue, 9 Mar 2010 13:11:42 +0000
Subject: OTP-7452 Support for SQL_WCHAR,  SQL_WVARCHAR and strings as binaries

ODBC now handles the types SQL_WCHAR and SQL_WVARCHAR. ODBC also has a new
connection option to return all strings as binaries and also expect strings
to be binaries in the param_query function. This provides some but not a
full unicode support.
---
 lib/odbc/doc/src/databases.xml      | 26 +++++++++++++++--------
 lib/odbc/doc/src/error_handling.xml | 16 ++++-----------
 lib/odbc/doc/src/notes.xml          | 19 +++++++++++++++++
 lib/odbc/doc/src/odbc.xml           | 41 ++++++++++++++++++++++---------------
 4 files changed, 65 insertions(+), 37 deletions(-)

(limited to 'lib/odbc/doc/src')

diff --git a/lib/odbc/doc/src/databases.xml b/lib/odbc/doc/src/databases.xml
index c06327e11d..2c1b932084 100644
--- a/lib/odbc/doc/src/databases.xml
+++ b/lib/odbc/doc/src/databases.xml
@@ -4,7 +4,7 @@
 <chapter>
   <header>
     <copyright>
-      <year>2002</year><year>2009</year>
+      <year>2002</year><year>2010</year>
       <holder>Ericsson AB. All Rights Reserved.</holder>
     </copyright>
     <legalnotice>
@@ -13,12 +13,12 @@
       compliance with the License. You should have received a copy of the
       Erlang Public License along with this software. If not, it can be
       retrieved online at http://www.erlang.org/.
-    
+
       Software distributed under the License is distributed on an "AS IS"
       basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
       the License for the specific language governing rights and limitations
       under the License.
-    
+
     </legalnotice>
 
     <title>Databases</title>
@@ -117,7 +117,11 @@
       </row>
       <row>
         <cell align="left" valign="middle">SQL_CHAR(size)</cell>
-        <cell align="left" valign="middle">String </cell>
+        <cell align="left" valign="middle">String | Binary (configurable)</cell>
+      </row>
+      <row>
+	<cell align="left" valign="middle">SQL_WCHAR(size) </cell>
+	<cell align="left" valign="middle">Unicode binary encoded as UTF16 little endian.</cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_NUMERIC(p,s)         <br></br>
@@ -171,7 +175,11 @@ when p >= 16 </cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_VARCHAR(size) </cell>
-        <cell align="left" valign="middle">String </cell>
+	<cell align="left" valign="middle">String | Binary (configurable)</cell>
+      </row>
+      <row>
+	<cell align="left" valign="middle">SQL_WVARCHAR(size) </cell>
+        <cell align="left" valign="middle">Unicode binary encoded as UTF16 little endian.</cell>
       </row>
       <tcaption>Mapping of ODBC data types to the Erlang data types returned to the Erlang application.</tcaption>
     </table>
@@ -194,19 +202,19 @@ when p >= 16 </cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_LONGVARCHAR </cell>
-        <cell align="left" valign="middle">String</cell>
+	<cell align="left" valign="middle">String | Binary (configurable)</cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_BINARY</cell>
-        <cell align="left" valign="middle">String </cell>
+	<cell align="left" valign="middle">String | Binary (configurable)</cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_VARBINARY</cell>
-        <cell align="left" valign="middle">String </cell>
+	<cell align="left" valign="middle">String | Binary (configurable)</cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_LONGVARBINARY</cell>
-        <cell align="left" valign="middle">String </cell>
+	<cell align="left" valign="middle">String | Binary (configurable)</cell>
       </row>
       <row>
         <cell align="left" valign="middle">SQL_TINYINT </cell>
diff --git a/lib/odbc/doc/src/error_handling.xml b/lib/odbc/doc/src/error_handling.xml
index 26ad7f9848..c30acc5fdc 100644
--- a/lib/odbc/doc/src/error_handling.xml
+++ b/lib/odbc/doc/src/error_handling.xml
@@ -4,7 +4,7 @@
 <chapter>
   <header>
     <copyright>
-      <year>2003</year><year>2009</year>
+      <year>2003</year><year>2010</year>
       <holder>Ericsson AB. All Rights Reserved.</holder>
     </copyright>
     <legalnotice>
@@ -13,12 +13,12 @@
       compliance with the License. You should have received a copy of the
       Erlang Public License along with this software. If not, it can be
       retrieved online at http://www.erlang.org/.
-    
+
       Software distributed under the License is distributed on an "AS IS"
       basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
       the License for the specific language governing rights and limitations
       under the License.
-    
+
     </legalnotice>
 
     <title>Error handling</title>
@@ -126,15 +126,7 @@
       c-process will exit. If the c-process crashes/exits it will
       bring the erlang-process down too and vice versa i.e. the
       connection is terminated.</p>
-    <note>
-      <p>The function connect/2 will start the odbc application if
-        that is not already done. In this case a supervisor information
-        log will be produced stating that the odbc application was started
-        as a temporary application. It is really the responsibility of the
-        application that uses the API too make sure it is started in the
-        desired way.</p>
-    </note>
-
+   
     <section>
       <title>Error types</title>
       <p>The types of errors that may occur can be divide into the
diff --git a/lib/odbc/doc/src/notes.xml b/lib/odbc/doc/src/notes.xml
index 99584efec9..29fed0e286 100644
--- a/lib/odbc/doc/src/notes.xml
+++ b/lib/odbc/doc/src/notes.xml
@@ -30,6 +30,25 @@
   </header>
   <p>This document describes the changes made to the odbc application.
   </p>
+  
+  <section><title>ODBC 2.10.8</title>
+  
+  <section><title>Improvements and New Features</title>
+  <list>
+    <item>
+          <p>
+	    ODBC now handles the types SQL_WCHAR and SQL_WVARCHAR.
+	    ODBC also has a new connection option to return all
+	    strings as binaries and also expect strings to be
+	    binaries in the param_query function. This provides some
+	  but not a full unicode support.</p>
+          <p>
+	  Own Id: OTP-7452</p>
+        </item>
+  </list>
+  </section>
+  
+  </section>
 
   <section><title>ODBC 2.10.7</title>
 
diff --git a/lib/odbc/doc/src/odbc.xml b/lib/odbc/doc/src/odbc.xml
index 450531c81c..3efbac8dd4 100644
--- a/lib/odbc/doc/src/odbc.xml
+++ b/lib/odbc/doc/src/odbc.xml
@@ -4,7 +4,7 @@
 <erlref>
   <header>
     <copyright>
-      <year>1999</year><year>2009</year>
+      <year>1999</year><year>2010</year>
       <holder>Ericsson AB. All Rights Reserved.</holder>
     </copyright>
     <legalnotice>
@@ -13,12 +13,12 @@
       compliance with the License. You should have received a copy of the
       Erlang Public License along with this software. If not, it can be
       retrieved online at http://www.erlang.org/.
-    
+
       Software distributed under the License is distributed on an "AS IS"
       basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
       the License for the specific language governing rights and limitations
       under the License.
-    
+
     </legalnotice>
 
     <title>odbc</title>
@@ -101,7 +101,7 @@
  odbc_data_type() = sql_integer | sql_smallint | sql_tinyint |
       {sql_decimal, precision(), scale()} |
       {sql_numeric, precision(), scale()} |
-      {sql_char, size()} | {sql_varchar, size()} | {sql_float, precision()} |
+      {sql_char, size()} | {sql_wchar, size()} | {sql_varchar, size()} | {sql_wvarchar, size()}| {sql_float, precision()} |
       {sql_float, precision()} | sql_real | sql_double | sql_bit | atom()
     </code>
     <code type="none">
@@ -141,16 +141,9 @@
         <d>An example of a connection string:<c>"DSN=sql-server;UID=aladdin;PWD=sesame"</c>where DSN is your ODBC Data Source Name, UID is a database user id and PWD is the password for that user. These are usually the attributes required in the connection string, but some drivers have other driver specific attributes, for example<c>"DSN=Oracle8;DBQ=gandalf;UID=aladdin;PWD=sesame"</c>where DBQ is your TNSNAMES.ORA entry name e.g. some Oracle specific configuration attribute.</d>
         <v>Options = [] | [option()]</v>
         <d>All options has default values. </d>
-        <v>option() = {auto_commit, auto_commit_mode()} | {timeout, milliseconds()} | {tuple_row, tuple_mode()} | {scrollable_cursors, use_scrollable_cursors()} | {trace_driver, trace_mode()} </v>
-        <d>The default timeout is infinity </d>
-        <v>auto_commit_mode() = on | off </v>
-        <d>Default is on.</d>
-        <v>tuple_mode() = on | off </v>
-        <d>Default is on. The option is deprecated and should not be used in new code.</d>
-        <v>use_scrollable_cursors() = on | off </v>
-        <d>Default is on.</d>
-        <v>trace_mode() = on | off </v>
-        <d>Default is off.</d>
+        <v>option() = {auto_commit, on | off} | {timeout, milliseconds()}
+	| {binary_strings, on | off} | {tuple_row, on | off} | {scrollable_cursors, on | off} |
+	{trace_driver, on | off} </v>
         <v>Ref = connection_reference() - should be used to access the connection. </v>
         <v>Reason = port_program_executable_not_found | common_reason()</v>
       </type>
@@ -161,21 +154,36 @@
           to handle the connection. These processes will terminate if
           the process that created the connection dies or if you call
           disconnect/1.</p>
-        <p>If automatic commit mode is turned on, each query will be
+	    
+	  <p>If automatic commit mode is turned on, each query will be
           considered as an individual transaction and will be
           automatically committed after it has been executed. If you want
           more than one query to be part of the same transaction the automatic
           commit mode should be turned off. Then you will have to call
           commit/3 explicitly to end a transaction. </p>
+
+	  <p>The default timeout is infinity </p>
+	  
+	  <p> >If the option binary_strings is turned on all strings
+	  will be returned as binaries and strings inputed to
+	  param_query will be expected to be binaries. The user needs
+	  to ensure that the binary is in an encoding that the
+	  database expects. By default this option is turned off.</p>
+	  
         <p>As default result sets are returned as a lists of
           tuples. The <c>TupleMode</c> option still exists to keep some
           degree of backwards compatibility. If the option is set to
           off, result sets will be returned as a lists of lists
           instead of a lists of tuples.</p>
+	  
         <p>Scrollable cursors are nice but causes some overhead. For
           some connections speed might be more important than flexible
           data access and then you can disable scrollable cursor for a
-          connection, limiting the API but gaining speed</p>
+          connection, limiting the API but gaining speed.</p>
+
+	  <note><p>Turning the scrollable_cursors option off is noted
+	  to make old odbc-drivers able to connect that will otherwhise fail.</p></note>
+	  
         <p>If trace mode is turned on this tells the ODBC driver to
           write a trace log to the file SQL.LOG that is placed in the
           current directory of the erlang emulator. This information
@@ -183,6 +191,7 @@
           erlang ODBC application, and it might be relevant for you to
           send this file to our support. Otherwise you will probably
           not have much use of this.</p>
+	  
         <note>
           <p>For more information about the <c>ConnectStr</c> see
             description of the function SQLDriverConnect in [1].</p>
-- 
cgit v1.2.3