simba technologies...large-scale applications can take advantage features in odbc 3.8 to achieve...
TRANSCRIPT
Simba Technologies Incorporated 938 West 8
th Avenue | Vancouver, BC Canada | tel 604.633.0008 | fax 604.633.0004 | www.simba.com
Copyright 1998-2014 Simba Technologies Incorporated. Simba and SimbaEngine are the trademarks of Simba Technologies Incorporated
All other trademarks are the property of their respective owners.
SimbaEngine SDK 9.4
Welcome to SimbaEngine SDK, a Software
Development Kit for developing extreme performance
data drivers (ODBC, JDBC, ADO.NET and OLE DB) for
SQL-enabled and non-SQL data stores. SimbaEngine
SDK 9.4 features brand new JDBC 4.1 support and the
capability to build an OLE DB Provider on top of an
existing C++ DSI implementation for an ODBC driver. SimbaEngine SDK continues to deliver ODBC 3.8, JDBC
3.0 & 4.0, ADO.NET, Unicode capability and the widest
support for 32-bit and 64-bit platforms including OS X.
New
Here are the highlights of new features and functionalities in SimbaEngine SDK 9.4.
JDBC 4.1
With just one Java DSI implementation, you can now build three versions (3.0, 4.0 & 4.1) of JDBC
drivers as three separate JARs if you wish. You can also choose to build one Hybrid JDBC driver that supports three versions of JDBC interfaces in a single JAR.
Tableau Integration
-for-Tableau program. Out of the box,
you can now see how Tableau works seamlessly with ODBC drivers based on the latest SimbaEngine
SDK.
Clang and C++11 on OS X
By default, SimbaEngine SDK now uses Clang with the C++11 library to build ODBC drivers on OS X,
enabling you to stay on top of the latest development technologies on OS X. OS X Mavericks is now
supported.
Contents
SimbaEngine SDK 9.4 1
1
Key Features and Functionalities 3
Installation 10
Changes and Resolved Issues 11
Known Issues 21
How Do I Get Support? 21
SimbaEngine SDK 9.4 Release Notes
Simba Technologies
SimbaEngine SDK 9.4 -- Page 2
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
OLE DB SDK
SimbaEngine SDK has always supported building ODBC drivers that can be used with the Microsoft OLE DB to ODBC Bridge. We have now added an OLE DB SDK that allows you to leverage the same C++ DSI
implementation for an ODBC driver. That is, you can build an ODBC driver and an OLE DB provider with
a single DSII. An OLE DB provider gives you optimal performance for certain applications, such as SQL Server Analysis Services (SSAS).
Auto Detection of Driver Managers
Building one ODBC driver that works well with multiple Driver Managers such as SimbaDM, unixODBC
and iODBC is difficult. SimbaEngine SDK now has the ability to detect the Driver Manager you use,
giving your ODBC drivers the opportunity to cooperate well with all Driver Managers on Unix platforms.
Configuring SIMBAINI is now Optional
Configuring SIMBAINI or the equivalent environment variable for an ODBC driver on Unix platform is now optional. If SIMBAINI is not set, then SimbaEngine SDK tries to find the INI file in the same
directory as the driver binaries. If still not found, then SimbaEngine SDK looks for the file in the $HOME
directory, and then /etc. In other words, SIMBAINI now allows you to override rather than requiring you to set the SIMBAINI or equivalent environment variable.
One Process per Connection
With the addition of Simba Server Manager (SSM) -- a Java-based server that fronts all Simba Server
processes, you can now configure one dedicated Simba Server process per connection if that is more
desirable for your situation.
Index Enhancement
The SQLEngine now makes use of indexes when available to speed up IN and LIKE filter operations.
Log Rotation
The default logger now supports log rotation. Log rotation is very useful when building a server solution. You now have control over how logs are rotated. You can continue to build your own loggers.
Optimized LOB Retrieval through Client/Server
We have now optimized the data throughput for retrieving long data objects such as LONGVARCHAR
and LONGVARBINARY in all Simba clients (ODBC, JDBC and ADO.NET). Applications can now use smaller
buffers to retrieve LOBs with minimal performance impact.
SimbaEngine SDK 9.4 -- Page 3
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Sample Installers
With the sample installers for Quickstart ODBC driver and OLE DB provider, you are hours away from completing a WiX-based installer for your own driver/provider.
ICU 53.1
The third party ICU library has been upgraded to 53.1. Version 53.1 features some major improvements
such as much faster UTF-8 sorting and much smaller data files.
OpenSSL Update
We have updated the third party OpenSSL library to 1.0.0n to keep up with the latest security fixes.
Key Features and Functionalities
There are many features and functions available in SimbaEngine SDK 9.4. The most significant are
described below.
ODBC 3.8
SimbaEngine SDK is the first ODBC kit that makes developing ODBC 3.8 drivers possible. Large-scale
applications can take advantage features in ODBC 3.8 to achieve better performance.
Broadest 32 bit and 64 bit Platform Support
SimbaEngine SDK supports a wide range of platforms in both 32-bit and 64-bit variations: Windows,
Linux (x86 and Itanium), Solaris (x86 and SPARC), AIX (PowerPC), HP-UX (Itanium), as well as OS X.
Unicode
UTF-8, UTF-16, UTF-32 are all supported for data, metadata and ODBC function parameters, as is ANSI.
All Unicode encodings and ANSI are configurable so that you can support UTF-16 on Windows, and UTF-8, UTF-16 or UTF-32 on Linux and UNIX. You are assured of compatibility between application,
driver manager, driver and data source.
JDBC 3.0, 4.0 & 4.1
SimbaEngine SDK supports developing Type 3 & Type 4 JDBC 3.0, 4.0 & 4.1 drivers against any SQL-
wire protocol. The Java DSI API has been developed to be conceptually equivalent to the C++ DSI API. If you are developing more than one data driver for
your data store, then moving from one to the other can be as straightforward as porting the DSII from
C++ to Java.
SimbaEngine SDK 9.4 -- Page 4
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
ADO.NET
SimbaEngine SDK supports developing 100% managed ADO.NET data providers against any SQL-enabled data store, unlocking the full performance potential of the custom data store. An ADO.NET provider is
implemented using the .NET DSI and is conceptually equivalent to the C++ DSI. If you are developing
more than one data driver for your data store, moving from one to the other can be as straightforward as porting the DSII from C++ to C#.
Data Store Interface API
We have designed an API, the Data Store Interface (DSI), to connect to your custom data store. The DSI
is an object-oriented, type-safe interface that uses modern design and programming techniques,
offering two advantages. First, writing code for the DSI is easier and quicker than for previous-generation, non-object oriented interfaces. Second, writing code that works correctly is easier because
the modern techniques used in designing and implementing the DSI ensure that the compiler is
employed to check the correctness of your code. You write your DSI implementation faster and your
customers receive a more reliable product.
ODBC Driver in C++, Java or C#
No longer does an ODBC driver have to be built in C++. We have developed the bridging components so
that you can choose to build an ODBC driver against your SQL-enabled or non-SQL data store either in
Java or a .NET language such as C#.
Robust Client/Server Components
The Client/Server components of SimbaEngine SDK continue to deliver performance and usability. We designed SimbaServer to maximize the use of server resources, and the SimbaClients for ODBC, JDBC
and ADO.NET to maximize responsiveness for the user. These components communicate using a layered,
high-performance wire protocol.
You can mix and match client and server components by word length and by processor and operating
system. No matter what deployment architecture makes sense for your system, SimbaEngine SDK 9.4
will work. Client/Server components on 32-bit, 64-bit, Windows, Linux and UNIX all interoperate seamlessly.
Internet Protocol version 6 (IPv6) Support
The SimbaClients for ODBC, JDBC and ADO.NET as well as SimbaServer support the use of IPv6
addresses. IPv4 and IPv6 addresses can co-exist.
Kerberos
The client and server stack in SimbaEngine SDK 9.4 supports Kerberos for servers developed in either
ients, allowing drivers built using the SDK to better
SimbaEngine SDK 9.4 -- Page 5
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
integrate into existing enterprise security configurations while improving the overall security of the
drivers.
Collaborative Query Execution
Simba SQLEngine has an innovative design. A key part of the design is the way SQL statements are processed into corresponding Algebraic Expression Trees, or AE-Trees. The AE-Tree formed from an SQL
query is the mathematical equivalent of the SQL query, but it is in a form that is much easier to use.
Simba SQLEngine allows your code to look through the AE-Tree for sub-trees that your data store can execute. Pass-Down Filters and Pass-Down Aggregation are two specific examples, but your data store
can execute any part of the AE-Tree. When your data store is executing some part of the AE-Tree, Simba
SQLEngine does not execute that part, but leaves your data store to work as fast as possible and then consumes the results.
We call the adaptive collaboration between Simba SQLEngine and your data store Collaborative Query
Execution (CQE). CQE allows your data store to execute the parts of the query for which it is designed
and leave the rest of the query to be executed by Simba SQLEngine. Because Simba SQLEngine does not
redundantly execute the same parts of the query as your data store, your ODBC 3.80 driver delivers the
full performance of your data store.
Pass-Down Aggregation
Your Simba SQLEngine ODBC driver can pass down aggregation to your data store. Data stores that can
quickly execute aggregation can pass on their performance to the user. Simba SQLEngine leaves
aggregate execution to your data store, removing the need for aggregation within Simba SQLEngine. For
data stores that do not support such aggregation, Simba SQLEngine continues to handle aggregation.
For instance, if your data store can execute the COUNT() aggregate function very quickly, then SQL
queries of the form SELECT COUNT(C1) FROM T1 can be highly optimized. When requested, Simba
SQLEngine passes down the COUNT function to the data store to execute. The data store executes the aggregate function and passes a single result value back to Simba SQLEngine. For some data stores, this
can mean that no raw table data is extracted from the data store and the full performance of the data
store is delivered to the end user.
Pass-Down Filters
Your Simba SQLEngine ODBC driver can pass down filters to your data store. Your code can take over execution of table filters when your data store can perform filtering faster than Simba SQLEngine. You
can let Simba SQLEngine perform filtering if your data store cannot. Simba SQLEngine works
collaboratively with your data store to deliver the highest possible performance to your customers.
Data Store Indexes Support
The SQLEngine is able to make efficient use of indexes present in the data stores, greatly speeding up
operations for joins and filtering. SQLEngine is better able to take advantage of your data store
capabilities to more efficiently compute the results of queries, which results in lower memory use and
less time spent waiting for results.
SimbaEngine SDK 9.4 -- Page 6
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Data Manipulation Language (DML)
The SQLEngine in SimbaEngine SDK is enabled for writing data, allowing creation of a C++ ODBC driver with write-back capabilities. UPDATE, INSERT, and DELETE operations are fully supported.
Data Definition Language (DDL)
The SQLEngine in SimbaEngine SDK is enabled for defining schemas. Flexible syntax for CREATE/DROP
tables and indices are now supported.
Custom SQL Data Types and Custom Data Converters
The SimbaODBC component in SimbaEngine SDK features support for custom SQL data types and
custom data converters. Custom SQL data types allow an implementation to provide different behaviors
than those provided by the SDK for customized data types. Custom data converters allow an
implementation to build the most efficient data conversion routines possible for the custom data types.
Interval Data Types
SimbaEngine SDK features complete support for all 13 interval data types defined in the ODBC 3.80
spec. Conversions between the interval types as well as to and from other compatible data types are also added.
Rebranding Capability in JDBC and ADO.NET
All classes in the JDBC and ADO.NET components of SDK can be fully rebranded. Rebranding capability
allows JDBC drivers and ADO.NET providers built using the SDK to appear entirely as if they were built
by you.
Rebranding Capability for Simba ODBC Client Driver
The SDK provides tools for you to rebrand the finished Simba ODBC Client driver. The driver can be
customized to use a vendor-designated registry location. Error messages also use a rebranded vendor
name. No programming is required.
Full Support for Outer Joins
Simba SQLEngine completely supports the SQL-92 OUTER JOIN syntax including LEFT, RIGHT, and FULL
OUTER JOINs. Your customers are not restricted in writing complex SQL queries for your Simba SQLEngine ODBC driver.
Full Support for Sub-Queries
Simba SQLEngine supports both correlated and uncorrelated sub-queries. In addition, sub-queries can
be used anywhere in SQL SELECT statements that are allowed by SQL-92 syntax, for example in the
SimbaEngine SDK 9.4 -- Page 7
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
SELECT, WHERE, FROM and HAVING clauses. Your customers can write more sophisticated queries using
a wider variety of reporting applications.
Full Support for Stored Procedures
Simba SQLEngine completely supports stored procedures defined in the DSII. Stored procedures may return no results, result sets, or row count results, as well as providing return values, and input, output,
and input/output parameters. The Codebase and JavaQuickstart sample drivers provide several easy-to-
follow examples you can use to easily add your own custom stored procedures.
Dynamic Indexing in the SQLEngine
The SQLEngine in SDK supports creating indices dynamically on joining columns when the underlying tables do not have built-in indices for the columns, speeding up joins of tables enormously.
Comprehensive Testing
We continued our effort to build a rigorous and comprehensive test suite for SimbaEngine SDK to
ensure that the SDK is the most reliable and conformant you can find. We run tens of millions of tests
on a daily basis using our comprehensive test suites for ODBC, JDBC, ADO.NET and OLE DB so your customers can be sure of the quality of your data drivers.
SimbaEngine SDK Driver Examples
The SimbaEngine driver examples make it easy and intuitive to create your own data driver. Using the
Data Store Interface (DSI) API, you can prototype a data driver in five days. You can then add
functionality to your prototype and produce a commercial-quality product.
Quickstart ODBC Driver and OLE DB Provider Example
The Quickstart driver example is an ODBC driver and an OLE DB provider that includes Simba SQLEngine
and implements the C++ DSI API. The Quickstart sample is a cross-platform driver that reads text files in a tabbed Unicode text format. The intent of the driver is to provide a simple, working driver that you
can transform into a driver that accesses your non-SQL data store. The OLE DB configurations are
Windows only. We have also include sample installers for ODBC and OLE DB. You can use the sample installers as templates to build your own installers rapidly.
JavaQuickstart ODBC Driver Example
Much like the Quickstart driver example, the JavaQuickstart driver example is an ODBC driver that
includes the Simba SQLEngine. JavaQuickstart implements the Java DSI API, providing you with the
option to implement an ODBC driver in the Java language.
DotNetQuickstart ODBC Driver Example
SimbaEngine SDK 9.4 -- Page 8
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Much like the Quickstart driver example, the DotNetQuickstart driver example is an ODBC driver that
includes the Simba SQLEngine. DotNetQuickstart implements the C# DSI API, providing you with the option to implement an ODBC driver in a .NET language such as C#.
Codebase ODBC Driver Example
The Codebase driver example is an ODBC driver that includes Simba SQLEngine and implements the C++ DSI API. Codebase provides sample implementations of more advanced functionality, such as optimized
pass-downs and stored procedures. Instead of simple text files, Codebase uses dBase-format files to
store data. The SimbaEngine Codebase driver is an example of a DSI implementation to an ISAM data store, as well as a reference implementation that helps you track down misbehaving code. We supply
you with full source code and project files so you can debug and rebuild the DSI implementation.
The example functionality implemented in the Codebase driver example is easy to understand and
duplicate in your DSI implementation. You can copy as much of the code as you want to your own
driver.
UltraLight ODBC Driver Example
The UltraLight driver example is an ODBC driver that implements the C++ DSI API but does not include
the Simba SQLEngine. The driver providesa simple driver that you can transform into a driver that
accesses your own SQL-enabled data store.
JavaUltraLight ODBC Driver Example
Much like the UltraLight ODBC driver example, the JavaUltraLight ODBC driver example is an ODBC
driver that does not include the Simba SQLEngine. JavaUltraLight implements the Java DSI API,
providing you with the option to implement an ODBC driver in the Java language to access your own
SQL-enabled data store.
DotNetUltraLight ODBC Driver Example
Much like the UltraLight ODBC driver example, the DotNetUltraLight ODBC driver example is an ODBC
driver that does not include the Simba SQLEngine. DotNetUltraLight implements the C# DSI API,
providing you with the option to implement an ODBC driver in the C# language to access your own SQL-enabled data store.
JavaUltraLight JDBC Driver Example
The JavaUltraLight JDBC driver example is a JDBC driver that implements the Java DSI API. The driver
provides a simple driver that you can transform into a JDBC driver to access your own SQL-enabled data
store.
DotNetUltraLight ADO.NET Provider Example
The DotNetUltraLight ADO.NET Provider example is an ADO.NET data provider that implements the C#
DSI API. The driver provides a simple provider that you can transform into an ADO.NET data provider to
access your own SQL-enabled data store.
SimbaEngine SDK 9.4 -- Page 9
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
SimbaEngine SDK 9.4 -- Page 10
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Installation
This release package contains these Release Notes and the Simba Engine SDK 9.4 installer for 32-bit
and 64-bit Windows. The same installer is used for both 32-bit and 64-bit Windows.
On Windows, SimbaEngine SDK 9.4 is delivered as a single self-extracting installation program. Please
follow the steps below to install the SDK:
1. Run the installer executable file.
2. Follow the instructions in the SimbaEngine SDK 9.4 installer.
a. Read and understand the license agreement.
b. Select the SimbaEngine SDK 9.4 installation location. We recommend you use the default
location of Simba Technologies . The installer will install SimbaEngine SDK 9.4 and its
components in a \ SimbaEngineSDK folder at that location.
3. Click Finish.
On a 32-bit Windows computer, the folders named x64 contain the 64-bit versions of libraries and
DLLs, but there are no 64-bit registry information created because that part of the registry does not exist. Note that you can develop both 32-bit and 64-bit drivers on 32-bit computers.
On 64-bit Windows, all of the folders contain the expected libraries and DLLs. Both the 32-bit and the
64-bit registry settings are automatically created. On 64-bit computers, once you are set up, you can
develop and run both 32-bit and 64-bit drivers.
SimbaEngine SDK 9.4 -- Page 11
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Changes and Resolved Issues
The following is the list of changes and resolved issues in the SimbaEngine SDK 9.4 release.
SimbaEngine SDK 9.4.9:
[11486][JavaDSI] Update enum list in AggrFunctionID for STDDEV, STDDEV_POP, VAR and VAR_POP.
[11436][JDBC] Fix the null pointer exception for m_parentStatement in SForwardResultSet, when the
result set was created without the statement.
[11499][Support] Add the capability to convert timestamp string to date/time.
[Client][Communications][Server] Improve logging in client and server, especially logging of ssl-related
errors and warnings.
[Communications] Fix several potential memory leaks and race conditions related to ssl. These could
lead to server hangs and dropped connections.
[DSI] Improve error messages/logging when there is an error in retrieving localized error messages.
[DSI] Add support in DSIFileLogger to log in millisecond for the log timestamp.
[JavaDSI] Add support for passdown filter InPredicate, Not and NullPredicate. Update JavaDSI document.
[ODBC] Fix an issue where multi-part SQLGetData calls with SQL_C_DEFAULT would cause an error due
to the code assuming the type had changed.
[OLEDB] Add support to a DSII not using populate parameters capability between Prepare and Execute
in DirectExecute mode.
[Server] Improve logging in DsiBkpActionDispatcher to use from the dispatch context, rather than
always using the driver log so more log entries go to the connection's logger.
[SQLEngine] Add advanced index logging.
[Support][DSI][ODBC] Expose a ThreadPool class and an ITask interface. The thread pool allows the execution of task objects into independent threads created by the thread pool. The task classes must
implement the ITask interface. The task object can then be posted to the thread pool that will create a
thread to run the task. An EventHandler can be registered in order to handle start thread and finish thread events.
[Support] Fix a use-after-free error when destroying a DSIFileLogger via SharedPtr.
SimbaEngine SDK 9.4 -- Page 12
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
SimbaEngine SDK 9.4.8:
[11440][DSI] Fix a use-after-free issue, which happened during static destruction on driver unload. On Windows, this caused destructors for some global objects to fail to execute and resulted in memory
leaks.
[11421][JavaDSI] Update AENodeType and node mapping in AENodeFactory to be consistent with the C++ SQLEngine. This fixes some issues during passdown.
[11377][CLIDSI] Fix a crash when SQLDescribeCol was called on an approximate numeric column.
[Communications] Add logic around SSL_accept() and SSL_connect() to retry in case of EINTR errors.
[DSI] Add logic to detect when the application is MSQuery and disable ODBC async support, as
MSQuery does not work correctly when async is enabled.
[DSIExt] Change DSIExtProceduresMetadataSource to skip procedures which it cannot open (logging
the error), instead of failing.
[JDBC] SConnection.getTypeMap() now returns an empty map by default, rather than throwing an
exception.
[ODBC] Improve logging involving attributes (e.g. SQLGetInfo, SQLSetConnectAttr, etc) to use symbolic
names (e.g. SQL_ACCESSIBLE_PROCEDURES) instead of the numeric value.
SimbaEngine SDK 9.4.7:
[11304][SQLEngine] Fix an infinite loop in passdown-join while updating the AETree if the tree was
cloned such as when there is a parameter in the query.
[11332][ODBC] Fix a bug where the DSI_ROWSET_SIZE property value was not being sent to the DSII before fetching in ODBC.
[SQLEngine] Fix an issue where some aggregate functions d have unnamed columns.
[SQLEngine] Fix operand types incompatibility error when inserting multiple rows into a decimal column and one of the values is NULL.
[SQLEngine] Relax SQL grammar to allow USER as an identifier.
[SQLEngine] Fix an error computing distinct aggregates when all aggregated values in a group are
NULL.
[Support] Fix an issue in char type converters where the null terminator was included in the length
during SQL to SQL type conversion.
[Support] Fix an infinite loop when copying an invalid TDWExactNumeric.
SimbaEngine SDK 9.4.6:
SimbaEngine SDK 9.4 -- Page 13
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[11177][SQLEngine] Fix a crash related to SQLEngine temporary indexes.
[11225][OLEDB] Fix a crash when using connection log after free in IDBInitialize::Uninitialize.
[Support] Fix an issue where SQL_FLOAT was being interpreted as the wrong size by some converters.
SimbaEngine SDK 9.4.5:
[11135][ODBC] Change SQLDescribeParam to return the binary precision from the
SQL_DESC_PRECISION descriptor for approximate numeric types, for consistency with SQLDescribeCol.
This makes it consistent with the ODBC description of Column and Parameter Size. This can be
customized with the new DSI_DRIVER_APPROXNUM_RADIX_IS_BINARY driver property. By default it is
set to true, which makes those functions use binary precision, but if set to false, will cause those
functions to use decimal precision.
[OLEDB] Add support for DSI_DRIVER_SUPPORTS_INTEGRATED_SECURITY driver property to
SimbaOLEDB.
[OLEDB] Fix an issue which could occur if a DSII called RegisterParameter() multiple times for the same
parameter index from within PopulateParameters().
[OLEDB] Add validation for VARIANT_BOOL values passed into OLEDB methods. Validates that the value
is either VARIANT_TRUE or VARIANT_FALSE.
[JavaDSI] Add some missing synchronization to the DSILogger class to avoid possible race conditions.
Also fix issue where DSILogger.getFileName could return the full path of the log file rather than just the
name.
SimbaEngine SDK 9.4.4:
[11135][ODBC] Fix the bug where SQLDescribeCol sets column length incorrectly for approximate
numeric types such as FLOAT.
[ODBC] Fix a crash when calling regsrv32 on a combined OLEDB Provider/ODBC Driver DLL.
[ODBC] Fix memory leaks and deletion of incomplete type.
[DSI] Add SharedSingletonManager.h and OLEDBProperties.h headers to Include/DSI.
[SQLEngine] Report more accurate metadata for some aggregate functions.
SimbaEngine SDK 9.4 -- Page 14
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[OLEDB] Fix some truncation when converting to or from DBTYPE_DATE.
[OLEDB] Correct return code for input and output parameter conversion errors.
[OLEDB] Fix a crash when running only provider with a combined OLEDB Provider/ODBC Driver DLL.
[OLEDB] Fix some errors when running provider in Excel due to incorrect handling of properties.
[OLEDB] Fix a crash in ProviderSingleton if Initialize() has not been called. This can happen if the DSII is
built as a combined OLEDB Provider/ODBC Driver with an embedded configuration dialog.
[Support] Add simba_wstring::WideCharStringLength as a replacement for the non-standard wcsnlen
function.
SimbaEngine SDK 9.4.3:
[11099][SQLEngine][DSI] Fix a bug in the SQL engine default implementation of the schema-only
metadata source which cause errors when the columns other than the schema columns were retrieved.
[11084][ODBC] Change to only load/unload odbcinst lib once per driver load to alleviate a memory leak
issue in the odbcinst library of unixODBC 2.3.2.
[10921][SQLEngine] Add support for passing down Projection and Union operations.
[ODBC][OLEDB][DSI][Server] Add shared singleton initialization. This allows OLEDB & ODBC to be linked
into the same DLL.
[ODBC] Internal optimization of the convertor classes.
[ODBC] Fixed a bug where the SQL_ROWSET_SIZE property was mapped to uint32 type instead of
uint64.
[OLEDB] Use custom property set in DBINIT property group for custom properties.
[OLEDB] Fix an issue where the dialect was not correctly returned from ICommand::GetCommandText().
[OLEDB] Add a check if DBCONVERTFLAGS_ISLONG is set on fixed type, if so, return error and adding
check if DBCONVERTFLAGS_FROMVARIANT flag is set and wFromType represents a type within a
VARIANT.
[OLEDB] Fix an issue with reference counting of Accessor.
SimbaEngine SDK 9.4 -- Page 15
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[JavaDSI] Add a missing property to the JavaDSI data engine governing if SQLEngine should use the
DSI_CONN_MAX_CHAR_LITERAL_LEN and DSI_CONN_MAX_BINARY_LITERAL_LEN when exposing
parameter metadata.
[JNIDSI] Fix conversion of timestamp parameter to Java object accidentally subtracting 1900 from the
year, and fix the setGuid method never being cached due to copy/paste error.
[DotNetDSIExt][CLIDSI] Add a missing property that was causing a crash in JNIDSI/CLIDSI.
SimbaEngine SDK 9.4.2:
[Support] Extend the list of supported encoding types following upgrade to ICU 53.1 in 9.4 (see
EncodingType.h in Support).
[Support] AutoPtr now ensures that ownership is transferred before destructing the old value in case
the destructor throws.
[OLEDB] Fix a filtering issue with the foreign keys schema rowset resulting in ignoring the provided
filter values.
[OLEDB] Fix crash due to order of destruction of query manager and statements. Also prevent query
manager destruction from throwing.
[OLEDB] Fix an issue during an execution of a query when it was always getting the results even if it is
not necessary when 'direct execute' was previously called. It was causing crash in some drivers that
were not preparing results in this scenario.
[JDBC][JavaDSI] Make corrections in the documentations in order to solve javadoc warnings.
[JDBC] Fix an issue where PreparedStatement.setObject with a Calendar would not work properly.
[JDBC] Fix a bug where stream parameter types were not set properly by the JDBC layer for JDBC 4 and
4.1 prepared statements.
[DotNetClient] Overriding driver property value DSI_DRIVER_KEEP_TIMESTRING_FRACTION_ZERO and
changing the way of dealing with SqlType.Decimal in DataHelper (type can be decimal, string and
SqlDecimal, not only decimal).
[DotNetClient] Change DataConverter::StringToDecimal, so it always returns a conversion error
exception whenever such an error is identified.
SimbaEngine SDK 9.4 -- Page 16
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
SimbaEngine SDK 9.4.1:
[OLEDB] Fix an issue where connections were leaked and not disconnected when a DataSource object
was released without being uninitialized.
[ODBC] ODBCInstLib setting now has a default value based on detected driver manager.
[Sample Drivers] Fix an issue compiling dialog resource files on Windows 8 by replacing use of afxres.h
with windows.h.
[Support] Optimize construction of simba_wstring for some encodings.
[Support] Fix potential bus error on Sparc when right-trimming strings.
[JDBC] Fix a bug where time zone was not properly considered when converting a string to a Time
object.
[JDBC] Fix sorting for some metadata results.
[SQLEngine] Fix equality comparator for double and float values.
SimbaEngine SDK 9.4.0:
[JDBC] The SDK now supports building JDBC 4.1 drivers using Java 7. JavaUltraLight sample is updated
to have a JDBC 4.1 configuration.
[JDBC] PreparedStatement now provides the Java DSI with the SQL-type information from set
parameters. The DSI can then modify the parameter types before execution starts. The previous
behaviour was for the JDBC to request parameter metadata from the DSI and convert the set data to
that type.
[JDBC] Change the behaviour of DatabaseMetaData.getSchemas() to use the CATALOG_SCHEMA_ONLY
metadata source if the DSII supports catalogs, and SCHEMA_ONLY otherwise.
[JavaDSI] Add statement properties for set and get fetch size for JDBC. The properties allows DSII to be
aware of the fetch size set on the JDBC statement object.
[JavaDSI] Add method to return an Iterator of Execution results to allow for just in time execution of
multiple statements.
SimbaEngine SDK 9.4 -- Page 17
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[JavaDSI] Add new pushMappedParamTypes() in IQueryExecutor. Also changes to when
getMetadataForParameters is called.
[JavaDSI] The implementation of IMetadataSource that handles the DatabaseMetaData.getColumns()
request must handle the new MetadataSourceColumnTag.IS_GENERATEDCOLUMN enum value.
[JavaDSI] Change default stream buffer size to 32000 bytes in ConnPropertyValues.
[JavaDSI] Deprecate class StringConverter. Should use com.simba.support.conv.CharConverter class
instead.
[JavaDSI] Add method supportsHasMoreRows() in IResultSet. If this method returns false,
IResultSet.hasMoreRows() will not be called. This allows the driver to not check if there is more rows on
call to getData. The result of not supporting hasMoreRows is that the JDBC method ResultSet.isLast()
will throw a SQLException if it is called by the application.
[JavaDSI] Remove DSI_SCHEMA_NAME property from ConnPropertyKey.
[JavaSupport] Add new SQL-to-SQL conversion methods in the com.simba.support.conv package.
[DSI] Add a class, DSIColumnsView, which allows you to create an IColumns which is a 'view' into
another IColumns.
[DSI] Change IDriver, IEnvironment, IConnection, and IStatement to expose their message sources as
SharedPtr objects.
[DSI] Add an environment property, DSI_ENV_DATA_ACCESS_API, which exposes under which API the
DSII is running (either ODBC, OLEDB, JDBC, or ADO.NET). Convenience method DSIDataEngine::IsOLEDB()
is added which uses this new property.
NOTE: This property is currently only set correctly when running under ODBC or OLEDB in a standalone
configuration, otherwise it defaults to ODBC.
[DSI] Rename PopulateDSISchemaMetadataOutputColumnList() to
PopulateDSICatalogSchemaMetadataOutputColumnList() in DSIOutputMetadataColumnFactory.
[DSI] Change DSI_NUM_PREC_RADIX_COLUMN_TAG type from SQLSMALLINT to SQLINTEGER.
[DSI] Add IConnection::GetConnectionSettingInfo(). This has a default implementation in DSIConnection
which returns an empty map.
SimbaEngine SDK 9.4 -- Page 18
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[DSI] Add Simba::DSI::GetOLEDBBranding function declaration in file OLEDBBranding.h. All OLEDB
Provider DSIIs must implement this function.
[ODBC] Proxy SQL_DESC_LENGTH to SQL_DESC_PRECISION for SQLDescribeCol for approximate
numeric types to make column size consistent between SQLColumns, SQLColAttribute, and
SQLDescribeCol.
[ODBC] Default value of DSI_DRIVER_ODBC_VER is now set to 3.52 (as opposed to correct value of
3.80 ) when running under a known driver manager which has issues with drivers which report the
newer version. NOTE: For Windows Driver Manager, SimbaDM, unixODBC and iODBC, it will be set to the
correctly to 3.80 .
[Support] Add TakeOwnership() methods to AutoVector to make the passing of ownership more explicit
and safer in light of possible out-of-memory exceptions.
[Support] Add a simba_wstring constructor which takes in a SqlData (with a char/wchar sqltype).
[Support] Add SqlData::IsNullOrEmpty().
[Support] Add check that neither '%' nor '_' were used as LIKE ESCAPE characters.
[Support] Add GetNativeErrorCode() method to IMessageSource.
[Support] Add support for a custom deallocator in AutoPtr, AutoVector, and AutoList.
[Support] Add ThreadSafeSharedObject, which makes it easier to use a class with SharedPtr in a thread-
safe manner.
[Support] Add a template copy constructor and assignment operator to SharedPtr, which allows code
such as 'SharedPtr<Derived> s = SharedPtr<Base>(ptr);'
[Support] Change the semantics of SQL to C converters. Now, you must check SqlCData::IsBufferValid()
and only access its buffer if it returns true. If SqlCData::IsBufferValid() returns false, you must call
SqlCData::SetConvertedLength() with the length the converted data would have taken up in the target
buffer, assuming no truncation occurred. Currently, SqlCData::IsBufferValid() will return false only when
running as an OLEDB provider.
[Support] Fix Variant constructor because when passing char*, the compiler was picking the bool
constructor because it was a more direct conversion. Add char* and wchar_t* constructors.
SimbaEngine SDK 9.4 -- Page 19
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[Support] Optimize char/wchar -> char/wchar conversions by caching the underlying
IWStreamConverter used, rather than creating one on each conversion.
[Support]
[Support] Change the definition of simba_int8 from char to signed char to make it explicit. The
can vary on different platform, compiler and C++ library.
[Support] Change AutoPtr to not tack on a 'const' to pointers/references returned from it when the
AutoPtr is const. This makes it more consistent with regular pointers. You can still declare an
AutoPtr<const T> if you need this.
[Support] Add missing template instantiations for NumberConverter::ConvertStringToType(const
simba_char*, bool).
[Support] Fix a bug in ConvertUInt64ToWString where it used the wrong encoding when creating the
string.
[SQLEngine] Add support for using DSII indexes to satisfy IN predicates of the form 'c1 IN (a, b, c)'.
[SQLEngine] Add support for using DSII indexes to satisfy LIKE predicates which represent prefix
conditions. For example, "c1 LIKE 'prefix%'" or "c1 LIKE 'prefix%other_stuff%'". In the latter case, where
the LIKE pattern isn't purely a literal prefix pattern, we pass the literal prefix to the DSII index and have
the SQLEngine do the rest of the filtering.
[SQLEngine] Optimize many string scalar functions to reduce unnecessary copying/allocation.
[SQLEngine] In DSIExtColumnsMetadataSource, use type name from SqlTypeMetadata instead of using
SQLGetTypeInfo to map sql type to type name.
[SQLEngine] Fix a bug which could cause false positives when comparing approximate numerics.
Sometimes the comparisons would incorrectly return true when comparing an infinite value to some
other value.
[SimbaServer] Disallow fallback to SSL protocol versions SSLv2 and SSLv3.
[JDBCClient] Prevent use of SSLv3 and SSLv2 protocols.
[ODBCClient] Set default SSL protocol to TLSv1.
SimbaEngine SDK 9.4 -- Page 20
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
[DotNetClient] Set default SSL protocol to TLSv1.
[DotNetDSI] DSIIs may now return String, in addition to Decimal and SqlDecimal, from
IResultSet::GetData when returning SQL_DECIMAL and SQL_NUMERIC data. The string must be a valid
decimal representation. It may exceed maximum precision of either Decimal or SqlDecimal, but in that
case, may only be retrieved by applications as a String.
SimbaEngine SDK 9.4 -- Page 21
Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes
Known Issues
There are a few known issues in SimbaEngine SDK 9.4.
Join order
ODBC drivers created using the new Simba SQLEngine do not yet have the full capability to optimize the table order of joins in SQL queries. Under certain circumstances, an ODBC driver based on Simba
SQLEngine 9.4 will perform a join more slowly. In all cases, the condition is resolved by rewriting the
SQL query so that the bigger table is mentioned first in table lists and join filters. This functionality is scheduled for optimization in subsequent releases.
Views
SimbaEngine SDK 9.4 does not support SQL views. SQL views are planned for a subsequent release.
How Do I Get Support?
We welcome your questions and comments. To help us help you faster please have ready a detailed
summary of your machine environment (operating system, version and patch-level) before you contact
us. Providing us with this information helps us to understand your situation and to help you more effectively.
By telephone:
Customer Support: +1.604.633.0008 ext 3. Customer Support is available Monday to Friday, from 9 a.m. to 5 p.m. Pacific Time.
By fax or e-mail:
Fax: +1.604.633.0004
Send e-mail to [email protected]
On the Web:
Visit us on the Web at www.simba.com and submit technical requests online at support.simba.com.