diff --git a/src/main/sql-pl/04-Body.sql b/src/main/sql-pl/04-Body.sql index 32fda2e..8cfbca6 100644 --- a/src/main/sql-pl/04-Body.sql +++ b/src/main/sql-pl/04-Body.sql @@ -820,6 +820,7 @@ ALTER MODULE DB2UNIT publish DECLARE IGNORED DOUBLE; DECLARE RET ANCHOR EXECUTIONS.EXECUTION_ID; DECLARE RETRY BOOLEAN DEFAULT TRUE; + DECLARE APP_ID BIGINT; DECLARE LOGGER_ID SMALLINT; @@ -828,12 +829,13 @@ ALTER MODULE DB2UNIT publish IF (SEED IS NULL) THEN SET TIME = CURRENT_TIMESTAMP; - SET SEED = (BIGINT(MINUTE(TIME)) * 60 + SECOND(TIME)) * 1000000 - + MICROSECOND(time); - -- Next line does not work in DB2 9.7, however this prevents the problem - -- of concurrent simultaneous execution. - --SET SEED = BIGINT(MON_GET_APPLICATION_HANDLE() * 10000000000) + SEED; + SET APP_ID = (SELECT APPLICATION_HANDLE + FROM SYSIBMADM.MON_CONNECTION_SUMMARY + WHERE APPLICATION_ID = APPLICATION_ID()); + SET SEED = (BIGINT((APP_ID * 10000000000 + MINUTE(TIME)) * 60 + + SECOND(TIME) * 1000000 + MICROSECOND(time))); SET IGNORED = RAND(INTEGER(MOD(SEED, 2147483648))); + CALL LOGGER.DEBUG(LOGGER_ID, 'seed' || SEED); END IF; WHILE (RETRY = TRUE) DO