2013-02-07 10:34:27 +01:00
|
|
|
/*************** RelDef H Declares Source Code File (.H) ***************/
|
|
|
|
/* Name: RELDEF.H Version 1.3 */
|
|
|
|
/* */
|
|
|
|
/* (C) Copyright to the author Olivier BERTRAND 2004-2012 */
|
|
|
|
/* */
|
|
|
|
/* This file contains the DEF classes definitions. */
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
#ifndef __RELDEF_H
|
|
|
|
#define __RELDEF_H
|
|
|
|
|
|
|
|
#include "block.h"
|
|
|
|
#include "catalog.h"
|
2013-02-18 16:21:52 +01:00
|
|
|
#include "my_sys.h"
|
2013-02-07 10:34:27 +01:00
|
|
|
|
|
|
|
typedef class INDEXDEF *PIXDEF;
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Table or View (relation) definition block. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport RELDEF : public BLOCK { // Relation definition block
|
|
|
|
friend class CATALOG;
|
|
|
|
friend class PLUGCAT;
|
|
|
|
friend class MYCAT;
|
|
|
|
public:
|
|
|
|
RELDEF(void); // Constructor
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
PRELDEF GetNext(void) {return Next;}
|
|
|
|
PSZ GetName(void) {return Name;}
|
|
|
|
PSZ GetDB(void) {return (PSZ)Database;}
|
|
|
|
PCOLDEF GetCols(void) {return To_Cols;}
|
|
|
|
void SetCols(PCOLDEF pcd) {To_Cols = pcd;}
|
|
|
|
PCATLG GetCat(void) {return Cat;}
|
|
|
|
virtual const char *GetType(void) = 0;
|
|
|
|
virtual AMT GetDefType(void) = 0;
|
2013-04-19 20:35:43 +02:00
|
|
|
void SetName(const char *str) { Name=(char*)str; }
|
|
|
|
void SetCat(PCATLG cat) { Cat=cat; }
|
2013-02-07 10:34:27 +01:00
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual bool DeleteTableFile(PGLOBAL g) {return true;}
|
|
|
|
virtual bool Indexable(void) {return false;}
|
|
|
|
virtual bool Define(PGLOBAL g, PCATLG cat, LPCSTR name, LPCSTR am) = 0;
|
|
|
|
virtual PTDB GetTable(PGLOBAL g, MODE mode) = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PRELDEF Next; /* To next definition block */
|
|
|
|
PSZ Name; /* Name of the view */
|
|
|
|
LPCSTR Database; /* Table database */
|
|
|
|
PCOLDEF To_Cols; /* To a list of column desc */
|
|
|
|
PCATLG Cat; /* To DB catalog info */
|
|
|
|
}; // end of RELDEF
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* These classes correspond to the data base description contained in */
|
|
|
|
/* a .XDB file the A.M. DOS, FIX, CSV, MAP, BIN, VCT, PLG, ODBC, DOM. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport TABDEF : public RELDEF { /* Logical table descriptor */
|
|
|
|
friend class CATALOG;
|
|
|
|
friend class PLUGCAT;
|
|
|
|
friend class MYCAT;
|
|
|
|
public:
|
|
|
|
// Constructor
|
|
|
|
TABDEF(void); // Constructor
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
int GetDegree(void) {return Degree;}
|
|
|
|
void SetDegree(int d) {Degree = d;}
|
|
|
|
int GetElemt(void) {return Elemt;}
|
|
|
|
void SetNext(PTABDEF tdfp) {Next = tdfp;}
|
|
|
|
int GetMultiple(void) {return Multiple;}
|
|
|
|
int GetPseudo(void) {return Pseudo;}
|
|
|
|
PSZ GetPath(void)
|
|
|
|
{return (Database) ? (PSZ)Database : Cat->GetDataPath();}
|
2013-03-25 11:07:45 +01:00
|
|
|
bool SepIndex(void) {return Cat->GetBoolCatInfo("SepIndex", false);}
|
2013-02-07 10:34:27 +01:00
|
|
|
bool IsReadOnly(void) {return Read_Only;}
|
|
|
|
virtual AMT GetDefType(void) {return TYPE_AM_TAB;}
|
|
|
|
virtual PIXDEF GetIndx(void) {return NULL;}
|
|
|
|
virtual void SetIndx(PIXDEF xp) {}
|
|
|
|
virtual bool IsHuge(void) {return false;}
|
2013-03-02 22:30:40 +01:00
|
|
|
const CHARSET_INFO *data_charset() {return m_data_charset;}
|
2013-02-07 10:34:27 +01:00
|
|
|
|
|
|
|
// Methods
|
|
|
|
bool DropTable(PGLOBAL g, PSZ name);
|
|
|
|
virtual bool Define(PGLOBAL g, PCATLG cat, LPCSTR name, LPCSTR am);
|
|
|
|
virtual bool DefineAM(PGLOBAL, LPCSTR, int) = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
// Members
|
|
|
|
PSZ Owner; /* Table owner (for ODBC) */
|
|
|
|
PSZ Desc; /* Table description */
|
2013-02-12 12:34:14 +01:00
|
|
|
uint Catfunc; /* Catalog function ID */
|
2013-02-07 10:34:27 +01:00
|
|
|
int Card; /* (max) number of rows in table */
|
|
|
|
int Elemt; /* Number of rows in blocks or rowset */
|
|
|
|
int Sort; /* Table already sorted ??? */
|
|
|
|
int Multiple; /* 0: No 1: DIR 2: Section 3: filelist */
|
|
|
|
int Degree; /* Number of columns in the table */
|
|
|
|
int Pseudo; /* Bit: 1 ROWID Ok, 2 FILEID Ok */
|
|
|
|
bool Read_Only; /* true for read only tables */
|
2013-02-18 16:21:52 +01:00
|
|
|
const CHARSET_INFO *m_data_charset;
|
2013-02-07 10:34:27 +01:00
|
|
|
}; // end of TABDEF
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Externally defined OEM tables. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport OEMDEF : public TABDEF { /* OEM table */
|
|
|
|
friend class CATALOG;
|
|
|
|
friend class PLUGCAT;
|
|
|
|
friend class MYCAT;
|
|
|
|
public:
|
|
|
|
// Constructor
|
|
|
|
OEMDEF(void) {Hdll = NULL; Pxdef = NULL; Module = Subtype = NULL;}
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
virtual const char *GetType(void) {return "OEM";}
|
|
|
|
virtual AMT GetDefType(void) {return TYPE_AM_OEM;}
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
virtual bool DeleteTableFile(PGLOBAL g);
|
|
|
|
virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
|
|
|
|
virtual PTDB GetTable(PGLOBAL g, MODE mode);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PTABDEF GetXdef(PGLOBAL g);
|
|
|
|
|
|
|
|
// Members
|
|
|
|
#if defined(WIN32)
|
|
|
|
HANDLE Hdll; /* Handle to the external DLL */
|
|
|
|
#else // !WIN32
|
|
|
|
void *Hdll; /* Handle for the loaded shared library */
|
|
|
|
#endif // !WIN32
|
|
|
|
PTABDEF Pxdef; /* Pointer to the external TABDEF class */
|
|
|
|
char *Module; /* Path/Name of the DLL implenting it */
|
|
|
|
char *Subtype; /* The name of the OEM table sub type */
|
|
|
|
}; // end of OEMDEF
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Column definition block used during creation. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport COLCRT : public BLOCK { /* Column description block */
|
|
|
|
friend class TABDEF;
|
|
|
|
public:
|
|
|
|
COLCRT(PSZ name); // Constructor
|
|
|
|
COLCRT(void); // Constructor (for views)
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
PSZ GetName(void) {return Name;}
|
|
|
|
PSZ GetDecode(void) {return Decode;}
|
|
|
|
PSZ GetFmt(void) {return Fmt;}
|
|
|
|
int GetOpt(void) {return Opt;}
|
|
|
|
int GetLong(void) {return Long;}
|
|
|
|
int GetOffset(void) {return Offset;}
|
|
|
|
void SetOffset(int offset) {Offset = offset;}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
PCOLCRT Next; /* To next block */
|
|
|
|
PSZ Name; /* Column name */
|
|
|
|
PSZ Desc; /* Column description */
|
|
|
|
PSZ Decode; /* Date format */
|
|
|
|
PSZ Fmt; /* Input format for formatted files */
|
|
|
|
int Offset; /* Offset of field within record */
|
|
|
|
int Long; /* Length of field in file record (!BIN) */
|
|
|
|
int Key; /* Key (greater than 1 if multiple) */
|
|
|
|
int Prec; /* Precision for float values */
|
|
|
|
int Opt; /* 0:Not 1:clustered 2:sorted-asc 3:desc */
|
|
|
|
char DataType; /* Internal data type (C, N, F, T) */
|
|
|
|
}; // end of COLCRT
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
/* Column definition block. */
|
|
|
|
/***********************************************************************/
|
|
|
|
class DllExport COLDEF : public COLCRT { /* Column description block */
|
|
|
|
friend class CATALOG;
|
|
|
|
friend class PLUGCAT;
|
|
|
|
friend class MYCAT;
|
|
|
|
friend class COLBLK;
|
|
|
|
friend class DBFFAM;
|
|
|
|
public:
|
|
|
|
COLDEF(void); // Constructor
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
PCOLDEF GetNext(void) {return (PCOLDEF)Next;}
|
|
|
|
void SetNext(PCOLDEF pcdf) {Next = pcdf;}
|
|
|
|
int GetLength(void) {return (int)F.Length;}
|
|
|
|
int GetClen(void) {return Clen;}
|
|
|
|
int GetType(void) {return Buf_Type;}
|
|
|
|
int GetPoff(void) {return Poff;}
|
|
|
|
int Define(PGLOBAL g, void *memp, PCOLINFO cfp, int poff);
|
|
|
|
void Define(PGLOBAL g, PCOL colp);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
int Buf_Type; /* Internal data type */
|
|
|
|
int Clen; /* Internal data size in chars (bytes) */
|
|
|
|
int Poff; /* Calculated offset for Packed tables */
|
|
|
|
FORMAT F; /* Output format (should be in COLCRT) */
|
|
|
|
ushort Flags; /* Used by MariaDB CONNECT handler */
|
|
|
|
}; // end of COLDEF
|
|
|
|
|
|
|
|
#endif // __RELDEF_H
|
|
|
|
|