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