1.0

Table Of Contents
Cascade DELETE Not Supported
SQLFire does not support cascade delete operations.
Locking Prioritizes DML over DDL
The SQLFire locking behavior prioritizes DML execution over DDL statements. DDL statments may receive a
lock timeout exception (SQLState: 40XL1) if your system is processing numerous concurrent DML and DDL
statements. You can congure the maximum amount of time that DDL statements wait for locks using
sqlre.max-lock-wait.
Expiration and Eviction Limitations
EXPIRE ENTRY WITH IDLETIME works only when a primary key based query is red. Otherwise the system
will not modify its accessed time when table scans or index scans happen and it gets destroyed.
EXPIRATION or EVICTION with action as DESTROY should not be set on a parent table having child tables
with foreign key reference to it. This is due to a lack of cascade delete support in SQLFire. If an attempt is made
to create a child table having foreign key reference to a table with such a policy then a SQLException is thrown
(SQLState: "X0Y99").
INSERT with subselect
SQLFire has a limited support for INSERT statements that use a subselect statement. Nested selects and selects
having aggregates are not supported; these queries throw a feature not implemented exception (SQLSTATE
0A000).
LOCK TABLE
The LOCK TABLE statement is not supported in this release of SQLFire.
Procedure Invocation (Data-Aware and Non-Data-Aware Procedures)
When you use the ON TABLE extension in a CALL PROCEDURE statement, the WHERE clause is mandatory.
If you need to route a data-aware procedure to all members that host the table (without any pruning), then you
must specify some extraneous condition that always evaluates to true (such as WHERE 1=1).
A server can only handle Java procedure denitions that exactly match the JDBC parameter types in a CREATE
PROCEDURE statement. If a procedure species parameter types that use the base class of a corresponding
java type (for example, if a procedure uses java.util.Date instead of java.sql.Date) then the invocation from the
client side fails.
RENAME
SQLFire does not support the RENAME statement as specied by the SQL-92 standard. A SQLException with
state 0A000 is thrown, although the statement is not treated as a syntactical error.
SELECT FOR UPDATE from Thin Clients
The SELECT FOR UPDATE statement does not lock any rows the statment is not part of a transaction. If
you use this statement outside of a transactional context (isolation level Connection.TRANSACTION_NONE)
then a SQLWarning is raised and logged. This occurs because in a non-transactional context, appropriate row
locks are not obtained during the select phase, and the update phase might see a modied row.
SELECT FOR UPDATE does not provide updatable result sets for thin client connections. Any attempt to
use the result set to update rows results in an exception or undened behavior. However the SELECT will obtain
vFabric SQLFire User's Guide654
vFabric SQLFire Reference