Description
Objects of the CTSegment class manage index segments. The segment is part of the index; one single index may be composed of several segments. It uses CTBase as the base class, and implements the constructor/destructor allocating/freeing memory to the segment operations.
See Also
CTBase, CTField, CTIndex, CTRecord, CTTable
Preconditions
Before any task is developed with a CTSegment object, a CTIndex() must have been initialized.
CTSegment Operators
- = : Assign a CTSegment object to another
CTSegment.operator =
Syntax
CTSegment operator=(CTSegment Seg)
Parameters
- Seg [in] The segment object.
Description
Assigns one CTSegment object to another
Return
Returns a CTSegment object
CTSegment Methods
Constructor / Destructor
- CTSegment(): Creates a CTSegment object
- ~CTSegment(): Destroys a CTSegment object and resets all the dependent objects
Segment Handling
- GetField(): Retrieves the segment field object.
- GetFieldName(): Retrieves the segment field name
- GetMode(): Retrieves the segment mode
- SetMode(): Sets the segment mode
- GetNumber(): Retrieves the segment index position in the index segments list
CTSegment.CTSegment
Syntax
CTSegment ( )
CTSegment (CTSegment Seg)
Parameters
- Seg [in] The CTSegment object.
Description
This is the constructor for the CTSegment class.
See Also
~CTSegment()
CTSegment.~CTSegment
Syntax
~CTSegment
Parameters
This destructor has no parameters.
Description
This is the destructor for the CTSegment class.
See Also
CTSegment()
CTSegment.AddSegment
Syntax
CTSegment.AddSegment(CTIndex Index, CTField Field, SEG_MODE SegMode)
CTSegment.AddSegment(CTIndex Index, String FieldName, SEG_MODE SegMode)
CTSegment.AddSegment(CTIndex Index, int FieldNumber, SEG_MODE SegMode)
CTSegment.AddSegment(CTIndex Index, int offset, int Length, SEG_MODE SegMode)
CTSegment.AddSegment(int IndexNbr, int FieldNbr, SEG_MODE SegMode)
CTSegment.AddSegment(int IndexNbr, String FieldName, SEG_MODE SegMode)
CTSegment.AddSegment(int IndexNbr, CTField Field, SEG_MODE SegMode)
CTSegment.AddSegment(String IndexName, String FieldName, SEG_MODE SegMode)
CTSegment.AddSegment(String IndexName, int FieldNumber, SEG_MODE SegMode)
CTSegment.AddSegment(String IndexName, CTField Field, SEG_MODE SegMode)
Parameters
- Index [in] The index object.
- Field [in] The field object that composes part of the index segment
- SegMode [in] The segment mode. The valid values for the segment mode are shown in "Segment Modes". Notice that, if this method is used in the implementation that requires the offset, the segment is called extended, and in this specific case, the segment modes should be those that depend on the offset. If the implementation used is any other, the segment mode should be one of the so called schema segments (SEG_MODE.SCHSEG_SEG, SEG_MODE.USCHSEG_SEG, SEG_MODE.VSCHSEG_SEG, SEG_MODE.UVSCHSEG_SEG, SEG_MODE.SCHSRL_SEG).
- FieldName [in] Field name to compose the index segment
- FieldNumber [in] Field number to compose the index segment
- offset [in] Absolute byte offset of the segment. If used, this offset should be calculated with care, since the hidden fields included by c-tree Plus for .NET should be taken into account: $DELFLD$ (always included, to account for the deleted record) - 4 bytes; $NULFLD$ (always present - 1 bit for every user defined field, rounded for the next byte); ROWID$ (8 bytes to account for the automatic auto-increment record - see the discussion on ROWID() in "Hidden Fields". This variation makes it difficult to predict the correct offset of each user defined offset.
- Length [in] Segment length in bytes
- IndexNbr [in] Index number
- FieldNbr [in] Field number to compose the index segment
- IndexName [in] Index name to be updated.
Description
Adds a new segment to an index.
It is strongly recommended that the CTSegment.AddSegment(CTIndex Index, int offset, int Length, SEG_MODE SegMode) implementation is not used, with considerable advantages for the use of the other implementations. The use of the extended segments (based on the segment offset), as needed in this implementation, may prevent the use of advanced c-tree Plus for .NET functions like CTTable.Alter(). If, for any reason, it is mandatory to use this implementation, try to adapt the example presented in the description of the ctdbAddSegmentEx() function in C API.
Return
AddSegment() returns a segment object.
See Also
DelSegment(), InsertSegment()
CTSegment.GetField
Syntax
CTField GetField( )
Parameters
This method has no parameters.
Description
Retrieves the segment field object.
Return
GetField() returns the field object.
See Also
GetFieldName()
CTSegment.GetFieldName
Syntax
String GetFieldName( )
Parameters
This method has no parameters.
Description
Retrieves the segment field name.
Return
GetFieldName() returns the segment field name.
See Also
GetField()
CTSegment.GetMode
Syntax
SEG_MODE GetMode( )
Parameters
This method has no parameters.
Description
Retrieves the segment mode. See SetMode() for valid values for the segment mode.
Return
GetMode() returns the segment mode.
See Also
SetMode()
CTSegment.GetNumber
Syntax
int GetNumber( )
Parameters
This method has no parameters.
Description
Retrieves the segment index position in the index segments list
Return
GetNumber() returns the segment position.
CTSegment.GetStatus
Retrieves the status of the segment object.
Declaration
ULONG CTSegment.GetStatus() const;
Description
CTSegment.GetStatus() retrieves the status of a segment object. The status of the segment handle is a bit map describing one or more changes that have occurred to the segment object.
Return
CTSegment.GetStatus() returns a bitmap of the following:
Value |
Symbolic Constant |
Explanation |
|---|---|---|
0x00 |
CTDBISEG_OLD |
Original segment as read from file |
0x01 |
CTDBISEG_NEW |
Segment added or inserted |
0x02 |
CTDBISEG_DEL |
Original segment deleted |
0x04 |
CTDBISEG_MOVED |
Original segment moved |
0x10 |
CTDBISEG_MODE |
Segment mode changed |
0x20 |
CTDBISEG_FIELD |
Segment field changed |
Example
// if any segment of an index has changed, call alter table
for (i = 0; i < hIndex.GetSegmentCount(); i++)
{
CTSegment hSeg = hIndex.GetSegment(i);
if (hSeg.GetStatus() != CTDBISEG_OLD)
hTable.Alter(CTDB_ALTER_NORMAL);
}
See Also
CTField.GetStatus(), CTIndex.GetStatus()
CTSegment.MoveSegment
Moves a key segment.
Declaration
void CTSegment.MoveSegment(NINT newIndex);
Description
CTSegment.MoveSegment() moves a key segment to a location indicated by newIndex. newIndex indicates the relative position were the key segment should be moved to.
Return
void
Example
// move the last segment to first
CTIndex hIndex = hTable.GetIndex(0);
NINT count = hIndex.GetSegmentCount();
if (count > 0)
{
CTSegment hSeg = hIndex.GetSegment(count - 1);
hSeg.MoveSegment(0);
}
See Also
CTTable.MoveSegment(), CTIndex.MoveSegment()
CTSegment.SetMode
Syntax
void SetMode(SEG_MODE SegMode)
Parameters
- SegMode [in] The segment mode. Valid values for segment modes are shown in "Segment Modes".
Description
Sets the segment mode.
Return
None.
See Also
GetMode()