diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2014-03-20 12:05:47 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2014-03-20 12:05:47 +0100 |
commit | 7b400a088d049661b9a4dded385ac78923bb0017 (patch) | |
tree | bb3ee7bac4454f66ec6f38cf6683f24bc6c065d4 /storage/connect/tabdos.h | |
parent | d67ad26b33ea16a3b59215ef967bdd9b89345e04 (diff) | |
parent | e5729127b8a50a0e553fd8b87b2683e4a684dfcc (diff) | |
download | mariadb-git-7b400a088d049661b9a4dded385ac78923bb0017.tar.gz |
- MRR + Block Indexing
modified:
storage/connect/array.h
storage/connect/catalog.h
storage/connect/colblk.cpp
storage/connect/colblk.h
storage/connect/connect.cc
storage/connect/connect.h
storage/connect/domdoc.h
storage/connect/filamap.cpp
storage/connect/filamap.h
storage/connect/filamdbf.h
storage/connect/filamfix.cpp
storage/connect/filamfix.h
storage/connect/filamtxt.cpp
storage/connect/filamtxt.h
storage/connect/filamvct.cpp
storage/connect/filamvct.h
storage/connect/filamzip.cpp
storage/connect/filamzip.h
storage/connect/filter.cpp
storage/connect/filter.h
storage/connect/global.h
storage/connect/ha_connect.cc
storage/connect/ha_connect.h
storage/connect/myconn.h
storage/connect/plgcnx.h
storage/connect/plgdbsem.h
storage/connect/plgdbutl.cpp
storage/connect/plugutil.c
storage/connect/preparse.h
storage/connect/reldef.cpp
storage/connect/reldef.h
storage/connect/tabcol.h
storage/connect/tabdos.cpp
storage/connect/tabdos.h
storage/connect/tabfix.cpp
storage/connect/tabfmt.cpp
storage/connect/tabfmt.h
storage/connect/table.cpp
storage/connect/tabmysql.cpp
storage/connect/tabmysql.h
storage/connect/taboccur.h
storage/connect/tabodbc.h
storage/connect/tabsys.h
storage/connect/tabtbl.h
storage/connect/tabutil.h
storage/connect/tabvct.cpp
storage/connect/tabvct.h
storage/connect/tabwmi.h
storage/connect/tabxml.h
storage/connect/user_connect.cc
storage/connect/user_connect.h
storage/connect/valblk.cpp
storage/connect/valblk.h
storage/connect/value.cpp
storage/connect/value.h
storage/connect/xindex.cpp
storage/connect/xindex.h
storage/connect/xobject.cpp
storage/connect/xobject.h
storage/connect/xtable.h
Diffstat (limited to 'storage/connect/tabdos.h')
-rw-r--r-- | storage/connect/tabdos.h | 539 |
1 files changed, 253 insertions, 286 deletions
diff --git a/storage/connect/tabdos.h b/storage/connect/tabdos.h index 52bb1450c29..a175cc32ec9 100644 --- a/storage/connect/tabdos.h +++ b/storage/connect/tabdos.h @@ -1,286 +1,253 @@ -/*************** TabDos H Declares Source Code File (.H) ***************/ -/* Name: TABDOS.H Version 3.3 */ -/* */ -/* (C) Copyright to the author Olivier BERTRAND 1999-2014 */ -/* */ -/* This file contains the DOS classes declares. */ -/***********************************************************************/ - -#ifndef __TABDOS_H -#define __TABDOS_H - -#include "xtable.h" // Table base class declares -#include "colblk.h" // Column base class declares -#include "xindex.h" -#if defined(BLK_INDX) -#include "filter.h" -#endif // BLK_INDX - -//pedef struct _tabdesc *PTABD; // For friend setting -typedef class TXTFAM *PTXF; -#if defined(BLK_INDX) -typedef class BLOCKFILTER *PBF; -typedef class BLOCKINDEX *PBX; -#endif // BLK_INDX - -/***********************************************************************/ -/* DOS table. */ -/***********************************************************************/ -class DllExport DOSDEF : public TABDEF { /* Logical table description */ - friend class OEMDEF; - friend class TDBDOS; - friend class TDBFIX; - friend class TXTFAM; - friend class DBFBASE; - public: - // Constructor - DOSDEF(void); - - // Implementation - virtual AMT GetDefType(void) {return TYPE_AM_DOS;} - virtual const char *GetType(void) {return "DOS";} - virtual PIXDEF GetIndx(void) {return To_Indx;} - virtual void SetIndx(PIXDEF xdp) {To_Indx = xdp;} - virtual bool IsHuge(void) {return Huge;} - PSZ GetFn(void) {return Fn;} - PSZ GetOfn(void) {return Ofn;} - void SetBlock(int block) {Block = block;} - int GetBlock(void) {return Block;} - int GetLast(void) {return Last;} - void SetLast(int last) {Last = last;} - int GetLrecl(void) {return Lrecl;} - void SetLrecl(int lrecl) {Lrecl = lrecl;} - bool GetPadded(void) {return Padded;} - bool GetEof(void) {return Eof;} - int GetBlksize(void) {return Blksize;} - int GetEnding(void) {return Ending;} -#if defined(BLK_INDX) - bool IsOptimized(void) {return (Optimized == 1);} - void SetOptimized(int opt) {Optimized = opt;} - void SetAllocBlks(int blks) {AllocBlks = blks;} - int GetAllocBlks(void) {return AllocBlks;} - int *GetTo_Pos(void) {return To_Pos;} -#endif // BLK_INDX - - // Methods -//virtual bool DeleteTableFile(PGLOBAL g); - virtual bool Indexable(void) {return Compressed != 1;} - virtual bool DeleteIndexFile(PGLOBAL g, PIXDEF pxdf); - virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff); - virtual PTDB GetTable(PGLOBAL g, MODE mode); - bool InvalidateIndex(PGLOBAL g); -#if defined(BLK_INDX) - bool GetOptFileName(PGLOBAL g, char *filename); - void RemoveOptValues(PGLOBAL g); -#endif // BLK_INDX - - protected: -//virtual bool Erase(char *filename); - - // Members - PSZ Fn; /* Path/Name of corresponding file */ - PSZ Ofn; /* Base Path/Name of matching index files*/ - PIXDEF To_Indx; /* To index definitions blocks */ - RECFM Recfm; /* 0:VAR, 1:FIX, 2:BIN, 3:VCT, 6:DBF */ - bool Mapped; /* 0: disk file, 1: memory mapped file */ - bool Padded; /* true for padded table file */ - bool Huge; /* true for files larger than 2GB */ - bool Accept; /* true if wrong lines are accepted (DBF)*/ - bool Eof; /* true if an EOF (0xA) character exists */ -#if defined(BLK_INDX) - int *To_Pos; /* To array of block starting positions */ - int Optimized; /* 0: No, 1:Yes, 2:Redo optimization */ - int AllocBlks; /* Number of suballocated opt blocks */ -#endif // BLK_INDX - int Compressed; /* 0: No, 1: gz, 2:zlib compressed file */ - int Lrecl; /* Size of biggest record */ - int AvgLen; /* Average size of records */ - int Block; /* Number de blocks of FIX/VCT tables */ - int Last; /* Number of elements of last block */ - int Blksize; /* Size of padded blocks */ - int Maxerr; /* Maximum number of bad records (DBF) */ - int ReadMode; /* Specific to DBF */ - int Ending; /* Length of end of lines */ - }; // end of DOSDEF - -/***********************************************************************/ -/* This is the DOS/UNIX Access Method class declaration for files */ -/* that are standard files with columns starting at fixed offset. */ -/* The last column (and record) is of variable length. */ -/***********************************************************************/ -class DllExport TDBDOS : public TDBASE { -//friend class KINDEX; - friend class XINDEX; - friend class DOSCOL; - friend class MAPCOL; - friend class TXTFAM; - friend class DOSFAM; - friend class VCTCOL; -//friend class TDBMUL; - friend RCODE CntDeleteRow(PGLOBAL, PTDB, bool); - public: - // Constructors - TDBDOS(PDOSDEF tdp, PTXF txfp); - TDBDOS(PGLOBAL g, PTDBDOS tdbp); - - // Inline functions - inline void SetTxfp(PTXF txfp) {Txfp = txfp; Txfp->SetTdbp(this);} - inline PTXF GetTxfp(void) {return Txfp;} - inline char *GetLine(void) {return To_Line;} - inline int GetCurBlk(void) {return Txfp->GetCurBlk();} - inline void SetLine(char *toline) {To_Line = toline;} - inline void IncLine(int inc) {To_Line += inc;} - inline bool IsRead(void) {return Txfp->IsRead;} - inline PXOB *GetLink(void) {return To_Link;} -//inline PCOL *GetKeyCol(void) {return To_Key_Col;} - - // Implementation - virtual AMT GetAmType(void) {return Txfp->GetAmType();} - virtual PSZ GetFile(PGLOBAL g) {return Txfp->To_File;} - virtual void SetFile(PGLOBAL g, PSZ fn) {Txfp->To_File = fn;} - virtual RECFM GetFtype(void) {return Ftype;} - virtual bool SkipHeader(PGLOBAL g) {return false;} - virtual void RestoreNrec(void) {Txfp->SetNrec(1);} - virtual PTDB Duplicate(PGLOBAL g) - {return (PTDB)new(g) TDBDOS(g, this);} - - // Methods - virtual PTDB CopyOne(PTABS t); - virtual void ResetDB(void) {Txfp->Reset();} - virtual bool IsUsingTemp(PGLOBAL g); -//virtual bool NeedIndexing(PGLOBAL g); - virtual void ResetSize(void) {MaxSize = Cardinal = -1;} - virtual int ResetTableOpt(PGLOBAL g, bool dop, bool dox); -#if defined(BLK_INDX) - virtual int MakeBlockValues(PGLOBAL g); - virtual bool SaveBlockValues(PGLOBAL g); - virtual bool GetBlockValues(PGLOBAL g); - virtual PBF InitBlockFilter(PGLOBAL g, PFIL filp); -//virtual PBX InitBlockIndex(PGLOBAL g); - virtual int TestBlock(PGLOBAL g); -#endif // BLK_INDX - virtual void PrintAM(FILE *f, char *m); - - // Database routines - virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n); - virtual char *GetOpenMode(PGLOBAL g, char *opmode) {return NULL;} - virtual int GetFileLength(PGLOBAL g) {return Txfp->GetFileLength(g);} - virtual int GetProgMax(PGLOBAL g); - virtual int GetProgCur(void); - virtual int GetAffectedRows(void) {return Txfp->GetDelRows();} - virtual int GetRecpos(void) {return Txfp->GetPos();} - virtual bool SetRecpos(PGLOBAL g, int recpos) - {return Txfp->SetPos(g, recpos);} - virtual int RowNumber(PGLOBAL g, bool b = false); - virtual int Cardinality(PGLOBAL g); - virtual int GetMaxSize(PGLOBAL g); - virtual bool OpenDB(PGLOBAL g); - virtual int ReadDB(PGLOBAL g); - virtual int WriteDB(PGLOBAL g); - virtual int DeleteDB(PGLOBAL g, int irc); - virtual void CloseDB(PGLOBAL g); - virtual int ReadBuffer(PGLOBAL g) {return Txfp->ReadBuffer(g);} - - // Specific routine - virtual int EstimatedLength(PGLOBAL g); - - // Optimization routines - int MakeIndex(PGLOBAL g, PIXDEF pxdf, bool add); -#if defined(BLK_INDX) - void ResetBlockFilter(PGLOBAL g); - bool GetDistinctColumnValues(PGLOBAL g, int nrec); - - protected: - PBF CheckBlockFilari(PGLOBAL g, PXOB *arg, int op, bool *cnv); -#endif // BLK_INDX - - // Members - PTXF Txfp; // To the File access method class -#if defined(BLK_INDX) -//PBX To_BlkIdx; // To index test block - PBF To_BlkFil; // To evaluation block filter - PFIL SavFil; // Saved hidden filter -#endif // BLK_INDX - char *To_Line; // Points to current processed line - int Cardinal; // Table Cardinality - RECFM Ftype; // File type: 0-var 1-fixed 2-binary (VCT) - int Lrecl; // Logical Record Length - int AvgLen; // Logical Record Average Length -#if defined(BLK_INDX) -//int Xeval; // BlockTest return value - int Beval; // BlockEval return value -#endif // BLK_INDX - }; // end of class TDBDOS - -/***********************************************************************/ -/* Class DOSCOL: DOS access method column descriptor. */ -/* This A.M. is used for text file tables under operating systems */ -/* DOS, OS2, UNIX, WIN16 and WIN32. */ -/***********************************************************************/ -class DllExport DOSCOL : public COLBLK { - friend class TDBDOS; - friend class TDBFIX; - public: - // Constructors - DOSCOL(PGLOBAL g, PCOLDEF cdp, PTDB tp, PCOL cp, int i, PSZ am = "DOS"); - DOSCOL(DOSCOL *colp, PTDB tdbp); // Constructor used in copy process - - // Implementation - virtual int GetAmType(void) {return TYPE_AM_DOS;} - virtual void SetTo_Val(PVAL valp) {To_Val = valp;} -#if defined(BLK_INDX) - virtual int GetClustered(void) {return Clustered;} - virtual int IsClustered(void) {return (Clustered && - ((PDOSDEF)(((PTDBDOS)To_Tdb)->To_Def))->IsOptimized());} - virtual int IsSorted(void) {return Sorted;} - virtual PVBLK GetMin(void) {return Min;} - virtual PVBLK GetMax(void) {return Max;} - virtual int GetNdv(void) {return Ndv;} - virtual int GetNbm(void) {return Nbm;} - virtual PVBLK GetBmap(void) {return Bmap;} - virtual PVBLK GetDval(void) {return Dval;} -#endif // BLK_INDX - - // Methods -#if defined(BLK_INDX) - virtual bool VarSize(void); -#endif // BLK_INDX - virtual bool SetBuffer(PGLOBAL g, PVAL value, bool ok, bool check); - virtual void ReadColumn(PGLOBAL g); - virtual void WriteColumn(PGLOBAL g); - virtual void Print(PGLOBAL g, FILE *, uint); - - protected: -#if defined(BLK_INDX) - virtual bool SetMinMax(PGLOBAL g); - virtual bool SetBitMap(PGLOBAL g); - bool CheckSorted(PGLOBAL g); - bool AddDistinctValue(PGLOBAL g); -#endif // BLK_INDX - - // Default constructor not to be used - DOSCOL(void) {} - - // Members -#if defined(BLK_INDX) - PVBLK Min; // Array of block min values - PVBLK Max; // Array of block max values - PVBLK Bmap; // Array of block bitmap values - PVBLK Dval; // Array of column distinct values -#endif // BLK_INDX - PVAL To_Val; // To value used for Update/Insert - PVAL OldVal; // The previous value of the object. - char *Buf; // Buffer used in write operations - bool Ldz; // True if field contains leading zeros - bool Nod; // True if no decimal point - int Dcm; // Last Dcm digits are decimals - int Deplac; // Offset in dos_buf -#if defined(BLK_INDX) - int Clustered; // 0:No 1:Yes - int Sorted; // 0:No 1:Asc (2:Desc - NIY) - int Ndv; // Number of distinct values - int Nbm; // Number of uint in bitmap -#endif // BLK_INDX - }; // end of class DOSCOL - -#endif // __TABDOS_H +/*************** TabDos H Declares Source Code File (.H) ***************/
+/* Name: TABDOS.H Version 3.3 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 1999-2014 */
+/* */
+/* This file contains the DOS classes declares. */
+/***********************************************************************/
+
+#ifndef __TABDOS_H
+#define __TABDOS_H
+
+#include "xtable.h" // Table base class declares
+#include "colblk.h" // Column base class declares
+#include "xindex.h"
+#include "filter.h"
+
+//pedef struct _tabdesc *PTABD; // For friend setting
+typedef class TXTFAM *PTXF;
+typedef class BLOCKFILTER *PBF;
+typedef class BLOCKINDEX *PBX;
+
+/***********************************************************************/
+/* DOS table. */
+/***********************************************************************/
+class DllExport DOSDEF : public TABDEF { /* Logical table description */
+ friend class OEMDEF;
+ friend class TDBDOS;
+ friend class TDBFIX;
+ friend class TXTFAM;
+ friend class DBFBASE;
+ public:
+ // Constructor
+ DOSDEF(void);
+
+ // Implementation
+ virtual AMT GetDefType(void) {return TYPE_AM_DOS;}
+ virtual const char *GetType(void) {return "DOS";}
+ virtual PIXDEF GetIndx(void) {return To_Indx;}
+ virtual void SetIndx(PIXDEF xdp) {To_Indx = xdp;}
+ virtual bool IsHuge(void) {return Huge;}
+ PSZ GetFn(void) {return Fn;}
+ PSZ GetOfn(void) {return Ofn;}
+ void SetBlock(int block) {Block = block;}
+ int GetBlock(void) {return Block;}
+ int GetLast(void) {return Last;}
+ void SetLast(int last) {Last = last;}
+ int GetLrecl(void) {return Lrecl;}
+ void SetLrecl(int lrecl) {Lrecl = lrecl;}
+ bool GetPadded(void) {return Padded;}
+ bool GetEof(void) {return Eof;}
+ int GetBlksize(void) {return Blksize;}
+ int GetEnding(void) {return Ending;}
+ bool IsOptimized(void) {return (Optimized == 1);}
+ void SetOptimized(int opt) {Optimized = opt;}
+ void SetAllocBlks(int blks) {AllocBlks = blks;}
+ int GetAllocBlks(void) {return AllocBlks;}
+ int *GetTo_Pos(void) {return To_Pos;}
+
+ // Methods
+ virtual bool Indexable(void) {return Compressed != 1;}
+ virtual bool DeleteIndexFile(PGLOBAL g, PIXDEF pxdf);
+ virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
+ virtual PTDB GetTable(PGLOBAL g, MODE mode);
+ bool InvalidateIndex(PGLOBAL g);
+ bool GetOptFileName(PGLOBAL g, char *filename);
+ void RemoveOptValues(PGLOBAL g);
+
+ protected:
+//virtual bool Erase(char *filename);
+
+ // Members
+ PSZ Fn; /* Path/Name of corresponding file */
+ PSZ Ofn; /* Base Path/Name of matching index files*/
+ PIXDEF To_Indx; /* To index definitions blocks */
+ RECFM Recfm; /* 0:VAR, 1:FIX, 2:BIN, 3:VCT, 6:DBF */
+ bool Mapped; /* 0: disk file, 1: memory mapped file */
+ bool Padded; /* true for padded table file */
+ bool Huge; /* true for files larger than 2GB */
+ bool Accept; /* true if wrong lines are accepted (DBF)*/
+ bool Eof; /* true if an EOF (0xA) character exists */
+ int *To_Pos; /* To array of block starting positions */
+ int Optimized; /* 0: No, 1:Yes, 2:Redo optimization */
+ int AllocBlks; /* Number of suballocated opt blocks */
+ int Compressed; /* 0: No, 1: gz, 2:zlib compressed file */
+ int Lrecl; /* Size of biggest record */
+ int AvgLen; /* Average size of records */
+ int Block; /* Number de blocks of FIX/VCT tables */
+ int Last; /* Number of elements of last block */
+ int Blksize; /* Size of padded blocks */
+ int Maxerr; /* Maximum number of bad records (DBF) */
+ int ReadMode; /* Specific to DBF */
+ int Ending; /* Length of end of lines */
+ }; // end of DOSDEF
+
+/***********************************************************************/
+/* This is the DOS/UNIX Access Method class declaration for files */
+/* that are standard files with columns starting at fixed offset. */
+/* The last column (and record) is of variable length. */
+/***********************************************************************/
+class DllExport TDBDOS : public TDBASE {
+ friend class XINDEX;
+ friend class DOSCOL;
+ friend class MAPCOL;
+ friend class TXTFAM;
+ friend class DOSFAM;
+ friend class VCTCOL;
+ friend RCODE CntDeleteRow(PGLOBAL, PTDB, bool);
+ public:
+ // Constructors
+ TDBDOS(PDOSDEF tdp, PTXF txfp);
+ TDBDOS(PGLOBAL g, PTDBDOS tdbp);
+
+ // Inline functions
+ inline void SetTxfp(PTXF txfp) {Txfp = txfp; Txfp->SetTdbp(this);}
+ inline PTXF GetTxfp(void) {return Txfp;}
+ inline char *GetLine(void) {return To_Line;}
+ inline int GetCurBlk(void) {return Txfp->GetCurBlk();}
+ inline void SetLine(char *toline) {To_Line = toline;}
+ inline void IncLine(int inc) {To_Line += inc;}
+ inline bool IsRead(void) {return Txfp->IsRead;}
+ inline PXOB *GetLink(void) {return To_Link;}
+
+ // Implementation
+ virtual AMT GetAmType(void) {return Txfp->GetAmType();}
+ virtual PSZ GetFile(PGLOBAL g) {return Txfp->To_File;}
+ virtual void SetFile(PGLOBAL g, PSZ fn) {Txfp->To_File = fn;}
+ virtual RECFM GetFtype(void) {return Ftype;}
+ virtual bool SkipHeader(PGLOBAL g) {return false;}
+ virtual void RestoreNrec(void) {Txfp->SetNrec(1);}
+ virtual PTDB Duplicate(PGLOBAL g)
+ {return (PTDB)new(g) TDBDOS(g, this);}
+
+ // Methods
+ virtual PTDB CopyOne(PTABS t);
+ virtual void ResetDB(void) {Txfp->Reset();}
+ virtual bool IsUsingTemp(PGLOBAL g);
+ virtual void ResetSize(void) {MaxSize = Cardinal = -1;}
+ virtual int ResetTableOpt(PGLOBAL g, bool dop, bool dox);
+ virtual int MakeBlockValues(PGLOBAL g);
+ virtual bool SaveBlockValues(PGLOBAL g);
+ virtual bool GetBlockValues(PGLOBAL g);
+ virtual PBF InitBlockFilter(PGLOBAL g, PFIL filp);
+//virtual PBX InitBlockIndex(PGLOBAL g);
+ virtual int TestBlock(PGLOBAL g);
+ virtual void PrintAM(FILE *f, char *m);
+
+ // Database routines
+ virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
+ virtual char *GetOpenMode(PGLOBAL g, char *opmode) {return NULL;}
+ virtual int GetFileLength(PGLOBAL g) {return Txfp->GetFileLength(g);}
+ virtual int GetProgMax(PGLOBAL g);
+ virtual int GetProgCur(void);
+ virtual int GetAffectedRows(void) {return Txfp->GetDelRows();}
+ virtual int GetRecpos(void) {return Txfp->GetPos();}
+ virtual bool SetRecpos(PGLOBAL g, int recpos)
+ {return Txfp->SetPos(g, recpos);}
+ virtual int RowNumber(PGLOBAL g, bool b = false);
+ virtual int Cardinality(PGLOBAL g);
+ virtual int GetMaxSize(PGLOBAL g);
+ virtual bool OpenDB(PGLOBAL g);
+ virtual int ReadDB(PGLOBAL g);
+ virtual int WriteDB(PGLOBAL g);
+ virtual int DeleteDB(PGLOBAL g, int irc);
+ virtual void CloseDB(PGLOBAL g);
+ virtual int ReadBuffer(PGLOBAL g) {return Txfp->ReadBuffer(g);}
+
+ // Specific routine
+ virtual int EstimatedLength(PGLOBAL g);
+
+ // Optimization routines
+ int MakeIndex(PGLOBAL g, PIXDEF pxdf, bool add);
+ void ResetBlockFilter(PGLOBAL g);
+ bool GetDistinctColumnValues(PGLOBAL g, int nrec);
+
+ protected:
+ PBF CheckBlockFilari(PGLOBAL g, PXOB *arg, int op, bool *cnv);
+
+ // Members
+ PTXF Txfp; // To the File access method class
+//PBX To_BlkIdx; // To index test block
+ PBF To_BlkFil; // To evaluation block filter
+ PFIL SavFil; // Saved hidden filter
+ char *To_Line; // Points to current processed line
+ int Cardinal; // Table Cardinality
+ RECFM Ftype; // File type: 0-var 1-fixed 2-binary (VCT)
+ int Lrecl; // Logical Record Length
+ int AvgLen; // Logical Record Average Length
+//int Xeval; // BlockTest return value
+ int Beval; // BlockEval return value
+ }; // end of class TDBDOS
+
+/***********************************************************************/
+/* Class DOSCOL: DOS access method column descriptor. */
+/* This A.M. is used for text file tables under operating systems */
+/* DOS, OS2, UNIX, WIN16 and WIN32. */
+/***********************************************************************/
+class DllExport DOSCOL : public COLBLK {
+ friend class TDBDOS;
+ friend class TDBFIX;
+ public:
+ // Constructors
+ DOSCOL(PGLOBAL g, PCOLDEF cdp, PTDB tp, PCOL cp, int i, PSZ am = "DOS");
+ DOSCOL(DOSCOL *colp, PTDB tdbp); // Constructor used in copy process
+
+ // Implementation
+ virtual int GetAmType(void) {return TYPE_AM_DOS;}
+ virtual void SetTo_Val(PVAL valp) {To_Val = valp;}
+ virtual int GetClustered(void) {return Clustered;}
+ virtual int IsClustered(void) {return (Clustered &&
+ ((PDOSDEF)(((PTDBDOS)To_Tdb)->To_Def))->IsOptimized());}
+ virtual int IsSorted(void) {return Sorted;}
+ virtual PVBLK GetMin(void) {return Min;}
+ virtual PVBLK GetMax(void) {return Max;}
+ virtual int GetNdv(void) {return Ndv;}
+ virtual int GetNbm(void) {return Nbm;}
+ virtual PVBLK GetBmap(void) {return Bmap;}
+ virtual PVBLK GetDval(void) {return Dval;}
+
+ // Methods
+ virtual bool VarSize(void);
+ virtual bool SetBuffer(PGLOBAL g, PVAL value, bool ok, bool check);
+ virtual void ReadColumn(PGLOBAL g);
+ virtual void WriteColumn(PGLOBAL g);
+ virtual void Print(PGLOBAL g, FILE *, uint);
+
+ protected:
+ virtual bool SetMinMax(PGLOBAL g);
+ virtual bool SetBitMap(PGLOBAL g);
+ bool CheckSorted(PGLOBAL g);
+ bool AddDistinctValue(PGLOBAL g);
+
+ // Default constructor not to be used
+ DOSCOL(void) {}
+
+ // Members
+ PVBLK Min; // Array of block min values
+ PVBLK Max; // Array of block max values
+ PVBLK Bmap; // Array of block bitmap values
+ PVBLK Dval; // Array of column distinct values
+ PVAL To_Val; // To value used for Update/Insert
+ PVAL OldVal; // The previous value of the object.
+ char *Buf; // Buffer used in write operations
+ bool Ldz; // True if field contains leading zeros
+ bool Nod; // True if no decimal point
+ int Dcm; // Last Dcm digits are decimals
+ int Deplac; // Offset in dos_buf
+ int Clustered; // 0:No 1:Yes
+ int Sorted; // 0:No 1:Asc (2:Desc - NIY)
+ int Ndv; // Number of distinct values
+ int Nbm; // Number of uint in bitmap
+ }; // end of class DOSCOL
+
+#endif // __TABDOS_H
|