38 lines
932 B
Plaintext
38 lines
932 B
Plaintext
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.
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|