CONNX JDBC Service or Adabas SQL Gateway

When I do a select last_name from employees where dept = ‘123’, I expect 2000 rows to return.

Given that dept is a descriptor in Adabas, I trust I will see an S1 followed by a whole bunch of L1.

The questions are:

  1. Is the S1 issued to Adabas by the CONNX JDBC Service or the Adabas SQL Gateway component?
  2. After the S1, who issue all the subsequent L1? Are all the L1 issued by the CONNX JDBC service or the Gateway?
  3. When I have where dept = ‘123’ and name is not null in the where caluse, which component is resolving the ‘name is not null’ clause? The ‘name is not null’ does not show up in the Adabas search buffer.

We are revisiting our CONNX architecture design and want to know how far all these commands have to travel through the network.

The only phrase in your WHERE clause is dept = ‘123’, so I do not see in your query any request to limit the result set to also include where the last_name is NULL. You are asking Adabas to give you all records where the dept field is the value ‘123’, and since dept is a descriptor, the most efficient command in Adabas is to provide the ISN list for that query and give you the 1st record in that list (ISN order).

This product is then understanding as you need each next record in the result set to issue the L1 for the next ISN until you exhaust the resultant ISN list.

Someone from SAG will likely need to answer your question on which component does what though I am guessing its the CONNX server which converts the request into the Adabas direct call. Your DNS data connection thinks the CONNX server is the remote db server so it’s just one additional hop than if you were accessing the database directly. I am confused by your concern about the S1, L1, L1… string as an architectural issue. It would be the same with relational db’s and cursors. To me this seems to be an excellent design and validated by the execution path.

The S1 and L1 are issued by the Data Server component. The results are sent in batch back to the JDBC Server, and then to the client application. The “name is not null” is evaluated by the JDBC Server, and used as criteria that qualifies the descriptor for use.

Thanks. It is good to know that the S1 and L1 are processed strictly between Adabas and the Data Server component. For us these 2 pieces sit on the same pltform - z/OS. Our JDBC Server sits on a low-grade, minimal resource Windows 2003 server. The less processing we rely on it and the less we need to count on network traffic the better off we are.

In this case, it is probably better off for us to use clause like dept > ’ ’ which causes the index to show up in the SB, hence work for Adabas, then to use DEPT is not null - work for JDBC Server.

I appreciate all of your comment.