summaryrefslogtreecommitdiffstats
path: root/storage/connect/tabvir.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/tabvir.h')
-rw-r--r--storage/connect/tabvir.h110
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