The previous steps are performed on all queries, both local and remote.
The following steps depend on the type of SQL statement and the capabilities of the remote servers involved.
Each remote server defined to Sybase IQ has a set of capabilities associated with it. These capabilities are stored in the syscapabilities system table. These capabilities are initialized during the first connection to a remote server. The generic server class odbc relies strictly on information returned from the ODBC driver to determine these capabilities. Other server classes such as those for Sybase products have detailed knowledge of the capabilities of a remote server type and use that knowledge to supplement what is returned from the driver.
Once syscapabilities is initialized for a server, the capability information is retrieved only from the system table. This allows a user to alter the known capabilities of a server.
Since a remote server may not support all of the features of a given SQL statement, Sybase IQ must break the statement into simpler components to the point that the query can be given to the remote server. SQL features not passed off to a remote server must be evaluated by Sybase IQ itself.
For example, a query may contain an ORDER BY statement. If a remote server cannot perform ORDER BY, the statement is sent to the remote server without it and Sybase IQ performs the ORDER BY on the result returned, before returning the result to the user. The result is that the user can employ the full range of Sybase IQ supported SQL without concern for the features of a particular back end.