- Handling of bound variables in ARXD0100 format (Execute bound statement that returns data format).
As shown here in IBM documentation:
“SELECT INTO statement produces a result table that contains at most one row. The statement assigns the values in that row to variables.”
SELECT * INTO :B,:C FROM LIB.FILE WHERE A= :E
We have here three bound variables. Returned data is written to :B and :C variables.
- Avoid Kerberos lookup for the AS400 object that is created for run mode #1.
- Select statements with Three Part Name – added support for nested SELECT and WITH statements.
with tmp as (select A from B.C.D where E = 2) select * from tmp
- Removed code that deals with LONGVARBINARY type.
- Better support for VARBINARY types
- For Oracle only: in ARXD0100 and ARXB0100 formats, keep original bound variables syntax in SQL statements.
- We now accurately identify cases in which input bound variables have indicator variables attached. DB-Gate does not support support these indicator variables, since they are pointers.
SELECT * INTO :A ,:B FROM L1.A2 where A=:C:CNULL
Here, :CNULL is an input indicator variable that is not available to DB-Gate.
- We now ship an MSSQL driver to use with Java8.
- A new feature: a user and a password to be injected into the JDBC URL:
This feature can be used by JDBC drivers allowing for user/password in the URL. For example, when dealing with Oracle DB add the user/password to be injected as below:
Upon connection, they are replaced with the content of new fields:
The password is encrypted and is required if you specify a user.
It is up to the JDBC driver to use or ignore the injected password. If a user/password are specified in the CONNECT statement like:
CONNECT TO SOME-RDB USER SOME-USER USING SOME-PASSWORD
Or are extracted from server authentication entries (STRDB > #21)
Or are specified in the “Force RDB User” field as below:
The driver will make the decision whether to ignore or to respect the URL’s user/password..
- DB-Gate will now report failures to submit Commitment Control commands. This is implemented for run mode #2 and #3.
- RDB Definition: A new way to specify RDB User+Password in Part B of the RDB definition. This would bypass credentials entered in the CONNECT statement or via Server Authentication Entry. If User is entered, password is mandatory.
- If User+Password are specified also in the JDBC URL it is up to the driver to decide which one gets the priority. In DB2 for example the URL will be checked and the new fields will be ignored.
If only operator has access to RDB definition he can use this way to enforce RDB user to remote. SQL jobs have no way to bypass it.
- RDB LOG level is checked now on each CONNECT statement and if found to be ‘3’ or ‘5’ the DUMP feature will be activated.
- A new command that allows for programmatically activate/deactivate an RDB entry created with DB-Gate.
The SMZB/SETDBGDE command requires two parameters – an RDB entry name registered with DB-Gate and either *YES to activate or *NO to deactivate this entry.
- STRDB > we check now that user profile SECURITYBP is enabled with a non expired password. A proper message is displayed if these conditions don’t meet.
- Verify RDB (VFYRDB) command: bug fix – Password value is passed now as mixed case characters and so finally this command works as expected.
- PC driver: a bug fix regarding the use of the ‘@’ character when user/password are specified. We had a NumberFormatException as the Java program tried to parse an int from the string right to the @. Now we ignore this error.
- Logging: Each RDB entry can be set now with log level of #3 or #5 Setting either of these levels results in extended logging to the IFS log. This takes effect on the next ARCN0100 format of that RDB. For the dump file DBILOGP there is a difference. When the exit program DBGATER is started for the first time it examines just once the first RDB that comes into interaction with it. This will set the logging level for that session for until it exits with SETON LR. If we wish to dump just a specific RDB we should set it’s log level to #3 or #5 and start a new job. In that job the first thing to do is to connect to that RDB. Only the first RDB that comes into interaction with the exit program will determine the dump behavior. Any other RDB involved in this session will also be dumped as this is examined only once. In general, the guideline for dumping an RDB activity is to run a dedicated job and CONNECT that RDB only. Even better is to clone the RDB to a new name and set a specific log level. Then, CONNECT that RDB only, in a new job.
- New JVM Settings screen extends option #81
JVM path example:
/QOpenSys/QIBM/ProdData/JavaVM/jdk60/64bitJVM properties example:
- Java side Changelog
- Creating local table based on a remote select
- Added support for that which is another three part name feature.
Note: the local target library has to be journaled! There are two methods to achieve that:
- Use Start Journal Library (STRJRNLIB)
- Use CREATE SCHEMA SQL statement (must COMMIT in order to persist library)
CREATE TABLE QTEMP.TT AS (SELECT * from ORA.TOTO.DEMO_STATES) WITH DATAThere are two ways to achieve this:
- Have a server authentication entry for your current AS400 user and for the remote DB. Issue the
'CREATE TABLE..AS (SELECT * ..) WITH DATA'without any connection attempt to the remote DB.
- Connect to the remote DB then set connection to the local DB and issue the SELECT statement.
- Added support for the case of VARYING (VARCHAR) parameters in method setParameters(..). The actual length of the parameters is calculated and being used rather than their declared length.
- Extended support for FORMAT_ARXB0100 (Execute bound statement that does not return data format). We have added a utility class that searches through the statement and carefully replaces : H with question mark.
- Updated Oracle and DB2 drivers.
- Federated feature is commented as well as cleared from the product CLASSPATH.
- ParseUtils: code will remove null indicators.
- PC driver has been moved to a separate project. There are no compilation references to this driver. It is now an external JDBC driver.
- Added support for statement like the below:
select count(*) into :i from TEST2 where A=rtrim(:x) AND B=RTRIM(:y)This is not a CALL statement and it has more than one parameter. This is the case of ARXD0100 format (Execute bound statement that returns data format).
- Bug Fix: in the method ‘setParameters’ we handle now correctly VARING types of size 1 and 2. Somehow those two sizes fell into a kind of what we thought to be a protection procedure.
- A critical update to ensure there is only one serving job per requester job. This is done using the sessions’ file.
- Build time and version are printed now to IFS server log.
- Native side:
When starting the server in run mode #2 the
- Native side bug fix:
The log file
SMZBDTA/DBXXis made up as member per day. The name given to each new member was incorrect. Correct member name is now
'L' + YYMMDD.
- DB‐Gate server on PC: AboutDialog – open log: “open file” dialog shows only real logs and hides lock files and directories. Log is displayed in an internal real only viewer that has a popup with some basic functions.
- The definition:
os400.stderr=file:/tmp/dbgater_err_sys.txtis removed from the
sp.propertiesfile. It has been found that the line prevents a 64bit JVM from loading.