Databases Reference
In-Depth Information
Creating P861(r9 & r10) is a preparatory move made by the AVF,
to isolate a single deferred assertion that will match the update
transaction. So P861(r8) was the correct one to go. Having
nowhere in past assertion time to go, and obviously not belong-
ing in current assertion time, it went to the only place it could
go—into non-asserted time, i.e. into empty assertion time.
A row in empty assertion time, however, is a row that never
was asserted and never will be asserted. So there is an argument
for simply physically deleting the row rather than moving it
into empty assertion time. For one thing, Asserted Versioning
cannot keep track of when it was moved into empty assertion
time. The only physical date on an asserted version table is
the row creation date, and the movement of a row into empty
assertion time is a physical update,
for which there is no
corresponding date.
For another thing, since a row in empty assertion time never
was asserted, and never will be asserted, what information does
it contain that would justify retaining it in the database? Well, in
fact, a row in empty assertion time is informative. The informa-
tion it contains is information about an intention. At one point
in time, we apparently intended that the business data on that
row would one day be asserted. Perhaps we intended to deceive
someone with that business data. In that case, that row is a
record of an intent to deceive. By retaining the row, we retain a
record of that intent.
Non-deferred transactions are always against currently
asserted versions which have a 12/31/9999 assertion end date.
They withdraw those target versions by ending their assertions
on the same clock tick that their replacement and/or super-
ceding versions begin to be asserted. The result is to withdraw
those target versions into past assertion time, but leave no asser-
tion time gap between them and the results of the transaction.
Deferred transactions against those same currently asserted
versions do the same thing. They withdraw them by ending
their assertions on the same clock tick that their replacement
and/or superceding versions will begin to be asserted. But being
deferred, those replacement and/or superceding versions begin
on some future date. Using that future date as the assertion end
date of the target versions, those target versions are withdrawn,
but into current assertion time. This current assertion time, how-
ever, has a definite, non-12/31/9999, end date, and so we say that
their assertion periods are current but closed . If nothing happens
in the meantime, then when that date comes to pass, the current
closed assertions will fall into past assertion time, and the
deferred assertions which replaced and/or superceded them will
Search WWH ::




Custom Search