HP NonStop SQL/MP Programming Manual page 171

For c
Table of Contents

Advertisement

Program Invalidation and Automatic SQL
Recompilation
Changed DEFINEs
If the values of the DEFINEs used in the program at SQL load time differ from the
values of the DEFINEs used for explicit SQL compilation, the SQL executor forces the
automatic recompilation of the program or statement using the new DEFINE values.
(For a dynamic SQL statement, the SQL compiler uses the current set of DEFINEs
when the PREPARE or EXECUTE IMMEDIATE statement runs.)
Failed Timestamp Check
The SQL executor performs the timestamp check for each SQL object referenced in an
SQL statement at table open time (the first time the table is opened). The timestamp
check ensures that a statement's current execution plan uses a valid definition of each
SQL object (table or view, or a dependent object such as an index or collation), even if
the program file was not accessible when the invalidating operation was performed on
the SQL object. (For operations that invalidate an SQL program, see
Referenced SQL Objects
Each SQL object contains a redefinition timestamp in its file label. An SQL program file
also contains the redefinition timestamps of all referenced SQL objects in each SQL
statement's execution plan. When the SQL executor runs a statement, it compares the
timestamp in the object's file label to the timestamp for the same object in the
statement's execution plan. If the timestamps differ, the SQL executor forces a
recompilation with the new definition of the object.
After opening a table, the SQL executor usually leaves a table open until the program
stops running. However, a subsequent DDL or utility operation performed on the table
(or a dependent object such as an index or collation) causes the table to be closed and
its redefinition timestamp to be updated. If the SQL statement that refers to the table
runs again, the SQL executor reopens the table and then performs the timestamp
check to force a recompilation.
These steps describe the run-time timestamp check as shown in
page 8-8.
1. A valid SQL program named PROG refers to an SQL table named TAB in a
SELECT statement. During explicit SQL compilation, NonStop SQL/MP generates
an execution plan, which includes the TAB redefinition timestamp, for the SELECT
statement and stores the plan in the PROG program file.
2. After PROG is running, a database administrator adds a new column to TAB using
the ALTER TABLE statement. This operation updates the redefinition timestamp in
the TAB file label.
3. When the SELECT statement runs, the SQL executor opens TAB and compares
the timestamp in TAB file label with the TAB timestamp in the PROG execution
plan. The TAB file label timestamp is more recent than the PROG execution plan
timestamp. Therefore, the execution plan for the SELECT statement that was
generated from the old definition of TAB during explicit SQL compilation is no
longer valid.
HP NonStop SQL/MP Programming Manual for C—429847-008
on page 8-2.)
8-7
Causes of Automatic Recompilation
Changes to
Figure 8-1
on

Advertisement

Table of Contents
loading

Table of Contents