diff options
Diffstat (limited to 'storage/connect/tabvir.h')
-rw-r--r-- | storage/connect/tabvir.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/storage/connect/tabvir.h b/storage/connect/tabvir.h new file mode 100644 index 00000000..b92ca0c5 --- /dev/null +++ b/storage/connect/tabvir.h @@ -0,0 +1,110 @@ +/**************** tdbvir H Declares Source Code File (.H) **************/ +/* Name: TDBVIR.H Version 1.1 */ +/* */ +/* (C) Copyright to the author Olivier BERTRAND 2006-2014 */ +/* */ +/* This file contains the VIR classes declare code. */ +/***********************************************************************/ +typedef class VIRDEF *PVIRDEF; +typedef class TDBVIR *PTDBVIR; + +/***********************************************************************/ +/* Return the unique column definition to MariaDB. */ +/***********************************************************************/ +PQRYRES VirColumns(PGLOBAL g, bool info); + +/* --------------------------- VIR classes --------------------------- */ + +/***********************************************************************/ +/* VIR: Virtual table used to select constant values. */ +/***********************************************************************/ +class DllExport VIRDEF : public TABDEF { /* Logical table description */ + public: + // Constructor + VIRDEF(void) = default; + + // Implementation + virtual const char *GetType(void) {return "VIRTUAL";} + + // Methods + virtual bool DefineAM(PGLOBAL, LPCSTR, int) {Pseudo = 3; return false;} + virtual int Indexable(void) {return 3;} + virtual PTDB GetTable(PGLOBAL g, MODE m); + + protected: + // Members + }; // end of VIRDEF + +/***********************************************************************/ +/* This is the class declaration for the Virtual table. */ +/***********************************************************************/ +class DllExport TDBVIR : public TDBASE { + public: + // Constructors + TDBVIR(PVIRDEF tdp); + + // Implementation + virtual AMT GetAmType(void) {return TYPE_AM_VIR;} + + // Methods + virtual int GetRecpos(void) {return N;} + virtual bool SetRecpos(PGLOBAL g, int recpos) + {N = recpos - 2; return false;} + virtual int RowNumber(PGLOBAL g, bool b = false) {return N + 1;} + int TestFilter(PFIL filp, bool nop); + + // Database routines + virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n); + virtual int Cardinality(PGLOBAL g) {return (g) ? Size : 1;} + virtual int GetMaxSize(PGLOBAL g) {return Size;} + 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) {} + + protected: + // Members + int Size; // Table size + int N; // The VIR table current position + }; // end of class TDBVIR + +/***********************************************************************/ +/* Class VIRCOL: VIRTUAL access method column descriptor. */ +/***********************************************************************/ +class VIRCOL : public COLBLK { + friend class TDBVIR; + public: + // Constructors + VIRCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "VIRTUAL"); + + // Implementation + virtual int GetAmType(void) {return TYPE_AM_VIR;} + + // Methods + virtual void ReadColumn(PGLOBAL g); + + protected: + // Default constructor not to be used + VIRCOL(void) = default; + + // No additional members + }; // end of class VIRCOL + +/***********************************************************************/ +/* This is the class declaration for the VIR column catalog table. */ +/***********************************************************************/ +class TDBVICL : public TDBCAT { + public: + // Constructor + TDBVICL(PVIRDEF tdp) : TDBCAT(tdp) {} + + // Methods + virtual int Cardinality(PGLOBAL g) {return 2;} // Avoid DBUG_ASSERT + + protected: + // Specific routines + virtual PQRYRES GetResult(PGLOBAL g); + + // Members + }; // end of class TDBVICL |