HP3000-L Archives

July 2000, Week 1

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Jerry Fochtman <[log in to unmask]>
Reply To:
Jerry Fochtman <[log in to unmask]>
Date:
Wed, 5 Jul 2000 09:51:39 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (50 lines)
At 02:38 PM 7/5/2000 +0100, Johnson, Tracy wrote:
>So, what is the difference between a broken BACKWARD chain
>and a broken FORWARD chain?


IMAGE detail chains are double-linked lists, in that there is both a
forward and backward pointer for each entry.  When you read the list
forward (DBGET(5)), the forward chain pointer is used, and when you
read the list backwards (DBGET(6)), the backward chain is used.  As a
part of the chained entry retrieval, IMAGE not only checks the validity
of the pointer, but also checks the search field value to ensure the
entry is a part of the current chain.  A chain pointer problem can occur
because 1) the pointer itself is bad (block number or entry number out
of range); or 2) the search field value on the entry pointed to does not
match the search key being retrieved by the chained retrieval. One may
also get a backward chain error on a forward read because I believe IMAGE
may check the pointer with the prior read record as well.  However, my
memory is still a bit foggy (smokey?) from a late night of firework displays
and isn't working that well yet today, so this may not be quite correct.

It is also possible to get a broken chain error during a DBPUT, when
adding new entries to a set.  This was an enhancement added to IMAGE
several years ago so applications don't continue to place new data
in a dataset that cannot be retrieved later because an entry on the
existing chain was encountered that had a bad pointer or inconsistent
key value, causing a broken chain error on subsequent retrieval.  If
I remember correctly, it simply checks the last entry on a chain
when doing a DBPUT to an unsorted path, as this is where the new
entry is linked to the chain.  If the path is sorted, all
search field values that are searched in reverse order are checked
until the insertion point is reached.



/jf
                               _\\///_
                              (' o-o ')
___________________________ooOo_( )_OOoo____________________________________

                          Thursday, May 25th

            Today in 1787 - The Constitutional Convention opened in
                            Philadelphia.

___________________________________Oooo_____________________________________
                             oooO  (    )
                            (    )  )  /
                             \  (   (_/
                              \_)

ATOM RSS1 RSS2