Setting SQLIDEBUG on the client side - How to?
This document contains steps on how to set up the SQLIDEBUG. The SQLIDEBUG has always been part of the SDK product. It's SQLIPRINT that was removed for some time. SQLIPRINT has been added back into the SDK product, starting with 3.50.xC1. During the time SQLIPRINT was not part of the SDK product, it was still available to Tech Support engineers. As mentioned in the article, customers set SQLIDEBUG and sent Tech Support the debug file for decoding and further diagnostics. Below summarizes the versions of SDK that contain SQLIPRINT.
- SDK 3.00.xx - no SQLIPRINT
- SDK 3.50.xx - yes SQLIPRINT
- SDK 3.70.xx - yes SQLIPRINT
SQLIDEBUG is a tracing feature that is used for debugging. SQLIDEBUG supports two kinds of trace output:
- Hexadecimal output
- Binary output
The Structure Query Language Interface (SQLI) is the internal interface between an application and the INFORMIX Online Dynamic Server. The application sends a request to the database server and gets a message that indicates the success of the request. The application (in other words, the client) and the database server use a message-based protocol for communication. This protocol is usually not visible to the user. The users' - or developers' - sight is the SQL statements that are included in the application.
The SQLI functions communicate with the database server through the ASF layer. This software component is part of the connectivity product and transmits the data over the specified protocol (shared memory, sockets, TLI, IPX). The communication protocol is defined by INFORMIXSERVER and by the sqlhost’s file. The SQLI interface is the same for all connectivity products on all platforms. The SQLI protocol contains different messages, some with a variable format (message length). One or more messages are sent as a packet. Every packet is terminated by a message of type SQ_EOT.
The ESQL products support multi-threaded applications and the SQLI interface is thread-safe. The SQLIDEBUG feature is thread-safe as well.
To set SQLIDEBUG, you can do either of the actions below:
- Trace the application
- Trace the server
It is more common to trace the application, because you want to watch what messages are sent and received.
The hexadecimal output from SQLIDEBUG is not easy to read; instead, you should generate the binary output and convert to readable form with the SQLIPRINT tool. The SQLIPRINT is a tool used by Informix diagnostics. Users will have to send the SQLDEBUG output to tech support who will use sqliprint for the conversion.
To trace your application, set the environment variable before you start your application:
Use the same technique for the server. In other words, set the environment variable SQLIDEBUG before shared memory initialization.