com.informix.jdbc

## Class IfxSqli

- java.lang.Object
- - com.informix.jdbc.IfxSqli

All Implemented Interfaces:
  IfxProtocol

Direct Known Subclasses:
  IfxXASqli

    public class IfxSqli
    extends java.lang.Object
    implements IfxProtocol

The IfxSqli class implements IfxProtocol according to SQLI specification.

### Field Summary

Fields
`java.util.ArrayList<java.lang.Integer>` `batchRowStatus`
`protected IfxSqliConnect` `conn`
`protected static int` `INFX_BUFSIZE`
`protected static int` `INFX_MAX_BIGBUFSIZE`
`protected static int` `INFX_MAXBUFSIZE`
`protected IfxDataInputStream` `is`
`protected IfxDataOutputStream` `os`
`protected Trace` `protoTrace`
`protected com.informix.jdbc.IfxRowColumn` `SGK_rowColumn`
`protected boolean` `SQ_CLOSERecvd`
`protected SqliDbg` `sqliTrace`
`protected Trace` `trace`

### Constructor Summary

Constructors
Constructor and Description
`IfxSqli(IfxSqliConnect conn_arg)` Constructor for the IfxProtocol

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addException(java.sql.SQLException e)`
`void` `chainWarnings(java.sql.SQLWarning cwarn)` Chain SQLWarning
`void` `clear()` Clear member values.
`void` `clearBatch()` Clear members which were set when batch update was in progress
`void` `clearExceptions()` Clear SQLException chain.
`void` `clearPutErrRowCount()` clears the number of rows inserted in SQ_PUT batch
`void` `clearWarnings()` Clear SQLWarning chain.
`int` `decRefCount(byte[] locator)` Decrements refcount of a large object
`boolean` `dispatchMsg(int msg)`
`void` `executeBegin()` The public method for sending the SQ_BEGIN to start a transaction
`void` `executeClose(java.sql.Statement stmt)` public method for Close in the ResultSet object.
`void` `executeCloseDatabase()` Public method for closing a database.
`void` `executeCommand(java.sql.Statement stmt)` The public method for the sending of the COMMAND packet to the server and receiving the returned information from the server.
`void` `executeCommit()` The public method for sending the SQ_CMMTWORK to commit the transaction
`IfxResultSetMetaData` `executeDescribeInput()` Execute DESCRIBE INPUT command
`void` `executeEnv(java.util.Properties EnvVars)` Send the secondary environment variable list to the server.
`void` `executeExecute(java.sql.Statement stmt, boolean holdable, boolean withReOptimization)` Public method for the support of execute() in both PreparedStatement and Statement
`void` `executeExecute(java.sql.Statement stmt, boolean holdable, boolean withReOptimization, java.sql.ResultSetMetaData outputDesc)` Exceute a SQL statement on the server.
`void` `executeFastPath(java.lang.String signature, java.sql.ResultSetMetaData pmd, java.util.Vector<IfxObject> inParams, boolean hasOutParameter, boolean request_fparam)` executeFastPath is the public method which provides access to the fastpath facility.
`java.util.Vector<IfxObject>` `executeFastPath(java.lang.String signature, java.util.Vector<IfxObject> inParams, boolean request_fparam)` executeFastPath is the public method which provides access to the fastpath facility.
`void` `executeFastPath(java.lang.String signature, java.util.Vector<IfxObject> inParams, boolean hasOutParameter, boolean request_fparam)` Executing a UDR on the server.
`void` `executeFetchBlob(IfxObject blobDesc)` This function will be called from IfxBlob.toAscii() and IfxBlob.toBinary() function in IfxBlob.java file
`IfxResultSetMetaData` `executeFPDescribe(java.lang.String signature, boolean isProc, java.lang.String procName, int numargs)`
`void` `executeGetDBList()` The public method for sending SQ_DBLIST to the server.
`void` `executeOpenDatabase(java.lang.String dbName, int flags)` Public method for opening a database.
`void` `executePrepare(java.sql.Statement stmt)` The public method for sending the PREPARE packet to the server and receiving the return values from server.
`void` `executeProtocols(byte[] protocols)`
`int` `executeReadSmBlob(int lofd, byte[] buffer, int nbytes)` Read the Smart blob contents.
`int` `executeReadSmBlob(int lofd, byte[] buffer, int nbytes, int offset)` Read the Smart blob contents.
`int` `executeReadSmBlob(int lofd, java.io.FileOutputStream fileFd, int nbytes)` Read the Smart blob contents
`void` `executeRelease(int id)` public OVERLOADED method for release in the Statement object.
`void` `executeRelease(java.sql.Statement stmt)` public method for Close in the Statement object.
`void` `executeReleaseSavepoint(java.lang.String savepointname)` Release Savepoint on the server
`void` `executeRollback()` The public method for sending SQ_RBWORK to the server.
`void` `executeRollbackSavepoint(java.lang.String savepointname)` Set Savepoint on the server
`void` `executeSavepoint(java.lang.String savepointname, boolean uniqflag)` Set Savepoint on the server
`void` `executeScrollFetch(int scrolltype, int index, java.sql.Statement stmt, int fetchBufferSize)` executeScrollFetch() calls sendScrollFetch() to seen the Scroll cursor SQ_SFETCH message to the server.
`void` `executeStatementQuery(java.sql.Statement stmt)` public method to do the executeQuery for Statement objects and PreparedStatements
`void` `executeStatementQuery(java.sql.Statement stmt, boolean withHold, boolean withReOptimization)` protected method to do the executeQuery for Statement objects and PreparedStatements.
`void` `executeStatementQuery(java.sql.Statement stmt, boolean withHold, boolean withReOptimization, java.sql.ResultSetMetaData outputDesc)` Execute a Query on the server.
`void` `executeVersion()` Get the version number from the server.
`int` `executeWriteSmBlob(int loFd, byte[] buffer)` Write into the Smart blob
`int` `executeWriteSmBlob(int loFd, byte[] buffer, int offset, int length)`
`int` `executeWriteSmBlob(int loFd, java.io.InputStream fin, int length)` Write into the Smart blob
`protected void` `flip()` Notify OutputStream that messages should be sent to the server.
`boolean` `getaRow(int direction, int count, int scrolltype, int isscrollcurs, java.sql.Statement stmt)` get the requested row.
`long` `getBigSerialInserted()` Retrieve the last bigserial value inserted returned by SQ_INSERTDONE
`IfxObject` `getColumnInRow(int colIndex)` Get the value of a column in the current row in IfxObject.
`java.util.Vector<java.lang.String>` `getDBList()` This method returns the list of databases returned by the server in a Vector.
`int` `getEstimateNumberofRow()` Estimated number of rows sent in IfxMessageTypes.SQ_COST message.
`java.sql.SQLException` `getExceptions()`
`com.informix.jdbc.IfxFParam` `getFParam()` Return the fparam data from a fast path call.
`java.util.Vector<IfxObject>` `getFPReturnVector()` Return the return values from a fast path call.
`java.sql.ResultSetMetaData` `getMetaData()` Return member ResultSetMetaData object.
`boolean` `getNextSGKRow()` SGK resultSets are forward only and read only all the tuples are sent immediately after execution (by the server)
`int` `getNumberOfFetches()` get number of fetches (SQ_NFETCH or SQ_FETCH for this (ResultSet) method is public for testing, it is not intended to be documented
`int` `getNumberOfRowsProcessed()` Number of rows processed sent in SQ_DONE message.
`protected int` `getNumberOfTuplesReceived()`
`byte[]` `getProtocols()`
`int` `getPutErrRowCount()`
`long` `getSerial8Inserted()` Retrieve the last serial8 value inserted returned by SQ_INSERTDONE
`int` `getSerialInsert()` Serial value after an insert sent in IfxMessageTypes.SQ_DONE message.
`java.lang.String` `getServerVersion()` Return the server version number retrieved by executeVersion().
`int` `getSQLCode()` Retrieve the error code from SQ_ERR
`int` `getStatementType()` getStatementType() returns the statement type for the statement prepared.
`int` `getTupid()` getTupid() returns the Tuple ID for scroll cursors.
`int` `getTupleCount()` Return the number of tuples in the tuple vector.
`int` `getTupleSize()` Get the actual tuple size sent by the server.
`java.sql.SQLWarning` `getWarnings()` Get SQLWarnings chain.
`void` `handlePAMAuthentication(java.lang.String PAMClientClassName)`
`boolean` `handlePrivateServerExchange()`
`int` `incRefCount(byte[] locator)` Increments refcount of a large object
`boolean` `isResultSet()` isResultSet() returns true if the current statement can return resultset.
`void` `loadColumnData(int colIndex, IfxObject val)` Load data value of a column in the current row into the given IfxObject.
`void` `receiveMessage()` receiveMessage Generic message receiving method from the server
`void` `sendSQBatchEnd()` Sends SQBATCHEND message to output stream for ANSI DB when execute batch is done writes relevant messages to trace file.
`void` `sendSQBatchStart()` Sends SQBATCHSTART message to output stream for ANSI DB when execute batch is in progress writes relevant messages to trace file.
`protected void` `setIsReleased(boolean val)`
`java.io.InputStream` `toClobStream(IfxSmBlob obj)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### conn

    protected IfxSqliConnect conn

#### trace

    protected Trace trace

#### protoTrace

    protected Trace protoTrace

#### sqliTrace

    protected SqliDbg sqliTrace

#### INFX_BUFSIZE

    protected static final int INFX_BUFSIZE

See Also:
  Constant Field Values

#### INFX_MAXBUFSIZE

    protected static final int INFX_MAXBUFSIZE

See Also:
  Constant Field Values

#### INFX_MAX_BIGBUFSIZE

    protected static final int INFX_MAX_BIGBUFSIZE

See Also:
  Constant Field Values

#### SGK_rowColumn

    protected com.informix.jdbc.IfxRowColumn SGK_rowColumn

#### os

    protected IfxDataOutputStream os

#### is

    protected IfxDataInputStream is

#### SQ_CLOSERecvd

    protected boolean SQ_CLOSERecvd

#### batchRowStatus

    public java.util.ArrayList<java.lang.Integer> batchRowStatus

### Constructor Detail

#### IfxSqli

    public IfxSqli(IfxSqliConnect conn_arg)

Constructor for the IfxProtocol

Parameters:
  `conn_arg` - current connection

### Method Detail

#### getMetaData

    public java.sql.ResultSetMetaData getMetaData()

Return member ResultSetMetaData object.

Specified by:
  `getMetaData` in interface `IfxProtocol`
Returns:
  ResultSetMetaData

#### getStatementType

    public int getStatementType()

Description copied from interface: `IfxProtocol`
getStatementType() returns the statement type for the statement prepared.

Specified by:
  `getStatementType` in interface `IfxProtocol`

#### clearBatch

    public void clearBatch()

Clear members which were set when batch update was in progress

#### clear

    public void clear()

Clear member values.

Specified by:
  `clear` in interface `IfxProtocol`

#### executeBegin

    public void executeBegin()
                      throws java.sql.SQLException

The public method for sending the SQ_BEGIN to start a transaction

Specified by:
  `executeBegin` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeCommit

    public void executeCommit()
                       throws java.sql.SQLException

The public method for sending the SQ_CMMTWORK to commit the transaction

Specified by:
  `executeCommit` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeSavepoint

    public void executeSavepoint(java.lang.String savepointname,
                                 boolean uniqflag)
                          throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Set Savepoint on the server

Specified by:
  `executeSavepoint` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeReleaseSavepoint

    public void executeReleaseSavepoint(java.lang.String savepointname)
                                 throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Release Savepoint on the server

Specified by:
  `executeReleaseSavepoint` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeRollbackSavepoint

    public void executeRollbackSavepoint(java.lang.String savepointname)
                                  throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Set Savepoint on the server

Specified by:
  `executeRollbackSavepoint` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeRollback

    public void executeRollback()
                         throws java.sql.SQLException

The public method for sending SQ_RBWORK to the server.

Specified by:
  `executeRollback` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeGetDBList

    public void executeGetDBList()
                          throws java.sql.SQLException

The public method for sending SQ_DBLIST to the server.

Specified by:
  `executeGetDBList` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### getDBList

    public java.util.Vector<java.lang.String> getDBList()

This method returns the list of databases returned by the server in a Vector. This Vector is accessed in IfxDatabaseMetadata:getCatalogs.

Specified by:
  `getDBList` in interface `IfxProtocol`

#### executeCommand

    public void executeCommand(java.sql.Statement stmt)
                        throws java.sql.SQLException

The public method for the sending of the COMMAND packet to the server and receiving the returned information from the server. Used for the support of executeUpdate method from Statement and PreparedStatement.

Specified by:
  `executeCommand` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executePrepare

    public void executePrepare(java.sql.Statement stmt)
                        throws java.sql.SQLException

The public method for sending the PREPARE packet to the server and receiving the return values from server. Used for the support for connection.prepareStatement() method

Specified by:
  `executePrepare` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executeStatementQuery

    public void executeStatementQuery(java.sql.Statement stmt)
                               throws java.sql.SQLException

public method to do the executeQuery for Statement objects and PreparedStatements

Specified by:
  `executeStatementQuery` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executeStatementQuery

    public void executeStatementQuery(java.sql.Statement stmt,
                                      boolean withHold,
                                      boolean withReOptimization)
                               throws java.sql.SQLException

protected method to do the executeQuery for Statement objects and PreparedStatements. If withHold is true then SQ_HOLD message will be sent to the server.

Specified by:
  `executeStatementQuery` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
  `withHold` - , boolean hold cursor over execution
Throws:
  `java.sql.SQLException`

#### executeStatementQuery

    public void executeStatementQuery(java.sql.Statement stmt,
                                      boolean withHold,
                                      boolean withReOptimization,
                                      java.sql.ResultSetMetaData outputDesc)
                               throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Execute a Query on the server. The statement could potentially returns one or more rows of data. This method will open an cursor that points to the returned rows of data.

Specified by:
  `executeStatementQuery` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
  `withHold` - , boolean hold cursor over execution
  `outputDesc` - Meta data describing the output host variable types.
Throws:
  `java.sql.SQLException`

#### executeOpenDatabase

    public void executeOpenDatabase(java.lang.String dbName,
                                    int flags)
                             throws java.sql.SQLException

Public method for opening a database.

Specified by:
  `executeOpenDatabase` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeClose

    public void executeClose(java.sql.Statement stmt)
                      throws java.sql.SQLException

public method for Close in the ResultSet object. It acts similar to CLOSE statement.

Specified by:
  `executeClose` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executeRelease

    public void executeRelease(int id)
                        throws java.sql.SQLException

public OVERLOADED method for release in the Statement object. It acts similar to FREE statement.

Specified by:
  `executeRelease` in interface `IfxProtocol`
Parameters:
  `id` - Statement id ineger
Throws:
  `java.sql.SQLException`

#### executeRelease

    public void executeRelease(java.sql.Statement stmt)
                        throws java.sql.SQLException

public method for Close in the Statement object. It acts similar to FREE statement.

Specified by:
  `executeRelease` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executeCloseDatabase

    public void executeCloseDatabase()
                              throws java.sql.SQLException

Public method for closing a database. Used for the Connection.close() method.

Specified by:
  `executeCloseDatabase` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeExecute

    public void executeExecute(java.sql.Statement stmt,
                               boolean holdable,
                               boolean withReOptimization)
                        throws java.sql.SQLException

Public method for the support of execute() in both PreparedStatement and Statement

Specified by:
  `executeExecute` in interface `IfxProtocol`
Parameters:
  `stmt` - Statement object
Throws:
  `java.sql.SQLException`

#### executeExecute

    public void executeExecute(java.sql.Statement stmt,
                               boolean holdable,
                               boolean withReOptimization,
                               java.sql.ResultSetMetaData outputDesc)
                        throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Exceute a SQL statement on the server. The statement can be any DDL, INSERT, UPDATE, DELETE statements or any query statements that can potentially return one or more rows of data. If the statement returns one or more rows of data, a cursor will be opened and point to the returned rows of date.

Specified by:
  `executeExecute` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### receiveMessage

    public void receiveMessage()
                        throws java.sql.SQLException

receiveMessage Generic message receiving method from the server

Throws:
  `java.sql.SQLException`

#### dispatchMsg

    public boolean dispatchMsg(int msg)
                        throws java.lang.Exception

Throws:
  `java.lang.Exception`

#### flip

    protected void flip()
                 throws java.sql.SQLException

Notify OutputStream that messages should be sent to the server. receiveMessage() will now call readSmallInt() to get server's reply.

Throws:
  `java.sql.SQLException`

#### sendSQBatchStart

    public void sendSQBatchStart()
                          throws java.io.IOException

Sends SQBATCHSTART message to output stream for ANSI DB when execute batch is in progress writes relevant messages to trace file. Note that traceLevels have been hardcoded to 1 and 2.

Throws:
  `java.io.IOException`

#### sendSQBatchEnd

    public void sendSQBatchEnd()
                        throws java.io.IOException

Sends SQBATCHEND message to output stream for ANSI DB when execute batch is done writes relevant messages to trace file. Note that traceLevels have been hardcoded to 1 and 2.

Throws:
  `java.io.IOException`

#### getBigSerialInserted

    public long getBigSerialInserted()

Retrieve the last bigserial value inserted returned by SQ_INSERTDONE

Specified by:
  `getBigSerialInserted` in interface `IfxProtocol`

#### getSerial8Inserted

    public long getSerial8Inserted()

Retrieve the last serial8 value inserted returned by SQ_INSERTDONE

Specified by:
  `getSerial8Inserted` in interface `IfxProtocol`

#### getEstimateNumberofRow

    public int getEstimateNumberofRow()

Estimated number of rows sent in IfxMessageTypes.SQ_COST message.

Specified by:
  `getEstimateNumberofRow` in interface `IfxProtocol`
Returns:
  estimated number of rows returned

#### getSerialInsert

    public int getSerialInsert()

Serial value after an insert sent in IfxMessageTypes.SQ_DONE message.

Specified by:
  `getSerialInsert` in interface `IfxProtocol`

#### getNumberOfRowsProcessed

    public int getNumberOfRowsProcessed()

Number of rows processed sent in SQ_DONE message.

Specified by:
  `getNumberOfRowsProcessed` in interface `IfxProtocol`
Returns:
  number of rows processed

#### addException

    public void addException(java.sql.SQLException e)

#### getExceptions

    public java.sql.SQLException getExceptions()

#### chainWarnings

    public void chainWarnings(java.sql.SQLWarning cwarn)

Chain SQLWarning

Specified by:
  `chainWarnings` in interface `IfxProtocol`
Parameters:
  `cwarn` - the SQLWarning instance to be chained.

#### clearExceptions

    public void clearExceptions()

Clear SQLException chain.

Specified by:
  `clearExceptions` in interface `IfxProtocol`

#### clearWarnings

    public void clearWarnings()

Clear SQLWarning chain.

Specified by:
  `clearWarnings` in interface `IfxProtocol`

#### getWarnings

    public java.sql.SQLWarning getWarnings()

Get SQLWarnings chain.

Specified by:
  `getWarnings` in interface `IfxProtocol`
Returns:
  the SQLWarning chain.

#### getSQLCode

    public int getSQLCode()

Retrieve the error code from SQ_ERR

#### executeEnv

    public void executeEnv(java.util.Properties EnvVars)
                    throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Send the secondary environment variable list to the server.

Specified by:
  `executeEnv` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeVersion

    public void executeVersion()
                        throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Get the version number from the server.

Specified by:
  `executeVersion` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### getServerVersion

    public java.lang.String getServerVersion()

Description copied from interface: `IfxProtocol`
Return the server version number retrieved by executeVersion().

Specified by:
  `getServerVersion` in interface `IfxProtocol`
Returns:
  server version number

#### isResultSet

    public boolean isResultSet()
                        throws java.sql.SQLException

isResultSet() returns true if the current statement can return resultset. It will return true even if the resultset is empty.

Specified by:
  `isResultSet` in interface `IfxProtocol`
Returns:
  true if the current statement returned a ResultSet. false otherwise.
Throws:
  `java.sql.SQLException`

#### getTupleCount

    public int getTupleCount()

Return the number of tuples in the tuple vector.

Specified by:
  `getTupleCount` in interface `IfxProtocol`

#### getaRow

    public boolean getaRow(int direction,
                           int count,
                           int scrolltype,
                           int isscrollcurs,
                           java.sql.Statement stmt)
                    throws java.sql.SQLException

get the requested row. if the requested row is not in the tuple buffer then fetch it from the server support for scrollable cursors.

Specified by:
  `getaRow` in interface `IfxProtocol`
Parameters:
  `direction` - Valid values are FETCH_FORWARD/FETCH_REVERSE.
  `count` - number of rows to move forward/backward. or desired row (DIR_ABSL) note: if FETCH_REVERSE then count==1.
  `scrolltype` - either absolute, relative, next, ... etc.
  `isscrollcurs` - - is it a scroll cursor ?
  `stmt` - - used eventually to see if the user is changing the return type of the data. See executeScrollFetch().
Returns:
  true if a valid row is found, false otherwise.
Throws:
  `java.sql.SQLException`

#### getTupleSize

    public int getTupleSize()
                     throws java.sql.SQLException

Get the actual tuple size sent by the server.

Specified by:
  `getTupleSize` in interface `IfxProtocol`
Returns:
  the tuple size
Throws:
  `java.sql.SQLException`
See Also:
  `getTuple`

#### getColumnInRow

    public IfxObject getColumnInRow(int colIndex)
                             throws java.sql.SQLException

Get the value of a column in the current row in IfxObject. Data in the column is automatically loaded into the IfxObject returned.

Specified by:
  `getColumnInRow` in interface `IfxProtocol`
Parameters:
  `colIndex` - index of column in the row, 1 being the first column.
Returns:
  column value in IfxObject
Throws:
  `java.sql.SQLException`

#### loadColumnData

    public void loadColumnData(int colIndex,
                               IfxObject val)
                        throws java.sql.SQLException

Load data value of a column in the current row into the given IfxObject.

Specified by:
  `loadColumnData` in interface `IfxProtocol`
Parameters:
  `colIndex` - index of column in the row, 1 being the first column.
  `IfxObject` - to load data into.
Throws:
  `java.sql.SQLException`

#### executeFetchBlob

    public void executeFetchBlob(IfxObject blobDesc)
                          throws java.sql.SQLException

This function will be called from IfxBlob.toAscii() and IfxBlob.toBinary() function in IfxBlob.java file

Specified by:
  `executeFetchBlob` in interface `IfxProtocol`
Parameters:
  `blobDesc` - IfxObject that converts data from/to informix/java values
Throws:
  `java.sql.SQLException`

#### executeScrollFetch

    public void executeScrollFetch(int scrolltype,
                                   int index,
                                   java.sql.Statement stmt,
                                   int fetchBufferSize)
                            throws java.sql.SQLException

executeScrollFetch() calls sendScrollFetch() to seen the Scroll cursor SQ_SFETCH message to the server. Then calls receivemessage() to get the result back.

Parameters:
  `scrolltype` - Type of scroll behavior (absolute, relative etc).
  `index` - Index into row.
  `fetchBufferSize` - , 0 or user requested size
Throws:
  `java.sql.SQLException` - if database access error occurs.

#### getTupid

    public int getTupid()
                 throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
getTupid() returns the Tuple ID for scroll cursors.

Specified by:
  `getTupid` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### toClobStream

    public java.io.InputStream toClobStream(IfxSmBlob obj)
                                     throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### executeFastPath

    public java.util.Vector<IfxObject> executeFastPath(java.lang.String signature,
                                                       java.util.Vector<IfxObject> inParams,
                                                       boolean request_fparam)
                                                throws java.sql.SQLException

executeFastPath is the public method which provides access to the fastpath facility.

Specified by:
  `executeFastPath` in interface `IfxProtocol`
Parameters:
  `String` - signature - a string representing the signature of the server method to be called
  `Vector` - inParams - a vector of IfxXXX objects, each containing a value to be sent to the server
Returns:
  Vector - a vector of IfxXXX objects, each containing a value returned by the server.
Throws:
  `java.sql.SQLException`

#### executeFastPath

    public void executeFastPath(java.lang.String signature,
                                java.util.Vector<IfxObject> inParams,
                                boolean hasOutParameter,
                                boolean request_fparam)
                         throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Executing a UDR on the server. Call getFPReturnVector() to get the return value(s).

Specified by:
  `executeFastPath` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeFastPath

    public void executeFastPath(java.lang.String signature,
                                java.sql.ResultSetMetaData pmd,
                                java.util.Vector<IfxObject> inParams,
                                boolean hasOutParameter,
                                boolean request_fparam)
                         throws java.sql.SQLException

executeFastPath is the public method which provides access to the fastpath facility.

Parameters:
  `String` - signature - a string representing the signature of the server method to be called
  `ResultSetMetaData` - pmd - metadata for parameters
  `Vector` - inParams - a vector of IfxXXX objects, each containing a value to be sent to the server
  `boolean` - outParam - is there an OUT parameter in this routine?
Throws:
  `java.sql.SQLException`

#### getFPReturnVector

    public java.util.Vector<IfxObject> getFPReturnVector()

Description copied from interface: `IfxProtocol`
Return the return values from a fast path call.

Specified by:
  `getFPReturnVector` in interface `IfxProtocol`

#### getFParam

    public com.informix.jdbc.IfxFParam getFParam()

Description copied from interface: `IfxProtocol`
Return the fparam data from a fast path call.

Specified by:
  `getFParam` in interface `IfxProtocol`

#### executeReadSmBlob

    public int executeReadSmBlob(int lofd,
                                 byte[] buffer,
                                 int nbytes)
                          throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Read the Smart blob contents.

Specified by:
  `executeReadSmBlob` in interface `IfxProtocol`
Parameters:
  `lofd` - Smart blob handle as returned by the server.
  `nbytes` - no. of bytes to read.
Throws:
  `java.sql.SQLException`

#### executeReadSmBlob

    public int executeReadSmBlob(int lofd,
                                 byte[] buffer,
                                 int nbytes,
                                 int offset)
                          throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Read the Smart blob contents.

Specified by:
  `executeReadSmBlob` in interface `IfxProtocol`
Parameters:
  `lofd` - Smart blob handle as returned by the server.
  `nbytes` - no. of bytes to read.
  `offset` - start offset of data
Throws:
  `java.sql.SQLException`

#### executeReadSmBlob

    public int executeReadSmBlob(int lofd,
                                 java.io.FileOutputStream fileFd,
                                 int nbytes)
                          throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Read the Smart blob contents

Specified by:
  `executeReadSmBlob` in interface `IfxProtocol`
  `fileFd` - FileOutputStream to read.
  `nbytes` - no. of bytes to read.
Throws:
  `java.sql.SQLException`

#### executeWriteSmBlob

    public int executeWriteSmBlob(int loFd,
                                  byte[] buffer)
                           throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Write into the Smart blob

Specified by:
  `executeWriteSmBlob` in interface `IfxProtocol`
Parameters:
  `loFd` - Smart blob handle as returned by the server.
Throws:
  `java.sql.SQLException`

#### executeWriteSmBlob

    public int executeWriteSmBlob(int loFd,
                                  byte[] buffer,
                                  int offset,
                                  int length)
                           throws java.sql.SQLException

Specified by:
  `executeWriteSmBlob` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeWriteSmBlob

    public int executeWriteSmBlob(int loFd,
                                  java.io.InputStream fin,
                                  int length)
                           throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Write into the Smart blob

Specified by:
  `executeWriteSmBlob` in interface `IfxProtocol`
Parameters:
  `loFd` - Smart blob handle as returned by the server.
  `fin` - InputStream to write.
  `length` - no. of bytes to read.
Throws:
  `java.sql.SQLException`

#### executeProtocols

    public void executeProtocols(byte[] protocols)
                          throws java.sql.SQLException

Specified by:
  `executeProtocols` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### getProtocols

    public byte[] getProtocols()

Specified by:
  `getProtocols` in interface `IfxProtocol`

#### incRefCount

    public int incRefCount(byte[] locator)
                    throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Increments refcount of a large object

Specified by:
  `incRefCount` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### decRefCount

    public int decRefCount(byte[] locator)
                    throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Decrements refcount of a large object

Specified by:
  `decRefCount` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### setIsReleased

    protected void setIsReleased(boolean val)

#### executeDescribeInput

    public IfxResultSetMetaData executeDescribeInput()
                                              throws java.sql.SQLException

Description copied from interface: `IfxProtocol`
Execute DESCRIBE INPUT command

Specified by:
  `executeDescribeInput` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### handlePrivateServerExchange

    public boolean handlePrivateServerExchange()
                                        throws java.sql.SQLException

Specified by:
  `handlePrivateServerExchange` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### handlePAMAuthentication

    public void handlePAMAuthentication(java.lang.String PAMClientClassName)
                                 throws java.sql.SQLException

Specified by:
  `handlePAMAuthentication` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### executeFPDescribe

    public IfxResultSetMetaData executeFPDescribe(java.lang.String signature,
                                                  boolean isProc,
                                                  java.lang.String procName,
                                                  int numargs)
                                           throws java.sql.SQLException

Specified by:
  `executeFPDescribe` in interface `IfxProtocol`
Throws:
  `java.sql.SQLException`

#### getNextSGKRow

    public boolean getNextSGKRow()
                          throws java.sql.SQLException

SGK resultSets are forward only and read only all the tuples are sent immediately after execution (by the server)

Returns:
  true if a valid row is found, false otherwise.
Throws:
  `java.sql.SQLException`

#### getNumberOfFetches

    public int getNumberOfFetches()

get number of fetches (SQ_NFETCH or SQ_FETCH for this (ResultSet) method is public for testing, it is not intended to be documented

#### getNumberOfTuplesReceived

    protected int getNumberOfTuplesReceived()

#### getPutErrRowCount

    public int getPutErrRowCount()

#### clearPutErrRowCount

    public void clearPutErrRowCount()

clears the number of rows inserted in SQ_PUT batch