simba technologies...large-scale applications can take advantage features in odbc 3.8 to achieve...

21
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

Upload: others

Post on 09-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Simba Technologies...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

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

Page 2: Simba Technologies...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

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.

Page 3: Simba Technologies...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

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.

Page 4: Simba Technologies...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

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

Page 5: Simba Technologies...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

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.

Page 6: Simba Technologies...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

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

Page 7: Simba Technologies...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

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

Page 8: Simba Technologies...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

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.

Page 9: Simba Technologies...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

SimbaEngine SDK 9.4 -- Page 9

Simba Technologies Incorporated SimbaEngine SDK 9.4 | Release Notes

Page 10: Simba Technologies...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

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.

Page 11: Simba Technologies...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

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.

Page 12: Simba Technologies...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

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:

Page 13: Simba Technologies...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

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.

Page 14: Simba Technologies...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

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.

Page 15: Simba Technologies...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

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.

Page 16: Simba Technologies...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

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.

Page 17: Simba Technologies...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

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.

Page 18: Simba Technologies...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

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.

Page 19: Simba Technologies...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

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.

Page 20: Simba Technologies...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

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.

Page 21: Simba Technologies...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

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.