// ---------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------
//
//
// ---------------------------------------------------------------------
namespace Microsoft.Database.Isam
{
using System;
using Microsoft.Isam.Esent.Interop;
using Microsoft.Isam.Esent.Interop.Vista;
///
/// Index flags enumeration
///
[Flags]
public enum IndexFlags
{
///
/// The index will use the default set of flags.
///
None = CreateIndexGrbit.None,
///
/// All keys in the index must be unique or the insertion or update of
/// the associated record will fail. This uniqueness constraint also
/// applies to truncated keys.
///
Unique = CreateIndexGrbit.IndexUnique,
///
/// The keys in this index represent the primary key for the record.
/// At this time, the primary index is also the clustered index of the
/// table. If no primary index is defined for a table then a default
/// primary index with a sequential key will be used.
///
Primary = CreateIndexGrbit.IndexPrimary,
///
/// Each key in the index must have a non-NULL value for every key
/// column in the index definition or the insertion or update of the
/// associated record will fail.
///
DisallowNull = CreateIndexGrbit.IndexDisallowNull,
///
/// The index will only contain entries for keys with at least one
/// non-NULL key column.
///
IgnoreNull = CreateIndexGrbit.IndexIgnoreNull,
///
/// The index will only contain entries for keys comprised entirely of
/// non-NULL key columns.
///
IgnoreAnyNull = CreateIndexGrbit.IndexIgnoreAnyNull,
///
/// The index will contain entries for keys containing any combination
/// of NULL and non-NULL key columns. The collation order of NULL key
/// column values versus non-NULL key column values is determined by the
/// SortNullsLow and SortNullsHigh IndexFlags. This represents the
/// default treatment of NULL key column values in an index entry.
///
AllowNull = CreateIndexGrbit.None,
///
/// The collation order of the index is set such that NULL key column
/// values sort closer to the start of the index than non-NULL key
/// column values. This is the default NULL collation order.
///
SortNullsLow = CreateIndexGrbit.None,
///
/// The collation order of the index is set such that NULL key column
/// values sort closer to the end of the index than non-NULL key column
/// values.
///
SortNullsHigh = CreateIndexGrbit.IndexSortNullsHigh,
///
/// Any key in the index may be larger than the maximum size of the key
/// supported by that index except that any key beyond the maximum size
/// will be truncated. This means that there can be no meaningful
/// relative ordering between keys that are identical after truncation
/// nor can there be any distinction between entries generated by
/// different key column values whose keys are identical after
/// truncation.
///
/// This bit is unique to the Isam layer. It is not actually supported
/// by the underlying database layer. If it is not specified,
/// is assumed. This is the opposite default
/// of the underlying database layer
///
/// and
/// are mutually exclusive.
///
///
///
AllowTruncation = 0x01000000,
///
/// Each key in the index must be smaller than the maximum size of the
/// key supported by that index or the insertion or update of the
/// associated record will fail. Note that at the present time there
/// is some overhead when converting key column values into a key so
/// the maximum size of the key will be reached sooner than expected
/// based on the raw size of the key column values. Truncated keys are
/// prohibited by default.
///
///
/// This is the default behaviour for Isam, but not the default for
/// the underlying database layer.
/// and
/// are mutually exclusive.
///
DisallowTruncation = VistaGrbits.IndexDisallowTruncation,
}
}