Local Access Wrap Up

by Shaunak Mistry 16th Dec 1998

Project Status:

This project has been shelved for InterBase V6.0, and may be revived later for future InterBase versions.

Local Access as XNET is implemented on Windows NT, the current code with build modifications can be used to run this on NT. Porting to Solaris has not been completed.

Also the code currently checked in, when run on NT gives us a 10% performance improvement over IB 5.5 IPSERVER code. I ran this test using Quantify doing a "gbak restore" of a large database file.

Detailed Code Status

The code modifications for local access are in REMOTE and JRD components.

The modifications for JRD are completed and can be turned on by building with the -DXNET switch. I do not foresee any more code changes in JRD for Solaris.

Most of the modifications for this project have been in the REMOTE component. Although all the modifications are in place for NT, the modifications for SOLARIS are not complete. However I have added comments with the word STUB in "xnet.c" where most of the changes need to be made, the comments also specify what need to be done at the place. Other file where I changes will have to be made are "xnet.h" - all the new definitions for Solaris like ISC_EVENTS etc., "protocol.c" and "protocol.h" for adding op_local_connect, "server.c" for adding XNET_init call.

A few changes will have to be made on both NT and Solaris to include -DXNET in the makefiles for JRD, SUPERSERVER and SUPERCLIENT libraries. Also on NT we need to remove IPSERVER component from the "build_lib.bat". There was a version of "build_lib.bat" on NT which only excepted 2 command line arguments, make sure you have the new on or else the -DXNET argument will be ignored by this version of "build_lib.bat"

Another recommendation is to probably use a different mechanism than TCP/IP for connection, as using a new op_code will cause errors on the server in the log file old server, check out process_packet() in "server.c" for the exact error message. If we use a new mechanism the client will get an error right at the beginning, as it will be rejected before it can reach the server. As an option one could use a message queue on unix. The shared memory segments can be used if we can solve client and server death during this phase.