Product overview
Overview
OpenAccess SDK configurations
Client/Server configuration
Local configuration
OpenAccess SDK Client for ODBC
OpenAccess SDK Client for ADO
OpenAccess SDK Client for JDBC
OpenAccess SDK Client for ADO.NET
OpenAccess SDK Server
OpenAccess SDK Local Server
OpenAccess SDK SQL Engine
OpenAccess SDK IP Software Development Kit
Features overview
Core features
Advanced features
OpenAccess SDK configurations and IP implementation
OpenAccess SDK SQL Engine and IP interactions
Row-based mode
SQL pass-through mode
SQL processing
Client implementation
Schema
Data types
Scalar functions
Query optimization
Sequence of key constraints
Key and time constraints
Stored procedures
Business rules
Access control
Data management
Optimized join processing
Cursor based select processing
User defined data types
User defined scalar functions
SQL pass-through mode
Interval literal
IgnoreDateTimeLiteral error
Data source accessibility
OpenAccess SDK methodology for driver development
OpenAccess SDK SQL engine and IP interaction
Overview
Example database
Query processing: without optimization
Steps for query processing without optimization
Query processing: with optimization
Steps for query processing with optimization
Query processing: with table expression pushdown
Query processing: with SQL pass-through
Developing an Interface Provider (IP)
Modeling Your database
Schema database configuration
Schema definition for CURVALUE
Determining the data source command level
Determining the functionality to support
Designing and implementing the required IP functions
Optimization and evaluation
Multithreading issues
Using signals
Signal use of the Java Virtual Machine within OpenAccess SDK Server
Designing and coding the IP
Typical call sequence into the IP
SELECT processing
Simple SELECT processing
Cursor-Based SELECT processing
FETCH_BLOCK_SIZE
Using dam_isTargetRow to evaluate a row
SELECT processing with DAM_START_QUERY and DAM_END_QUERY
Record locking
Optimized GROUP BY, ORDER BY and DISTINCT processing
Returning multiple values based on aliases
Bulk fetching
Join processing
Join order selection
Enabling join order selection
Specifying join order
Join algorithm
Join hints
JoinInQueryOrder option
Cost based join order
Search condition order
FKEY order
Join condition order
Check index on join conditions
Implementing join pushdown
Building a rowset of an inner table
Supporting join pushdown of multiple join tables
Supporting join pushdown for outer joins
Maintaining join information at global context
Limitations of using join pushdown on large joins
Implementing Block Join processing
Execution sequence
IP indicates support for block joins
IP indicates full table rowset
Reporting join conditions
Disabling block joins
IP modes
Block join execution
Update processing
Optimizing update processing
Delete processing
Insert processing
Optimization
Default optimization
Turning off default optimization
Column-specific restrictions
Advanced optimization
Working with AND condition lists
Working with OR condition lists
DDL object management
Create Table processing
DDL function
Alter Table processing
Drop Table processing
Create Index processing
Drop Index processing
Views
Command syntax
Restriction in a view definition
Queries on a view
Views in Dynamic Schema configuration
Create View
Select From view
Drop View
Stored procedure processing
Pre-defined result set or no result set
Runtime defined result set(s)
Example code from Memory IP
User defined scalar functions
Registering user defined scalar functions
In an IP developed in C/C++
In an IP developed in Java
Variable number of arguments
Overloading of scalar functions
Accessing statement or connection context
Functions returning constant values
Using scalar functions
Bulk insert
Enabling bulk insert
Bulk insert processing in C/C++
Example
Mapping SQL datatypes to C datatypes
Bulk insert processing in Java
Example
Mapping SQL datatypes to Java datatypes
Privileges
System privileges
Object privileges
Creating users and roles
Implementing DCL support
Implementing Privilege support
Client and license information
Query execution analysis
SQL Engine Plan example
Simple query with explicit Select list
Simple query with Select-all and Search condition
Join query
Join query in block join mode
Schema definition and management
Overview
Schema objects
Tables catalog table OA_TABLES
Columns catalog table OA_COLUMNS
Specifying data types
Index catalog table OA_STATISTICS
Foreign keys catalog table OA_FKEYS
Procedures catalog table OA_PROC
Procedures columns table OA_PROCCOLUMNS
Schema Database configuration
Schema Database management through direct schema tables manipulation
Setting up to configure the Schema Database
Adding your tables
Dynamic schema management
Use of the schema function
Filtering schema objects based on the search object
Optimizing for tables with large number of columns
Implementing Table Expression Pushdown
About Table Expression Pushdown
Pushdown of Table Search and Join Expression
Checking if Partial Search Expression is Returned
Handling Correlated Queries
Building Results
Handling Scalar Functions
Examples
Single Table Query With Complex Search Expression
Two Table Equijoin
Two Table Outer Join With Multiple Conditions
Pseudo-code for Getting the Table Expression
Table functions
Overview
Enabling table functions
Providing schema information to OpenAccess SDK
Processing a query on table functions
Example
Providing schema for CURVALUE table function
Accessing CURVALUE arguments from OAIP_execute
Support for SQL concepts on table functions
Limitations
Implementing SQL pass-through mode
Objective of this feature
Feature description
BNF description of the expression tree
Building results for SELECT queries
Scalar functions
Selective SQL pass-through
Scalar functions
Execution sequence
IP indicates support for Query Execution Mode selection
Sample code
Product overview
Sample code