Debug UDF Script Output

For any UDF script and virtual schema adapter script (except LUA scripts), you can debug the output of the script by redirecting the standard output and standard error file descriptor to any socket on another machine.

Prerequisite

  • Python 2.x or 3.x installed
  • PyEXASOL installed if you are using Python 3.x

Procedure

For Python 2.x

If you are using Python 2.x, follow these steps to view the debug output:

  1. Download the UDF Debug Python script and run this script in the command line interface on the machine where you want to view the output.
  2. On running this script you will see an output like the example below:
  3. By running this script, a service is started on the machine where you want to view the debug output. This service listens to the specified port and displays the debug output.

  4. Next, you need to activate the redirection by executing the session/system parameter SCRIPT_OUTPUT_ADDRESS. In the SQL client of your choice, execute the following statement:
  5. ALTER SESSION SET SCRIPT_OUTPUT_ADDRESS='<host>:<port>';

    Replace <host> and <port> with the IP address and port number of the server. For example, 10.242.2.21:3000.

    The default port specified is 3000.

  6. On successful redirection, the debug output is displayed on the SQL client. The following screenshot is an example output.
  7. In the above example output, '10.242.2.21' is the IP address of the server that sends the output and '52698' is the VM id.

  8. You can disable the output redirection by executing the parameter SCRIPT_OUTPUT_ADDRESS with null value as shown below:
  9. ALTER SESSION SET SCRIPT_OUTPUT_ADDRESS='';

When you call a UDF script, make sure the port specified is accessible. If it is not accessible, the output address cannot be opened, and an error is displayed.

For Python 3.x

If you are using Python 3.x, you must first install PyEXASOL on your machine. You can install PyEXASOL by following the instructions provided in the PyEXASOL GitHub repository.

Next, you can activate the redirection by following the instructions provided in the UDF script output GitHub document.