Using an empty driver table in a SELECT
/FOR ALL ENTRIES
table has a very important side effect: the complete
WHERE
clause is not taken into account because a NO WHERE
condition is generated. Thus a full table scan is unexpectedly
executed.
Noncompliant code example
SELECT carrid , connid , seatsocc FROM flights
INTO TABLE seatsocc_tab
FOR ALL ENTRIES IN conn_tab " Noncompliant; conn_tab may be empty.
WHERE carrid = conn_tab-carrid
AND connid = conn_tab-connid.
Compliant solution
IF conn_tab is not initial.
" ...
SELECT carrid , connid , seatsocc FROM flights
INTO TABLE seatsocc_tab
FOR ALL ENTRIES IN conn_tab
WHERE carrid = conn_tab-carrid
AND connid = conn_tab-connid.
" ...
ENDIF.