!File Records
QTIPS - Updating Indexes
Indexing on Xlates
Rebuilding Indexes
How Indexes Are Updated
Index Record Layouts
Index Flush
REVMEDIA Revisited
QTIPS - DOS File Names
DOS Interfacing (Part II)
VERBatim - V116
@ATTACK - @Pri.File
@ATTACK - @Rollout.File
File Variables
How Indexes Are Updated
Index Record Layouts
QTIPS - File Variable of File In SELECT Statement
QTIPS - Amending non-Attached Files
LINEAR HASH FILE STRUCTURES - Part 1
Index Flush
QTIPS - File Handle Structure
RTP Series - RTP9
RTP Series - RTP50
VERBatim - V25
@ATTACK - @Files
Utility Diskette # 3 - Part I
VERBatim - V126
Esc.To.Exit
Uncommon Knowledge - WC_WST_CHAR%
Referential Integrity
Reader's Clinic - Related Windows
Networked %SK%
Network Contention
Directory Exists on Novell
QTIPS - String Space Format Errors
QTIPS - Postscript Driver Problem
SecureUser
VERBatim - V86
Advanced Revelation Initialisation Sequence (Overview) by Mike Pope
Reader's Clinic - Fixing %Windows% Using Depend.Update
QTIPS - Updating Indexes
How Indexes Are Updated
REVMEDIA Revisted
Vroom
RTP Series - RTP32
Utility Diskette # 3 - Part I
DOS Interfacing (Part II)
Reader's Clinic - Preventing Records Being Amended
How Indexes Are Updated
A RevTechie Replies - And Miscellaneous Jottings - Mike Pope - Revelation Technologies (UK) Ltd
Caching in on the Frames Array - Mike Pope
DOS Interfacing (Part II)
QTIPS - FOR/NEXT variables
@ATTACK - @HW
Reader's Clinic - Volume Pointer Record
QTIPS - @Date.Format
@ATTACK - @Date.Format
QTIPS - Short Cut Implicit Formatting
Utility Diskette # 4
Utility Diskette # 4
REVMEDIA Revisted
How Indexes Are Updated
Index Record Layouts
Index Flush
Networked %SK%
File Variables
LINEAR HASH FILE STRUCTURES - Part 1
QTIPS - File Handle Structure
Creating Your Own Background Processes
@ATTACK - @Last.Select.Process
Reader's Forum
QTIPS - Menu Item Pre-Processing
Base Conversions
Reader's Clinic - Page Marks in Windows

RevMedia FKB

DocumentV2I9A5
TitleIndex Record Layouts
Keywords!INDEXING
FILE.DISTRIBUTOR
F.DISTRIBUTOR
INDEX
Text!INDEXING
The !INDEXING file has a simple LAYOUT Each record represents a group of
pending transactions waiting to be applied to indexed files They are stored
in such a way that chronological accuracy is ensured (that is if two
changes are made to the same item the changes will be applied to the index
files in the order they were applied to the data file)

Note though that when a relationally indexed record is written to file a
transaction record is generated in the !INDEXING file regardless of whether
the related record was updated This is simply explained by the fact that on
a network a user might have attempted a change before you and been
unsuccessful Their change would be written to the !INDEXING file to await
processing When the TRANSACTION record was processed their change would be
applied to the related file effectively undoing your more recent change If
your update had not generated a TRANSACTION record this situation would not
be rectified

The only "special" record on the !INDEXING file is record 0 all other
records are homogeneous In record 0 field 1 the record key of the most
recent TRANSACTION record is stored When an index update is attempted
record 0 is read and the transactions are added to it If this forces the
size of record 0 to exceed 1K the latest TRANSACTION record (pointed to in
field 1) is read and the index transactions are added to the record Again
if the size of the record exceeds 1K the record is split and the next
transaction record created (and record 0 updated accordingly) and a pointer
to the next record put into field one of the CURRENT record

The TRANSACTION records have the following structure

< 1 > Pointer to next TRANSACTION record
< 2> File details in format FILE*ACCOUNT*VOLUME_NAME
< 3> Number of transactions following for the file mentioned in
field 2 Note that as each of the following transactions is
four fields long this can be used to calculate offsets if
the file to be updated is not available
< 4 > Name of field to update
< 5 > Item ID being indexed
< 6 > Old Value
< 7 > New Value

Fields 2 through 7 repeat until the record reaches approximately 1K

!filename TRANSACTION records
0 1 2 and other integers
When FILE DISTRIBUTOR transfers records FROM the !INDEXING file it does so
by transferring ALL index transactions for a file (regardless of field) into
transaction records in the !filename file having a sequential key As
transaction records are added they are created in a similar way to that in
!INDEXING The records have a slightly DIFFERENT structure though as
follows;

< 1 > Pointer to next TRANSACTION record
< 2> Name of field to update
< 3> Item ID being indexed
< 4 > Old Value
< 5> New Value

Fields 2 through 5 repeat until the record reaches approximately 1K

Index_Name* Index_Name*1 2 3 and other integers
When F DISTRIBUTOR transfers records FROM the process described above it
separates out the index transactions into their respective fields and builds
transaction records accordingly WITH each index TRANSACTION record having a
key of field_name*integer The record holding the base information is not
field_name*0 though it is field_name* As TRANSACTION records are added
they are created in a similar way to that in !INDEXING The records have a
slightly DIFFERENT structure though as follows;

< 1 > Pointer to next TRANSACTION record
< 2 > Item ID being indexed
< 3 > Old Value
< 4 > New Value


(Volume 2 Issue 9 Page 7)
[revmedia/copyrigh.htm]

Page last modified: 08/02/03