skip to main content
Interface Provider class : Overview of the Interface Provider class
 

Overview of the Interface Provider class

The following table shows all of the methods that the OpenAccess SDK SQL Engine can call to process queries. In addition to these methods, the IP must implement any methods it has registered for handling user-defined scalar functions and stored procedures. A .NET IP is implemented by creating a class in C# or VB# that is derived from the oanet.sql.ip class.
 
Table 1: Methods to be supported by an IP 
Function
Method Name
Description
CONNECT
Required
ipConnect
Called when a client wants to establish a connection with a data source served by the IP. Authentication information such as the user name and password are passed in.
The default value is DAM_SUCCESS.
If no return value is specified, the OpenAccess SDK SQL Engine assumes that the return value is DAM_SUCCESS.
The IP does not generate a DAM_FAILURE unless specified.
DCL
Optional
ipDCL
Execute a DCL command (create user, drop user, create role, drop role, grant, revoke).
DDL
Optional
ipDDL
Called by the OpenAccess SDK SQL Engine to process DDL commands like CREATE TABLE.
This method is only required if the IP indicates support for DDL Commands like CREATE TABLE, DROP TABLE in the Support Array.
DISCONNECT
Required
ipDisconnect
Closes the connection. The IP should close any files or other connections established on behalf of this connection.
DYNAMIC_RESULTS
Optional
ipProcedureDynamic
Called to invoke a stored procedure that returns one or more result sets that can be defined at runtime.
END TRANSACTION
Optional
ipEndTransaction
COMMIT or ROLLBACK the current transaction.
EXECUTE
Required
ipExecute
Called with INSERT, SELECT, UPDATE or DELETE operation code to perform the requested operation.
GETDSINFO
Optional
ipGetDSInfo
Called to obtain information about the data source such as the SQL capabilities, limits on object names, and other information that is needed. This method should be a member of the IP class that implements the IP interface.
GETINFO
Required
ipGetInfo
Gets information about the driver.
GET LONG DATA
Required
ipGetLongData
Gets information about the long data. This method should be a member of the IP class that implements the IP interface.
GETSUPPORT
Required
ipGetSupport
Gets information about what type of operations are supported by the driver. This information is used to determine what processing is passed down to the IP.
GET TYPES INFO
Optional
ipGetTypesInfo
Called to get information about the data types. This method should be a member of the IP class that implements the IP interface.
NATIVE
Optional
ipNative
Called to execute a command that the OpenAccess SDK SQL Engine did not recognize as a valid SQL command.
PRIVILEGE
Optional
ipPrivilege
Called to verify privileges on the specified user, object and operation combination.
PROCEDURE
Optional
ipProcedure
Called to invoke a stored procedure (only required if the IP is designed to support stored procedures with pre-defined result sets).
SCHEMA
Optional
ipSchema
Called to retrieve the schema information of your data source (only required if the IP will handle the schema management).
SCHEMAEX
Optional
ipSchemaEx
Called to retrieve schema information for stored procedures that define a result set at runtime (only required if the IP will handle the schema and will expose stored procedure with run-time defined result sets).
SETINFO
Required
ipSetInfo
Passes connection and statement level settings modified by the client to the IP.
START TRANSACTION
Optional
ipStartTransaction
Called to initiate a new transaction. The IP can use this entry point to perform transaction management for each connection.
The OpenAccess SDK code creates an instance of your object that implements this interface for each connection.
The following interfaces are used in an IP written for the .NET environment:
public interface ip
{
public string ipGetInfo(int iInfoType);
public int ipSetInfo(int iInfoType, string pInfoValue)
public int ipGetSupport(int iSupportType);
public int ipConnect (int64 tmHandle, int64 dam_hdbc,
string sDataSourceName, string sUserName,
string sPassword, string sCurrentCatalog,
string sIPProperties, string sIPCustomProperties );
public int ipDisconnect(int64 dam_hdbc);
public int ipStartTransaction(int64 dam_hdbc);
public int ipEndTransaction(int64 dam_hdbc,int iType);
public int ipExecute(int64 hstmt, int iStmtType, int64 hSearchCol,
out long piNumResRows);
public int ipSchema(int64 dam_hdbc, int64 pMemTree,int iType,
int64 pList, object pSearchObj);
public int ipDCL(int64 hstmt, int iType, out long piNumResRows);
public int ipDDL(int64 hstmt, int iType, out long piNumResRows)
public int ipProcedure(int64 hstmt, int iType,
out long piNumResRows);
public int ipPrivilege(int iStmtType,string pcUserName,
string pcCatalog, string pcSchema,
string pcObjName);
public int ipNative(int64 hstmt, int iCmdType,
string scCmd,
out long piNumResRows);
public int ipSchemaEx(int64 dam_hstmt, int64 pMemTree, int iType,
int64 pList, object pSearchObj);
public int ipProcedureDynamic(int64 hstmt, int iType, out long piNumResRows);
public int ipGetScalarFunction();
}
The optional ipGetTypesInfo, ipGetDSInfo and ipGetLongData methods cannot be part of the Interface Provider class. Instead, these methods mujst be members of the IP class that implements the IP interface.

See also 

ipExecute
ipGetInfo
ipGetScalarFunctions
ipNative
ipPrivilege
ipSchema
ipStartTransaction