SUBJECT: APAR NUMBER: PQ48551
REFERENCE: AREA: TPFDF CENTRAL DATABASE ROUTINES
SEGMENT: C$IBTREE13 - RELEASE: TPFDF (C-Header)
SEGMENT: IFL0DF13 - RELEASE: TPFDF (Dsect)
SEGMENT: SW00SR13 - RELEASE: TPFDF (Macro)
SEGMENT: UFTB13 - RELEASE: TPFDF (C)
SEGMENT: UFTH13 - RELEASE: TPFDF (C)
SEGMENT: UFT613 - RELEASE: TPFDF (C)
SEGMENT: UWAA13 - RELEASE: TPFDF (Assembler)
SEGMENT: UWAG13 - RELEASE: TPFDF (Assembler)
SEGMENT: UWAP13 - RELEASE: TPFDF (Assembler)
SEGMENT: UWBC13 - RELEASE: TPFDF (Assembler)
SEGMENT: UWB413 - RELEASE: TPFDF (Assembler)
SEGMENT: UWB713 - RELEASE: TPFDF (Assembler)
SEGMENT: UWB913 - RELEASE: TPFDF (Assembler)
Pre-requisite APARs are (TPF only) :
FOR SEGMENT C$IBTREE13 (C-Header) - REL TPFDF
PN73989 PN76765 PN76852 PN84101 PQ32210
FOR SEGMENT IFL0DF13 (Dsect) - REL TPFDF
PQ32210 PQ46459
FOR SEGMENT SW00SR13 (Macro) - REL TPFDF
AN31299 PN05393 PN37569 PN38613 PN43714 PN46560 PN57526
PN61834 PN64313 PN71161 PN71348 PN73989 PN77016 PN76852
PN80488 PN83423 PN84757 PN87917 PN92097 PQ00790 PQ02145
PQ04911 PQ05189 PQ07995 PQ10797
PQ10084 PQ15475 PQ16897
PQ21506 PQ24625 PQ23091 PQ25824
PQ25825 PQ32209 PQ36911
PQ37963 PQ32210 PQ50275
FOR SEGMENT UFTB13 (C) - REL TPFDF
PN73989 PN80446
FOR SEGMENT UFTH13 (C) - REL TPFDF
PN73989 PN76765 PN76852 PN80446 PQ02782 PQ05367 PQ07440
PQ27182
FOR SEGMENT UFT613 (C) - REL TPFDF
PN73989 PN80446 PQ18933
FOR SEGMENT UWAA13 (Assembler) - REL TPFDF
PQ32210 PQ47099
FOR SEGMENT UWAG13 (Assembler) - REL TPFDF
PQ32210 PQ46459 PQ50275
FOR SEGMENT UWAP13 (Assembler) - REL TPFDF
PQ32210
FOR SEGMENT UWBC13 (Assembler) - REL TPFDF
PQ32210 PQ48582
FOR SEGMENT UWB413 (Assembler) - REL TPFDF
PQ32210
FOR SEGMENT UWB713 (Assembler) - REL TPFDF
PQ32210 PQ42198
FOR SEGMENT UWB913 (Assembler) - REL TPFDF
PQ32210 PQ46459
To be applied in the order listed for each segment.
ABSTRACT OF PROBLEM
___________________
B+Tree problems including the B+Tree not being used when the
prime data block becomes empty, a DB0100 system error being
issued instead of a DBB100, and primary key up organized causes
an invalid backward chain address.
COMMENTS ON PROBLEM
___________________
1 - B+Tree processing maintains the reference of the root node
in the prime data block. If the prime block becomes empty
(except in the case of DBDEL ALL), LRECs are never added to the
prime data block again. The B+Tree index is not used when the
prime block is empty. As a result, the B+Tree index is not used
on subsequent accesses of the subfile.
2 - Currently, when B+Tree processing returns an invalid file
address, TPFDF issues a DB0100 system error. Instead, a DBB100
system error should occur since it is a B+Tree processing error.
3 - A situation might arise where a B+Tree file is created that
uses full backward chaining and LRECs are added in reverse order
so that each new LREC added precedes all existing LRECs, as
determined by the primary key. In such a situation, when a new
data block is required, the data block before the last data
block in the chain always has an incorrect backward chain
address. Instead of containing the address of the previous
block on the chain, it contains the address of the prime block.
The block contains an incorrect backward chain address because
the block containing the correct backward chain address was
never filed to DASD.
SOLUTION
________
1 - Segments C$IBTREE, SW00SR, UFTH, UFT6, UWAA, UWAG, and UWAP
have been updated so that B+Tree indexing will be used to locate
LRECs when the prime block is empty but a node block exists. If
the prime block is empty, a node block exists, and the node is
empty, B+Tree processing in segment UFTB returns a -1 file
address to the central database routines. It will then follow
the same code path as if B+Tree processing did not find the
target data block, meaning that a sequential search will be per-
formed in an attempt to locate the LREC. Also, the node is
deleted when the B+TREE file is empty.
2 - Segments UWB9 and IFL0DF have been updated so that if an
error is returned during the B+Tree search for a data block,
system error DBB100 is issued instead of system error DB0100.
3 - In segments UWBC, UWB4 and UWB7 whenever the backward chain
field of a block is updated, the block will be filled with
zeros in the first byte of the program stamp field. This will
force the block update to be written to DASD.
DEPENDENCIES
____________
Related Segments Affected By This APAR.
_______________________________________
Segments to be assembled or compiled:
None.
Segments to be link edited:
On ALCS: TPFDFH3
On TPF : UFTH
Migration Considerations
========================
None
-- END APAR PQ48551
Download file(s) using new Server:
Login once to access server, leave window open, then
click on link(s) below.
|