directly. This leads to multiple return values in some cases.
- new condition types
- raise conditions only in case of fatal errors
- rewrote odbc_sql_data_sources() and odbc_sql_drivers()
- removed hardcoded ODBC_RETVAL_BUFFER_INITIAL_SIZE, the return value
buffer size can now be read/set from Scheme.
- removed odbc_sql_bind_parameter_exec_out(), which is a poor
implementation of a SQLBindParameter() binding. TODO: make a
better one.
- use the p.c. SQL_SUCCEEDED()
- rewrote odbc_sql_get_data(): Resize return buffer value if necessary
- new modules: low-odbc (functions), low-odbc-constants (constants)
- major code cleanup
contrast to former versions) someday be capable of returning things
like SQL_TIME_STRUCT, SQL_DATE_STRUCT, SQL_TIMESTAMP_STRUCT and
SQL_NUMERIC_STRUCT.
+ However, SQLGetData() is now even more broken than before (if used
on integer columns). It seems, that I failed to understand the API
reference on SQLGetData() completly!
- dynamic memory allocation for return values in these functions:
- odbc_sql_get_info_string()
- odbc_sql_get_connect_attr_string()
- odbc_sql_get_stmt_attr_string()
- odbc_sql_get_desc_field_string()
- odbc_sql_get_cursor_name()
- odbc_sql_native_sql()
- odbc_sql_get_data()
- odbc_sql_describe_col()
- odbc_sql_get_diag_recs()
- odbc_sql_data_sources() is still broken: sometimes the result string
is truncated. I'm not sure if this not a unixODBC-bug...
- Don't call SQLGetDiagRec() automatically on SQL_ERROR, some ODBC
seem to have a broken SQLGetDiagRec() implementation. Let user call
SQLGetDiagRec() from Scheme at his own risk.
The ODBC documentation thinks it's a good idea to call SQLGetDiagRec()
after each ODBC-call that might return SQL_SUCCESS_WITH_INFO. IMHO
this sucks. However it's now possible to do so in the user's Scheme
code.
(environment-handle, connection-handle, statement-handle,
database-handle)
- make ODBC functions these records
- Tons of constants for SQLGetInfo()
- get rid of some stupid pseudo-highlevel-ODBC-functions
- tons of function ids for usage with SQLGetFunctions (sql-api-*)
- some key values for SQLGetInfo (sql-get-info-*). Need to be sorted (renamed?) by type of return value.
- minor code cleanups
- new record type: sql-time (SQL_TIME_STRUCT)
- new record type: sql-timestamp (SQL_TIMESTAMP_STRUCT)
- added type identifier for SQL_C_*-types and SQL_*-types
- import c-functions: odbc_sql_bind_parameter_exec_out, odbc_sql_execute, odbc_sql_execute_direct, odbc_sql_get_data, odbc_sql_fetch
- fixed matching of SQL types in odbc_sql_bin_parameter_exec_out
- added new functions for sql-time<->SQL_TIME_STRUCT conversion
- added new functions for sql-date<->SQL_DATE_STRUCT conversion
- added new functions for sql-timestamp<->SQL_TIMESTAMP_STRUCT conversion
- use functions for sql-time/sql-date/sql-timestamp conversion
- print more debug information in odbc_sql_bin_parameter_exec_out
- added function odbc_sql_execute_direct
- added function odbc_sql_get_data, check_sql_get_data_result
- added function odbc_sql_fetch
- odbc_debug_msgs: do not print native_error
- renamed function odbc_set_env_attr to odbc_sql_set_env_attr
Tested partially: handle allocation, connection, prepare, execute
Missing: Support for SQLBindCol & several catalog functions. The scsh 0.53 API abstraction need
s to be implemented on top of the ODBC 3 API.