How can I know when LASTMOVE in IIB will return true or false?

855 Views Asked by At
-- Shared row variable for caching config data. Declared at Global scope.
DECLARE S_ConfigSharedRow SHARED ROW;

CREATE COMPUTE MODULE TheFirstComputeNode
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
    CFGDATA_CACHE_LOCK: BEGIN ATOMIC
        -- If the configuration data is not available in the cache then load it from the CONFIG table
        DECLARE CfgDataRef REFERENCE TO S_ConfigSharedRow.CfgDataCache;
        IF NOT LASTMOVE(CfgDataRef) THEN
            -- Select all the relevant content from the actual database in one go.
            DECLARE DBResults ROW;
            DECLARE RetryCount INTEGER 5;
            SET DBResults.Row[] = PASSTHRU('SELECT * FROM CONFIG');

            -- Typically you would post process the content from the DB into a more amenable 
            -- structure but the following will get the data into the shared variable
            CREATE LASTCHILD OF S_ConfigSharedRow.CfgDataCache FROM DBResults;
        END IF;
    END CFGDATA_CACHE_LOCK;

    -- Config data is now available for use

    RETURN TRUE;
END;
END MODULE;

Hi guys, can I ask which is the scenario that LASTMOVE in this case return true, and which case is false. Thanks all.

1

There are 1 best solutions below

4
Daniel Steinmann On BEST ANSWER

My experience with LASTMOVE is that it can return NULL, so better only check for TRUE:

    DECLARE CfgDataRef REFERENCE TO S_ConfigSharedRow.CfgDataCache;
    IF LASTMOVE(CfgDataRef) THEN
        -- Nothing to do
    ELSE
        -- Select all the relevant content ...
    END IF;