DSInternals/Src/Microsoft.Isam.Esent.Interop/grbits.cs

1778 lines
62 KiB
C#

//-----------------------------------------------------------------------
// <copyright file="grbits.cs" company="Microsoft Corporation">
// Copyright (c) Microsoft Corporation.
// </copyright>
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop
{
using System;
using System.Collections.Generic;
/// <summary>
/// Options for <see cref="Api.JetCreateInstance2"/>.
/// </summary>
[Flags]
public enum CreateInstanceGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetInit2"/>.
/// </summary>
/// <seealso cref="Vista.VistaGrbits.RecoveryWithoutUndo"/>
/// <seealso cref="Vista.VistaGrbits.TruncateLogsAfterRecovery"/>
/// <seealso cref="Vista.VistaGrbits.ReplayMissingMapEntryDB"/>
/// <seealso cref="Vista.VistaGrbits.LogStreamMustExist"/>
/// <seealso cref="Windows7.Windows7Grbits.ReplayIgnoreLostLogs"/>
/// <seealso cref="Windows8.Windows8Grbits.KeepDbAttachedAtEndOfRecovery"/>
[Flags]
public enum InitGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0
}
/// <summary>
/// Options for <see cref="Api.JetTerm2"/>.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.Dirty"/>
[Flags]
public enum TermGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Requests that the instance be shut down cleanly. Any optional
/// cleanup work that would ordinarily be done in the background at
/// run time is completed immediately.
/// </summary>
Complete = 1,
/// <summary>
/// Requests that the instance be shut down as quickly as possible.
/// Any optional work that would ordinarily be done in the
/// background at run time is abandoned.
/// </summary>
Abrupt = 2,
}
/// <summary>
/// Options for <see cref="Api.JetCreateDatabase"/>.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.EnableCreateDbBackgroundMaintenance"/>
[Flags]
public enum CreateDatabaseGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// By default, if JetCreateDatabase is called and the database already exists,
/// the Api call will fail and the original database will not be overwritten.
/// OverwriteExisting changes this behavior, and the old database
/// will be overwritten with a new one.
/// </summary>
OverwriteExisting = 0x200,
/// <summary>
/// Turns off logging. Setting this bit loses the ability to replay log files
/// and recover the database to a consistent usable state after a crash.
/// </summary>
RecoveryOff = 0x8,
}
/// <summary>
/// Options for <see cref="Api.JetDetachDatabase2"/>.
/// </summary>
[Flags]
public enum DetachDatabaseGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// If <see cref="ForceDetach"/> is used, <see cref="EsentForceDetachNotAllowedException"/> will be returned.
/// </summary>
[Obsolete("ForceDetach is no longer used.")]
ForceDetach = 1,
/// <summary>
/// <see cref="ForceClose"/> is no longer used.
/// </summary>
[Obsolete("ForceClose is no longer used.")]
ForceClose = 0x2,
/// <summary>
/// If <see cref="ForceCloseAndDetach"/> is used, <see cref="EsentForceDetachNotAllowedException"/> will be returned.
/// </summary>
[Obsolete("ForceCloseAndDetach is no longer used.")]
ForceCloseAndDetach = (0x2 | 0x1 /*ForceDetach*/),
}
/// <summary>
/// Options for <see cref="Api.JetAttachDatabase"/>.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.EnableAttachDbBackgroundMaintenance"/>
/// <seealso cref="Windows8.Windows8Grbits.PurgeCacheOnAttach"/>
[Flags]
public enum AttachDatabaseGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Prevents modifications to the database.
/// </summary>
ReadOnly = 0x1,
/// <summary>
/// If JET_paramEnableIndexChecking has been set, all indexes over Unicode
/// data will be deleted.
/// </summary>
DeleteCorruptIndexes = 0x10,
}
/// <summary>
/// Options for <see cref="Api.JetOpenDatabase"/>.
/// </summary>
[Flags]
public enum OpenDatabaseGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Prevents modifications to the database.
/// </summary>
ReadOnly = 0x1,
/// <summary>
/// Allows only a single session to attach a database.
/// Normally, several sessions can open a database.
/// </summary>
Exclusive = 0x2,
}
/// <summary>
/// Options for <see cref="Api.JetCloseDatabase"/>.
/// </summary>
[Flags]
public enum CloseDatabaseGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK
/// <summary>
/// Options for <see cref="Api.JetCompact"/>.
/// </summary>
[Flags]
public enum CompactGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Causes JetCompact to dump statistics on the source database to a file
/// named DFRGINFO.TXT. Statistics include the name of each table in
/// source database, number of rows in each table, total size in bytes of
/// all rows in each table, total size in bytes of all columns of type
/// <see cref="JET_coltyp.LongText"/> or <see cref="JET_coltyp.LongBinary"/>
/// that were large enough to be stored separate from the record, number
/// of clustered index leaf pages, and the number of long value leaf pages.
/// In addition, summary statistics including the size of the source database,
/// destination database, time required for database compaction, temporary
/// database space are all dumped as well.
/// </summary>
Stats = 0x20,
/// <summary>
/// Used when the source database is known to be corrupt. It enables a
/// whole set of new behaviors intended to salvage as much data as
/// possible from the source database. JetCompact with this option set
/// may return <see cref="JET_err.Success"/> but not copy all of the data
/// created in the source database. Data that was in damaged portions of
/// the source database will be skipped.
/// </summary>
[Obsolete("Use esentutl repair functionality instead.")]
Repair = 0x40,
}
/// <summary>
/// Options for <see cref="Api.JetOSSnapshotFreeze"/>.
/// </summary>
[Flags]
public enum SnapshotFreezeGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetOSSnapshotPrepare"/>.
/// </summary>
/// <seealso cref="Vista.VistaGrbits.ContinueAfterThaw"/>
/// <seealso cref="Windows7.Windows7Grbits.ExplicitPrepare"/>
[Flags]
public enum SnapshotPrepareGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Only logfiles will be taken.
/// </summary>
IncrementalSnapshot = 0x1,
/// <summary>
/// A copy snapshot (normal or incremental) with no log truncation.
/// </summary>
CopySnapshot = 0x2,
}
/// <summary>
/// Options for <see cref="Api.JetOSSnapshotThaw"/>.
/// </summary>
[Flags]
public enum SnapshotThawGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetBackupInstance"/>.
/// </summary>
[Flags]
public enum BackupGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Creates an incremental backup as opposed to a full backup. This
/// means that only the log files created since the last full or
/// incremental backup will be backed up.
/// </summary>
Incremental = 0x1,
/// <summary>
/// Creates a full backup of the database. This allows the preservation
/// of an existing backup in the same directory if the new backup fails.
/// </summary>
Atomic = 0x4,
}
/// <summary>
/// Options for <see cref="Api.JetBeginExternalBackupInstance"/>.
/// </summary>
[Flags]
public enum BeginExternalBackupGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Creates an incremental backup as opposed to a full backup. This
/// means that only the log files since the last full or incremental
/// backup will be backed up.
/// </summary>
Incremental = 0x1,
}
/// <summary>
/// Options for <see cref="Api.JetEndExternalBackupInstance"/>.
/// </summary>
/// <seealso cref="Vista.VistaGrbits.TruncateDone"/>
[Flags]
public enum EndExternalBackupGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// The client application finished the backup completely, and is ending normally.
/// </summary>
Normal = 0x1,
/// <summary>
/// The client application is aborting the backup.
/// </summary>
Abort = 0x2,
}
#endif // !MANAGEDESENT_ON_WSA
/// <summary>
/// Options for <see cref="Api.JetBeginTransaction2"/>.
/// </summary>
[Flags]
public enum BeginTransactionGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// The transaction will not modify the database. If an update is attempted,
/// that operation will fail with <see cref="JET_err.TransReadOnly"/>. This
/// option is ignored unless it is requested when the given session is not
/// already in a transaction.
/// </summary>
ReadOnly = 0x1,
}
/// <summary>
/// Options for JetCommitTransaction.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.ForceNewLog"/>
[Flags]
public enum CommitTransactionGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// The transaction is committed normally but this Api does not wait for
/// the transaction to be flushed to the transaction log file before returning
/// to the caller. This drastically reduces the duration of a commit operation
/// at the cost of durability. Any transaction that is not flushed to the log
/// before a crash will be automatically aborted during crash recovery during
/// the next call to JetInit. If WaitLastLevel0Commit or WaitAllLevel0Commit
/// are specified, this option is ignored.
/// </summary>
LazyFlush = 0x1,
/// <summary>
/// If the session has previously committed any transactions and they have not yet
/// been flushed to the transaction log file, they should be flushed immediately.
/// This Api will wait until the transactions have been flushed before returning
/// to the caller. This is useful if the application has previously committed several
/// transactions using JET_bitCommitLazyFlush and now wants to flush all of them to disk.
/// </summary>
/// <remarks>
/// This option may be used even if the session is not currently in a transaction.
/// This option cannot be used in combination with any other option.
/// </remarks>
WaitLastLevel0Commit = 0x2,
}
/// <summary>
/// Options for JetRollbackTransaction.
/// </summary>
[Flags]
public enum RollbackTransactionGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// This option requests that all changes made to the state of the
/// database during all save points be undone. As a result, the
/// session will exit the transaction.
/// </summary>
RollbackAll = 0x1,
}
/// <summary>
/// Options for JetEndSession.
/// </summary>
[Flags]
public enum EndSessionGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for JetOpenTable.
/// </summary>
[Flags]
public enum OpenTableGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// This table cannot be opened for write access by another session.
/// </summary>
DenyWrite = 0x1,
/// <summary>
/// This table cannot be opened for read access by another session.
/// </summary>
DenyRead = 0x2,
/// <summary>
/// Request read-only access to the table.
/// </summary>
ReadOnly = 0x4,
/// <summary>
/// Request write access to the table.
/// </summary>
Updatable = 0x8,
/// <summary>
/// Allow DDL modifications to a table flagged as FixedDDL. This option
/// must be used with DenyRead.
/// </summary>
PermitDDL = 0x10,
/// <summary>
/// Do not cache pages for this table.
/// </summary>
NoCache = 0x20,
/// <summary>
/// Provides a hint that the table is probably not in the buffer cache, and
/// that pre-reading may be beneficial to performance.
/// </summary>
Preread = 0x40,
/// <summary>
/// Assume a sequential access pattern and prefetch database pages.
/// </summary>
Sequential = 0x8000,
/// <summary>
/// Table belongs to stats class 1.
/// </summary>
TableClass1 = 0x00010000,
/// <summary>
/// Table belongs to stats class 2.
/// </summary>
TableClass2 = 0x00020000,
/// <summary>
/// Table belongs to stats class 3.
/// </summary>
TableClass3 = 0x00030000,
/// <summary>
/// Table belongs to stats class 4.
/// </summary>
TableClass4 = 0x00040000,
/// <summary>
/// Table belongs to stats class 5.
/// </summary>
TableClass5 = 0x00050000,
/// <summary>
/// Table belongs to stats class 6.
/// </summary>
TableClass6 = 0x00060000,
/// <summary>
/// Table belongs to stats class 7.
/// </summary>
TableClass7 = 0x00070000,
/// <summary>
/// Table belongs to stats class 8.
/// </summary>
TableClass8 = 0x00080000,
/// <summary>
/// Table belongs to stats class 9.
/// </summary>
TableClass9 = 0x00090000,
/// <summary>
/// Table belongs to stats class 10.
/// </summary>
TableClass10 = 0x000A0000,
/// <summary>
/// Table belongs to stats class 11.
/// </summary>
TableClass11 = 0x000B0000,
/// <summary>
/// Table belongs to stats class 12.
/// </summary>
TableClass12 = 0x000C0000,
/// <summary>
/// Table belongs to stats class 13.
/// </summary>
TableClass13 = 0x000D0000,
/// <summary>
/// Table belongs to stats class 14.
/// </summary>
TableClass14 = 0x000E0000,
/// <summary>
/// Table belongs to stats class 15.
/// </summary>
TableClass15 = 0x000F0000,
}
#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK
/// <summary>
/// Options for <see cref="Api.JetDupCursor"/>.
/// </summary>
[Flags]
public enum DupCursorGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetSetLS"/> and <see cref="Api.JetGetLS"/>.
/// </summary>
[Flags]
public enum LsGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// The context handle for the chosen object should be reset to JET_LSNil.
/// </summary>
Reset = 0x1,
/// <summary>
/// Specifies the context handle should be associated with the given cursor.
/// </summary>
Cursor = 0x2,
/// <summary>
/// Specifies that the context handle should be associated with the
/// table associated with the given cursor. It is illegal to use this
/// option with <see cref="Cursor"/>.
/// </summary>
Table = 0x4,
}
#endif // !MANAGEDESENT_ON_WSA
/// <summary>
/// Options for the <see cref="Api.JetSetColumn(JET_SESID, JET_TABLEID, JET_COLUMNID, byte[], int, int, SetColumnGrbit, JET_SETINFO)"/>
/// and its associated overloads.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.Compressed"/>
/// <seealso cref="Windows7.Windows7Grbits.Uncompressed"/>
[Flags]
public enum SetColumnGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// This option is used to append data to a column of type JET_coltypLongText
/// or JET_coltypLongBinary. The same behavior can be achieved by determining
/// the size of the existing long value and specifying ibLongValue in psetinfo.
/// However, its simpler to use this grbit since knowing the size of the existing
/// column value is not necessary.
/// </summary>
AppendLV = 0x1,
/// <summary>
/// This option is used replace the existing long value with the newly provided
/// data. When this option is used, it is as though the existing long value has
/// been set to 0 (zero) length prior to setting the new data.
/// </summary>
OverwriteLV = 0x4,
/// <summary>
/// This option is only applicable for tagged, sparse or multi-valued columns.
/// It causes the column to return the default column value on subsequent retrieve
/// column operations. All existing column values are removed.
/// </summary>
RevertToDefaultValue = 0x200,
/// <summary>
/// This option is used to force a long value, columns of type JET_coltyp.LongText
/// or JET_coltyp.LongBinary, to be stored separately from the remainder of record
/// data. This occurs normally when the size of the long value prevents it from being
/// stored with remaining record data. However, this option can be used to force the
/// long value to be stored separately. Note that long values four bytes in size
/// of smaller cannot be forced to be separate. In such cases, the option is ignored.
/// </summary>
SeparateLV = 0x40,
/// <summary>
/// This option is used to interpret the input buffer as a integer number of bytes
/// to set as the length of the long value described by the given columnid and if
/// provided, the sequence number in psetinfo->itagSequence. If the size given is
/// larger than the existing column value, the column will be extended with 0s.
/// If the size is smaller than the existing column value then the value will be
/// truncated.
/// </summary>
SizeLV = 0x8,
/// <summary>
/// This option is used to enforce that all values in a multi-valued column are
/// distinct. This option compares the source column data, without any
/// transformations, to other existing column values and an error is returned
/// if a duplicate is found. If this option is given, then AppendLV, OverwriteLV
/// and SizeLV cannot also be given.
/// </summary>
UniqueMultiValues = 0x80,
/// <summary>
/// This option is used to enforce that all values in a multi-valued column are
/// distinct. This option compares the key normalized transformation of column
/// data, to other similarly transformed existing column values and an error is
/// returned if a duplicate is found. If this option is given, then AppendLV,
/// OverwriteLV and SizeLV cannot also be given.
/// </summary>
UniqueNormalizedMultiValues = 0x100,
/// <summary>
/// This option is used to set a value to zero length. Normally, a column value
/// is set to NULL by passing a cbMax of 0 (zero). However, for some types, like
/// JET_coltyp.Text, a column value can be 0 (zero) length instead of NULL, and
/// this option is used to differentiate between NULL and 0 (zero) length.
/// </summary>
ZeroLength = 0x20,
/// <summary>
/// Try to store long-value columns in the record, even if they exceed the default
/// separation size.
/// </summary>
IntrinsicLV = 0x400,
}
/// <summary>
/// Options for JetRetrieveColumn.
/// </summary>
[Flags]
public enum RetrieveColumnGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// This flag causes retrieve column to retrieve the modified value instead of
/// the original value. If the value has not been modified, then the original
/// value is retrieved. In this way, a value that has not yet been inserted or
/// updated may be retrieved during the operation of inserting or updating a record.
/// </summary>
RetrieveCopy = 0x1,
/// <summary>
/// This option is used to retrieve column values from the index, if possible,
/// without accessing the record. In this way, unnecessary loading of records
/// can be avoided when needed data is available from index entries themselves.
/// </summary>
RetrieveFromIndex = 0x2,
/// <summary>
/// This option is used to retrieve column values from the index bookmark,
/// and may differ from the index value when a column appears both in the
/// primary index and the current index. This option should not be specified
/// if the current index is the clustered, or primary, index. This bit cannot
/// be set if RetrieveFromIndex is also set.
/// </summary>
RetrieveFromPrimaryBookmark = 0x4,
/// <summary>
/// This option is used to retrieve the sequence number of a multi-valued
/// column value in JET_RETINFO.itagSequence. Retrieving the sequence number
/// can be a costly operation and should only be done if necessary.
/// </summary>
RetrieveTag = 0x8,
/// <summary>
/// This option is used to retrieve multi-valued column NULL values. If
/// this option is not specified, multi-valued column NULL values will
/// automatically be skipped.
/// </summary>
RetrieveNull = 0x10,
/// <summary>
/// This option affects only multi-valued columns and causes a NULL
/// value to be returned when the requested sequence number is 1 and
/// there are no set values for the column in the record.
/// </summary>
RetrieveIgnoreDefault = 0x20,
}
/// <summary>
/// Options for <see cref="Api.JetEnumerateColumns(JET_SESID, JET_TABLEID, EnumerateColumnsGrbit, out IEnumerable&lt;EnumeratedColumn&gt;)"/>
/// and its associated overloads.
/// </summary>
/// <seealso cref="Server2003.Server2003Grbits.EnumerateIgnoreUserDefinedDefault"/>
/// <seealso cref="Windows7.Windows7Grbits.EnumerateInRecordOnly"/>
[Flags]
public enum EnumerateColumnsGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// When enumerating column values, all columns for which we are retrieving
/// all values and that have only one non-NULL column value may be returned
/// in a compressed format. The status for such columns will be set to
/// <see cref="JET_wrn.ColumnSingleValue"/> and the size of the column value
/// and the memory containing the column value will be returned directly in
/// the <see cref="JET_ENUMCOLUMN"/> structure. It is not guaranteed that
/// all eligible columns are compressed in this manner. See
/// <see cref="JET_ENUMCOLUMN"/> for more information.
/// </summary>
EnumerateCompressOutput = 0x00080000,
/// <summary>
/// This option indicates that the modified column values of the record
/// should be enumerated rather than the original column values. If a
/// column value has not been modified, the original column value is
/// enumerated. In this way, a column value that has not yet been inserted
/// or updated may be enumerated when inserting or updating a record.
/// </summary>
/// <remarks>
/// This option is identical to <see cref="RetrieveColumnGrbit.RetrieveCopy"/>.
/// </remarks>
EnumerateCopy = 0x1,
/// <summary>
/// If a given column is not present in the record then no column value
/// will be returned. Ordinarily, the default value for the column,
/// if any, would be returned in this case. It is guaranteed that if the
/// column is set to a value different than the default value then that
/// different value will be returned (that is, if a column with a
/// default value is explicitly set to NULL then a NULL will be returned
/// as the value for that column). Even if this option is requested, it
/// is still possible to see a column value that happens to be equal to
/// the default value. No effort is made to remove column values that
/// match their default values.
/// It is important to remember that this option affects the output of
/// <see cref="Api.JetEnumerateColumns(JET_SESID, JET_TABLEID, EnumerateColumnsGrbit, out IEnumerable&lt;EnumeratedColumn&gt;)"/>
/// and its associated overloads when used with
/// <see cref="EnumerateColumnsGrbit.EnumeratePresenceOnly"/> or
/// <see cref="EnumerateColumnsGrbit.EnumerateTaggedOnly"/>.
/// </summary>
EnumerateIgnoreDefault = 0x20,
/// <summary>
/// If a non-NULL value exists for the requested column or column value
/// then the associated data is not returned. Instead, the associated
/// status for that column or column value will be set to
/// <see cref="JET_wrn.ColumnPresent"/>. If the column or column value
/// is NULL then <see cref="JET_wrn.ColumnNull"/> will be returned as usual.
/// </summary>
EnumeratePresenceOnly = 0x00020000,
/// <summary>
/// When enumerating all column values in the record (for example,that is
/// when numColumnids is zero), only tagged column values will be returned.
/// This option is not allowed when enumerating a specific array of column IDs.
/// </summary>
EnumerateTaggedOnly = 0x00040000,
}
#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK
/// <summary>
/// Options for <see cref="Vista.VistaApi.JetGetRecordSize"/>.
/// </summary>
[Flags]
public enum GetRecordSizeGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Retrieve the size of the record that is in the copy buffer prepared
/// or update. Otherwise, the tableid must be positioned on a record,
/// and that record will be used.
/// </summary>
InCopyBuffer = 0x1,
/// <summary>
/// The JET_RECSIZE is not zeroed before filling the contents, effectively
/// acting as an accumulation of the statistics for multiple records visited
/// or updated.
/// </summary>
RunningTotal = 0x2,
/// <summary>
/// Ignore non-intrinsic Long Values. Only the local record on the page
/// will be used.
/// </summary>
Local = 0x4,
}
#endif // !MANAGEDESENT_ON_WSA
/// <summary>
/// Options for <see cref="Api.JetGetSecondaryIndexBookmark"/>.
/// </summary>
[Flags]
public enum GetSecondaryIndexBookmarkGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetGotoSecondaryIndexBookmark"/>.
/// </summary>
[Flags]
public enum GotoSecondaryIndexBookmarkGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// In the event that the index entry can no longer be found, the cursor
/// will be left positioned where that index entry was previously found.
/// The operation will still fail with JET_errRecordDeleted; however,
/// it will be possible to move to the next or previous index entry
/// relative to the index entry that is now missing.
/// </summary>
BookmarkPermitVirtualCurrency = 0x1,
}
/// <summary>
/// Options for JetMove.
/// </summary>
[Flags]
public enum MoveGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Moves the cursor forward or backward by the number of index entries
/// required to skip the requested number of index key values encountered
/// in the index. This has the effect of collapsing index entries with
/// duplicate key values into a single index entry.
/// </summary>
MoveKeyNE = 0x1,
}
/// <summary>
/// Options for JetMakeKey.
/// </summary>
[Flags]
public enum MakeKeyGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// A new search key should be constructed. Any previously existing search
/// key is discarded.
/// </summary>
NewKey = 0x1,
/// <summary>
/// When this option is specified, all other options are ignored, any
/// previously existing search key is discarded, and the contents of the
/// input buffer are loaded as the new search key.
/// </summary>
NormalizedKey = 0x8,
/// <summary>
/// If the size of the input buffer is zero and the current key column
/// is a variable length column, this option indicates that the input
/// buffer contains a zero length value. Otherwise, an input buffer size
/// of zero would indicate a NULL value.
/// </summary>
KeyDataZeroLength = 0x10,
/// <summary>
/// This option indicates that the search key should be constructed
/// such that any key columns that come after the current key column
/// should be considered to be wildcards.
/// </summary>
StrLimit = 0x2,
/// <summary>
/// This option indicates that the search key should be constructed
/// such that the current key column is considered to be a prefix
/// wildcard and that any key columns that come after the current
/// key column should be considered to be wildcards.
/// </summary>
SubStrLimit = 0x4,
/// <summary>
/// The search key should be constructed such that any key columns
/// that come after the current key column should be considered to
/// be wildcards.
/// </summary>
FullColumnStartLimit = 0x100,
/// <summary>
/// The search key should be constructed in such a way that any key
/// columns that come after the current key column are considered to
/// be wildcards.
/// </summary>
FullColumnEndLimit = 0x200,
/// <summary>
/// The search key should be constructed such that the current key
/// column is considered to be a prefix wildcard and that any key
/// columns that come after the current key column should be considered
/// to be wildcards.
/// </summary>
PartialColumnStartLimit = 0x400,
/// <summary>
/// The search key should be constructed such that the current key
/// column is considered to be a prefix wildcard and that any key
/// columns that come after the current key column should be considered
/// to be wildcards.
/// </summary>
PartialColumnEndLimit = 0x800,
}
/// <summary>
/// Options for JetRetrieveKey.
/// </summary>
[Flags]
public enum RetrieveKeyGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Retrieve the currently constructed key.
/// </summary>
RetrieveCopy = 0x1,
}
/// <summary>
/// Options for <see cref="Api.JetSeek"/>.
/// </summary>
[Flags]
public enum SeekGrbit
{
/// <summary>
/// The cursor will be positioned at the index entry closest to the
/// start of the index that exactly matches the search key.
/// </summary>
SeekEQ = 0x1,
/// <summary>
/// The cursor will be positioned at the index entry closest to the
/// end of the index that is less than an index entry that would
/// exactly match the search criteria.
/// </summary>
SeekLT = 0x2,
/// <summary>
/// The cursor will be positioned at the index entry closest to the
/// end of the index that is less than or equal to an index entry
/// that would exactly match the search criteria.
/// </summary>
SeekLE = 0x4,
/// <summary>
/// The cursor will be positioned at the index entry closest to the
/// start of the index that is greater than or equal to an index
/// entry that would exactly match the search criteria.
/// </summary>
SeekGE = 0x8,
/// <summary>
/// The cursor will be positioned at the index entry closest to the
/// start of the index that is greater than an index entry that
/// would exactly match the search criteria.
/// </summary>
SeekGT = 0x10,
/// <summary>
/// An index range will automatically be setup for all keys that
/// exactly match the search key.
/// </summary>
SetIndexRange = 0x20,
}
/// <summary>
/// Options for <see cref="Api.JetSetIndexRange"/>.
/// </summary>
[Flags]
public enum SetIndexRangeGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// This option indicates that the limit of the index range is inclusive.
/// </summary>
RangeInclusive = 0x1,
/// <summary>
/// The search key in the cursor represents the search criteria for the
/// index entry closest to the end of the index that will match the index
/// range.
/// </summary>
RangeUpperLimit = 0x2,
/// <summary>
/// The index range should be removed as soon as it has been established.
/// This is useful for testing for the existence of index entries that
/// match the search criteria.
/// </summary>
RangeInstantDuration = 0x4,
/// <summary>
/// Cancel and existing index range.
/// </summary>
RangeRemove = 0x8,
}
/// <summary>
/// Options for the <see cref="JET_INDEXRANGE"/> object.
/// </summary>
[Flags]
public enum IndexRangeGrbit
{
/// <summary>
/// Records in the cursors indexrange should be included in the output.
/// </summary>
RecordInIndex = 0x1,
}
/// <summary>
/// Options for <see cref="Api.JetIntersectIndexes"/>.
/// </summary>
[Flags]
public enum IntersectIndexesGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetSetCurrentIndex2"/> and
/// <see cref="Api.JetSetCurrentIndex3"/>.
/// </summary>
[Flags]
public enum SetCurrentIndexGrbit
{
/// <summary>
/// Default options. This is the same as <see cref="MoveFirst"/>.
/// </summary>
None = 0,
/// <summary>
/// Indicates that the cursor should be positioned on the first entry of
/// the specified index. If the current index is being selected then this
/// option is ignored.
/// </summary>
MoveFirst = 0,
/// <summary>
/// Indicates that the cursor should be positioned on the index entry
/// of the new index that corresponds to the record associated with the
/// index entry at the current position of the cursor on the old index.
/// </summary>
NoMove = 0x2,
}
/// <summary>
/// Options for <see cref="Api.JetSetTableSequential"/>.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.Backward"/>
[Flags]
public enum SetTableSequentialGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetResetTableSequential"/>.
/// </summary>
[Flags]
public enum ResetTableSequentialGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for JetGetLock.
/// </summary>
[Flags]
public enum GetLockGrbit
{
/// <summary>
/// Acquire a read lock on the current record. Read locks are incompatible with
/// write locks already held by other sessions but are compatible with read locks
/// held by other sessions.
/// </summary>
Read = 0x1,
/// <summary>
/// Acquire a write lock on the current record. Write locks are not compatible
/// with write or read locks held by other sessions but are compatible with
/// read locks held by the same session.
/// </summary>
Write = 0x2,
}
/// <summary>
/// Options for <see cref="Api.JetEscrowUpdate"/>.
/// </summary>
[Flags]
public enum EscrowUpdateGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// Even if the session performing the escrow update has its transaction rollback
/// this update will not be undone. As the log records may not be flushed to disk,
/// recent escrow updates done with this flag may be lost if there is a crash.
/// </summary>
NoRollback = 0x1,
}
/// <summary>
/// Options for the <see cref="JET_COLUMNDEF"/> structure.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.ColumnCompressed"/>
[Flags]
public enum ColumndefGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// The column will be fixed. It will always use the same amount of space in a row,
/// regardless of how much data is being stored in the column. ColumnFixed
/// cannot be used with ColumnTagged. This bit cannot be used with long values
/// (that is JET_coltyp.LongText and JET_coltyp.LongBinary).
/// </summary>
ColumnFixed = 0x1,
/// <summary>
/// The column will be tagged. Tagged columns do not take up any space in the database
/// if they do not contain data. This bit cannot be used with ColumnFixed.
/// </summary>
ColumnTagged = 0x2,
/// <summary>
/// The column must never be set to a NULL value. On Windows XP this can only be applied to
/// fixed columns (bit, byte, integer, etc).
/// </summary>
ColumnNotNULL = 0x4,
/// <summary>
/// The column is a version column that specifies the version of the row. The value of
/// this column starts at zero and will be automatically incremented for each update on
/// the row. This option can only be applied to <see cref="JET_coltyp.Long"/> columns. This option cannot
/// be used with <see cref="ColumnAutoincrement"/>, <see cref="ColumnEscrowUpdate"/>, or <see cref="ColumnTagged"/>.
/// </summary>
ColumnVersion = 0x8,
/// <summary>
/// The column will automatically be incremented. The number is an increasing number, and
/// is guaranteed to be unique within a table. The numbers, however, might not be continuous.
/// For example, if five rows are inserted into a table, the "autoincrement" column could
/// contain the values { 1, 2, 6, 7, 8 }. This bit can only be used on columns of type
/// <see cref="JET_coltyp.Long"/> or <see cref="JET_coltyp.Currency"/>.
/// </summary>
ColumnAutoincrement = 0x10,
/// <summary>
/// The column can be updated. This is NOT a valid grbit to set on input to any API. It is
/// returned as part of the <see cref="JET_COLUMNDEF"/> structure's grbit member, as an
/// output from Api.JetGetColumnInfo.
/// </summary>
ColumnUpdatable = 0x20,
/// <summary>
/// The column can be multi-valued.
/// A multi-valued column can have zero, one, or more values
/// associated with it. The various values in a multi-valued column are identified by a number
/// called the itagSequence member, which belongs to various structures, including:
/// <see cref="JET_RETINFO"/>, <see cref="JET_SETINFO"/>, <see cref="JET_SETCOLUMN"/>, <see cref="JET_RETRIEVECOLUMN"/>, and <see cref="JET_ENUMCOLUMNVALUE"/>.
/// Multi-valued columns must be tagged columns; that is, they cannot be fixed-length or
/// variable-length columns.
/// </summary>
ColumnMultiValued = 0x400,
/// <summary>
/// Specifies that a column is an escrow update column. An escrow update column can be
/// updated concurrently by different sessions with JetEscrowUpdate and will maintain
/// transactional consistency. An escrow update column must also meet the following conditions:
/// An escrow update column can be created only when the table is empty.
/// An escrow update column must be of type JET_coltypLong.
/// An escrow update column must have a default value.
/// ColumnEscrowUpdate cannot be used in conjunction with <see cref="ColumnTagged"/>,
/// <see cref="ColumnVersion"/>, or <see cref="ColumnAutoincrement"/>.
/// </summary>
ColumnEscrowUpdate = 0x800,
/// <summary>
/// The column will be created in an without version information. This means that other
/// transactions that attempt to add a column with the same name will fail. This bit
/// is only useful with JetAddColumn. It cannot be used within a transaction.
/// </summary>
ColumnUnversioned = 0x1000,
/// <summary>
/// In doing an outer join, the retrieve column operation might not have a match
/// from the inner table.
/// </summary>
ColumnMaybeNull = 0x2000,
/// <summary>
/// When the escrow-update column reaches a value of zero, the callback function will be invoked.
/// </summary>
ColumnFinalize = 0x4000,
/// <summary>
/// The default value for a column will be provided by a callback function. A column that
/// has a user-defined default must be a tagged column. Specifying <see cref="ColumnUserDefinedDefault"/>
/// means that pvDefault must point to a JET_USERDEFINEDDEFAULT structure, and cbDefault must be
/// set to sizeof( JET_USERDEFINEDDEFAULT ).
/// </summary>
ColumnUserDefinedDefault = 0x8000,
/// <summary>
/// The column will be a key column for the temporary table. The order
/// of the column definitions with this option specified in the input
/// array will determine the precedence of each key column for the
/// temporary table. The first column definition in the array that
/// has this option set will be the most significant key column and
/// so on. If more key columns are requested than can be supported
/// by the database engine then this option is ignored for the
/// unsupportable key columns.
/// </summary>
TTKey = 0x40,
/// <summary>
/// The sort order of the key column for the temporary table should
/// be descending rather than ascending. If this option is specified
/// without <see cref="TTKey"/> then this option is ignored.
/// </summary>
TTDescending = 0x80,
}
/// <summary>
/// Options for the <see cref="JET_TABLECREATE"/> parameter used by
/// <see cref="Api.JetCreateTableColumnIndex3"/>.
/// </summary>
/// <seealso cref="Windows10.Windows10Grbits.TableCreateImmutableStructure"/>
[Flags]
public enum CreateTableColumnIndexGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// The DDL is fixed.
/// </summary>
FixedDDL = 0x1,
/// <summary>
/// The DDL is inheritable. Implies FixedDDL.
/// </summary>
TemplateTable = 0x2,
/// <summary>
/// Used in conjunction with TemplateTable.
/// </summary>
NoFixedVarColumnsInDerivedTables = 0x4,
}
/// <summary>
/// Options for <see cref="Api.JetCreateIndex"/> and <see cref="JET_INDEXCREATE"/>.
/// </summary>
/// <seealso cref="Vista.VistaGrbits.IndexCrossProduct"/>
/// <seealso cref="Vista.VistaGrbits.IndexDisallowTruncation"/>
/// <seealso cref="Vista.VistaGrbits.IndexNestedTable"/>
/// <seealso cref="Vista.VistaGrbits.IndexUnicode"/>
/// <seealso cref="Vista.VistaGrbits.IndexKeyMost"/>
/// <seealso cref="Windows8.Windows8Grbits.IndexDotNetGuid"/>
/// <seealso cref="Windows10.Windows10Grbits.IndexCreateImmutableStructure"/>
[Flags]
public enum CreateIndexGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// Duplicate index entries (keys) are disallowed. This is enforced when JetUpdate is called,
/// not when JetSetColumn is called.
/// </summary>
IndexUnique = 0x1,
/// <summary>
/// The index is a primary (clustered) index. Every table must have exactly one primary index.
/// If no primary index is explicitly defined over a table, then the database engine will
/// create its own primary index.
/// </summary>
IndexPrimary = 0x2,
/// <summary>
/// None of the columns over which the index is created may contain a NULL value.
/// </summary>
IndexDisallowNull = 0x4,
/// <summary>
/// Do not add an index entry for a row if all of the columns being indexed are NULL.
/// </summary>
IndexIgnoreNull = 0x8,
/// <summary>
/// Do not add an index entry for a row if any of the columns being indexed are NULL.
/// </summary>
IndexIgnoreAnyNull = 0x20,
/// <summary>
/// Do not add an index entry for a row if the first column being indexed is NULL.
/// </summary>
IndexIgnoreFirstNull = 0x40,
/// <summary>
/// Specifies that the index operations will be logged lazily. JET_bitIndexLazyFlush does not
/// affect the laziness of data updates. If the indexing operations is interrupted by process
/// termination, Soft Recovery will still be able to able to get the database to a consistent
/// state, but the index may not be present.
/// </summary>
IndexLazyFlush = 0x80,
/// <summary>
/// Do not attempt to build the index, because all entries would evaluate to NULL. grbit MUST
/// also specify JET_bitIgnoreAnyNull when JET_bitIndexEmpty is passed. This is a performance
/// enhancement. For example if a new column is added to a table, then an index is created over
/// this newly added column, all of the records in the table would be scanned even though they
/// would never get added to the index anyway. Specifying JET_bitIndexEmpty skips the scanning
/// of the table, which could potentially take a long time.
/// </summary>
IndexEmpty = 0x100,
/// <summary>
/// Causes index creation to be visible to other transactions. Normally a session in a
/// transaction will not be able to see an index creation operation in another session. This
/// flag can be useful if another transaction is likely to create the same index, so that the
/// second index-create will simply fail instead of potentially causing many unnecessary database
/// operations. The second transaction may not be able to use the index immediately. The index
/// creation operation needs to complete before it is usable. The session must not currently be in
/// a transaction to create an index without version information.
/// </summary>
IndexUnversioned = 0x200,
/// <summary>
/// Specifying this flag causes NULL values to be sorted after data for all columns in the index.
/// </summary>
IndexSortNullsHigh = 0x400,
}
/// <summary>
/// Key definition grbits. Used when retrieving information about an index, contained
/// in the column specified in <see cref="JET_INDEXLIST.columnidgrbitColumn"/>.
/// </summary>
[Flags]
public enum IndexKeyGrbit
{
/// <summary>
/// Key segment is ascending.
/// </summary>
Ascending = 0x0,
/// <summary>
/// Key segment is descending.
/// </summary>
Descending = 0x1,
}
/// <summary>
/// Options for the <seealso cref="JET_CONDITIONALCOLUMN"/> structure.
/// </summary>
[Flags]
public enum ConditionalColumnGrbit
{
/// <summary>
/// The column must be null for an index entry to appear in the index.
/// </summary>
ColumnMustBeNull = 0x1,
/// <summary>
/// The column must be non-null for an index entry to appear in the index.
/// </summary>
ColumnMustBeNonNull = 0x2,
}
/// <summary>
/// Options for temporary table creation, with <see cref="Api.JetOpenTempTable"/>,
/// Api.JetOpenTempTable2, and <see cref="Api.JetOpenTempTable3"/>.
/// </summary>
/// <seealso cref="Server2003.Server2003Grbits.ForwardOnly"/>
/// <seealso cref="Windows7.Windows7Grbits.IntrinsicLVsOnly"/>
/// <seealso cref="Windows8.Windows8Grbits.TTDotNetGuid"/>
[Flags]
public enum TempTableGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// This option requests that the temporary table be flexible enough to
/// permit the use of JetSeek to lookup records by index key. If this
/// functionality it not required then it is best to not request it. If this
/// functionality is not requested then the temporary table manager may be
/// able to choose a strategy for managing the temporary table that will
/// result in improved performance.
/// </summary>
Indexed = 0x1,
/// <summary>
/// This option requests that records with duplicate index keys be removed
/// from the final set of records in the temporary table.
/// Prior to Windows Server 2003, the database engine always assumed this
/// option to be in effect due to the fact that all clustered indexes must
/// also be a primary key and thus must be unique. As of Windows Server
/// 2003, it is now possible to create a temporary table that does NOT
/// remove duplicates when the <see cref="Server2003.Server2003Grbits.ForwardOnly"/>
/// option is also specified.
/// It is not possible to know which duplicate will win and which duplicates
/// will be discarded in general. However, when the
/// <see cref="ErrorOnDuplicateInsertion"/> option is requested then the first
/// record with a given index key to be inserted into the temporary table
/// will always win.
/// </summary>
Unique = 0x2,
/// <summary>
/// This option requests that the temporary table be flexible enough to
/// allow records that have previously been inserted to be subsequently
/// changed. If this functionality it not required then it is best to not
/// request it. If this functionality is not requested then the temporary
/// table manager may be able to choose a strategy for managing the
/// temporary table that will result in improved performance.
/// </summary>
Updatable = 0x4,
/// <summary>
/// This option requests that the temporary table be flexible enough to
/// allow records to be scanned in arbitrary order and direction using
/// <see cref="Api.JetMove(JET_SESID,JET_TABLEID,int,MoveGrbit)"/>.
/// If this functionality it not required then it is best to not
/// request it. If this functionality is not requested then the temporary
/// table manager may be able to choose a strategy for managing the
/// temporary table that will result in improved performance.
/// </summary>
Scrollable = 0x8,
/// <summary>
/// This option requests that NULL key column values sort closer
/// to the end of the index than non-NULL key column values.
/// </summary>
SortNullsHigh = 0x10,
/// <summary>
/// This option forces the temporary table manager to abandon
/// any attempt to choose a clever strategy for managing the
/// temporary table that will result in enhanced performance.
/// </summary>
ForceMaterialization = 0x20,
/// <summary>
/// This option requests that any attempt to insert a record with the same
/// index key as a previously inserted record will immediately fail with
/// <see cref="JET_err.KeyDuplicate"/>. If this option is not requested then a duplicate
/// may be detected immediately and fail or may be silently removed later
/// depending on the strategy chosen by the database engine to implement the
/// temporary table based on the requested functionality. If this
/// functionality it not required then it is best to not request it. If this
/// functionality is not requested then the temporary table manager may be
/// able to choose a strategy for managing the temporary table that will
/// result in improved performance.
/// </summary>
ErrorOnDuplicateInsertion = 0x20,
}
/// <summary>
/// Options for <see cref="Api.JetDeleteColumn2"/>.
/// </summary>
[Flags]
public enum DeleteColumnGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
/// <summary>
/// The API should only attempt to delete columns in the derived table.
/// If a column of that name exists in the base table it will be ignored.
/// </summary>
IgnoreTemplateColumns = 0x1,
}
/// <summary>
/// Options for <see cref="Api.JetRenameColumn"/>.
/// </summary>
[Flags]
public enum RenameColumnGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK
/// <summary>
/// Options for <see cref="Api.JetSetColumnDefaultValue"/>.
/// </summary>
[Flags]
public enum SetColumnDefaultValueGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0,
}
/// <summary>
/// Options for <see cref="Api.JetIdle"/>.
/// </summary>
[Flags]
public enum IdleGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// Reserved for future use. If this flag is specified, the API will return <see cref="JET_err.InvalidGrbit"/>.
/// </summary>
FlushBuffers = 0x01,
/// <summary>Triggers cleanup of the version store.</summary>
Compact = 0x02,
/// <summary>
/// Returns <see cref="JET_wrn.IdleFull"/> if version store is more than half full.
/// </summary>
GetStatus = 0x04,
}
#endif // !MANAGEDESENT_ON_WSA
/// <summary>
/// Options for <see cref="Api.JetDefragment"/>.
/// </summary>
/// <seealso cref="Windows7.Windows7Grbits.NoPartialMerges"/>
/// <seealso cref="Windows7.Windows7Grbits.DefragmentBTree"/>
[Flags]
public enum DefragGrbit
{
/// <summary>
/// Defragments the available space portion of ESE database space
/// allocation. Database space is divided into two types, owned
/// space and available space. Owned space is allocated to a table
/// or index while available space is ready for use within the table
/// or index, respectively. Available space is much more dynamic in
/// behavior and requires on-line defragmentation more so than owned
/// space or table or index data.
/// </summary>
AvailSpaceTreesOnly = 0x40,
/// <summary>
/// Starts a new defragmentation task.
/// </summary>
BatchStart = 0x1,
/// <summary>
/// Stops a defragmentation task.
/// </summary>
BatchStop = 0x2,
}
/// <summary>
/// Grbits for the various Api.JetGetColumnInfo and Api.JetGetTableColumnInfo
/// overloads.
/// </summary>
/// <remarks>
/// Internally this value is OR'ed together with the
/// <see cref="JET_ColInfo"/> info level. The info level is not publically exposed
/// in this CLR code because it's only used to differentiate the type of the output
/// parameter, which is covered by having explicit function overloads with different
/// signatures. There is no need to expose JET_ColInfo to CLR.
/// </remarks>
[Flags]
public enum ColInfoGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
/// <summary>
/// For lists (example: <see cref="JET_ColInfo.List"/>), only return
/// non-derived columns (if the table is derived from a template).
/// </summary>
/// <remarks>This value is 0x80000000.</remarks>
NonDerivedColumnsOnly = int.MinValue,
/// <summary>
/// For lists (example: <see cref="JET_ColInfo.List"/>), only return
/// the column name and columnid of each column.
/// </summary>
MinimalInfo = 0x40000000,
/// <summary>
/// For lists (example: <see cref="JET_ColInfo.List"/>), sort
/// returned column list by columnid (the default is to sort list by column name).
/// </summary>
SortByColumnid = 0x20000000,
}
/// <summary>
/// Options for <see cref="JET_SPACEHINTS"/>.
/// </summary>
[Flags]
public enum SpaceHintsGrbit
{
/// <summary>
/// Default options.
/// </summary>
None = 0x0,
// Generic bits.
/// <summary>
/// This changes the internal allocation policy to get space hierarchically
/// from a B-Tree's immediate parent.
/// </summary>
SpaceHintUtilizeParentSpace = 0x00000001,
// Create bits.
/// <summary>
/// This bit will enable Append split behavior to grow according to the
/// growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent).
/// </summary>
CreateHintAppendSequential = 0x00000002,
/// <summary>
/// This bit will enable Hotpoint split behavior to grow according to the
/// growth dynamics of the table (set by cbMinExtent, ulGrowth, cbMaxExtent).
/// </summary>
CreateHintHotpointSequential = 0x00000004,
// Retrieve bits.
/// <summary>
/// Reserved and ignored.
/// </summary>
RetrieveHintReserve1 = 0x00000008,
/// <summary>
/// By setting this the client indicates that forward sequential scan is
/// the predominant usage pattern of this table (causing B+ Tree defrag to
/// be auto-triggered to clean it up if fragmented).
/// </summary>
RetrieveHintTableScanForward = 0x00000010,
/// <summary>
/// By setting this the client indicates that backwards sequential scan
/// is the predominant usage pattern of this table(causing B+ Tree defrag to
/// be auto-triggered to clean it up if fragmented).
/// </summary>
RetrieveHintTableScanBackward = 0x00000020,
/// <summary>
/// Reserved and ignored.
/// </summary>
RetrieveHintReserve2 = 0x00000040,
/// <summary>
/// Reserved and ignored.
/// </summary>
RetrieveHintReserve3 = 0x00000080,
// Delete bits.
/// <summary>
/// The application expects this table to be cleaned up in-order
/// sequentially (from lowest key to highest key).
/// </summary>
DeleteHintTableSequential = 0x00000100,
}
}