Age | Commit message (Collapse) | Author |
|
The regression was introduced by making byte type signed.
Bitwise OR (|) applied to signed char (byte) and any longer type reqires the former to expand to the same size.
When the char is negative it is expanded with sign bit filling the extra bytes causing the unexpected result.
|
|
These are signaled by -Wall
|
|
|
|
Three different pointer types are used for strings.
SQLCHAR pointer - used against ODBC driver
char pointer - used against erl_interface
byte pointer - used internally
SQLCHAR is 'unsigned char' while erl_interface is 'signed char'
byte pointer should probably not be used at all.
|
|
odbcserver.c:2772:12: warning: implicit declaration of function 'tolower' is invalid in C99
[-Wimplicit-function-declaration]
str[i] = tolower(str[i]);
^
|
|
and supplied incorrect data to stdin. A crash example:
echo -en "\x0\x0\x0\x1\x0" | ./odbcserver
|
|
|
|
|
|
Issue: Oracle ODBC driver for Linux ignores setup autocommit mode during driver initialization before a connection to database has been established. Whereas odbc module in erlang sets autocommit mode before a connection has been established and autocommit mode is true by default it is impossible to turn out autocommit mode for oracle connections.
Sulution: This patch sets autocommit mode after a connection to database has been established. The patch changes only C source file odbcserver.c and don't change any erlang source files of odbc module.
The patches for older versions of erlang/otp are here
https://github.com/RubberCthulhu/erlang-odbc-oracle-fix
|
|
This patch adds the extended_errors option to odbc:connect/2. When
enabled, this option alters the return code of ODBC operations that
produce errors to include the ODBC error code as well as the native
error code, in addition to the ODBC reason field which is returned by
default. The extended error information can be used to produce more
sophisticated error handling than is possible with the standard ODBC
Reason alone.
|
|
Under Unix enable TCP_NODELAY to disable Nagel's socket algorithm
(Removes ~40ms delay on Redhat ES 6).
|
|
Support atom 'null' in odbc:param_query as database NULL value
Fix "ODBC: received unexpected info:{tcp_closed, ...}" when connection is terminating.
Fix possible access violation with 64bit ODBC.
|
|
cleaned causing the next call to param_query to missbehave.
Also corrected some test code
|
|
|
|
* ia/odbc/mysql:
Test odbc with MySQL
|
|
type casting even on 64 bit platforms
|
|
Updated test framework to also be able to test the erlang odbc application
with MySQL as database.
Made minor changes to error-handling to improve interoperability
with MySQL-drivers.
|
|
encode_data_type
|
|
|
|
|
|
|
|
Loopback address constants are used when connecting the c-side
to the erlang-side over local socket API avoiding getaddrinfo problems,
and the {ip, loopback} option is added as a listen option on the erlang-side.
Also cleaned up the TIME_STAMP contribution.
|
|
|
|
Now supports SQL_TYPE_TIMESTAMP on the format {{YY, MM, DD}, {HH, MM, SS}}.
Thanks to Juhani Ränkimies.
|
|
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.
|
|
* kr/odbc-netinet:
Fix ODBC compilation error on FreeBSD by adding netinet/in.h to #include macros
OTP-8444 The odbc application can now be compiled on FreeBSD. (Thanks to
Kenji Rikitake.)
|
|
This fix modifies lib/odbc/c_src_odbcserver.c
This has been tested on FreeBSD port, and will not affect Linux.
|
|
* po/odbc-update-delete-no-rows:
SQL_NO_DATA and SQLSTATE 00000 indicate success for updates/deletes that affect no rows
|
|
affect no rows
I noticed the following when no rows were updated for an update statement:
4> odbc:param_query(Ref, "update tbadger set status = ? where
badger_id = ?", [{{sql_varchar,1},["R"]}, {sql_integer, [61111]}]).
{error,"No SQL-driver information available."}
5> odbc:param_query(Ref, "update tbadger set status = ? where
badger_id = ?", [{{sql_varchar,1},["R"]}, {sql_integer, [61]}]).
{updated,1}
The attached patch, which requires the ODBC patch from Andrew
Thompson, should fix it:
3> odbc:param_query(Ref, "update tbadger set status = ? where
badger_id = ?", [{{sql_varchar,1},["R"]}, {sql_integer, [61111]}]).
{updated,0}
4>
I've followed the advice given on MSDN
(http://msdn.microsoft.com/en-us/library/ms715424%28VS.85%29.aspx) and
checked for SQL_NO_DATA combined with SQLSTATE 000000
|
|
|