1/**************** tdbvir H Declares Source Code File (.H) **************/
2/* Name: TDBVIR.H Version 1.1 */
3/* */
4/* (C) Copyright to the author Olivier BERTRAND 2006-2014 */
5/* */
6/* This file contains the VIR classes declare code. */
7/***********************************************************************/
8typedef class VIRDEF *PVIRDEF;
9typedef class TDBVIR *PTDBVIR;
10
11/***********************************************************************/
12/* Return the unique column definition to MariaDB. */
13/***********************************************************************/
14PQRYRES VirColumns(PGLOBAL g, bool info);
15
16/* --------------------------- VIR classes --------------------------- */
17
18/***********************************************************************/
19/* VIR: Virtual table used to select constant values. */
20/***********************************************************************/
21class DllExport VIRDEF : public TABDEF { /* Logical table description */
22 public:
23 // Constructor
24 VIRDEF(void) {}
25
26 // Implementation
27 virtual const char *GetType(void) {return "VIRTUAL";}
28
29 // Methods
30 virtual bool DefineAM(PGLOBAL, LPCSTR, int) {Pseudo = 3; return false;}
31 virtual int Indexable(void) {return 3;}
32 virtual PTDB GetTable(PGLOBAL g, MODE m);
33
34 protected:
35 // Members
36 }; // end of VIRDEF
37
38/***********************************************************************/
39/* This is the class declaration for the Virtual table. */
40/***********************************************************************/
41class DllExport TDBVIR : public TDBASE {
42 public:
43 // Constructors
44 TDBVIR(PVIRDEF tdp);
45
46 // Implementation
47 virtual AMT GetAmType(void) {return TYPE_AM_VIR;}
48
49 // Methods
50 virtual int GetRecpos(void) {return N;}
51 virtual bool SetRecpos(PGLOBAL g, int recpos)
52 {N = recpos - 2; return false;}
53 virtual int RowNumber(PGLOBAL g, bool b = false) {return N + 1;}
54 int TestFilter(PFIL filp, bool nop);
55
56 // Database routines
57 virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
58 virtual int Cardinality(PGLOBAL g) {return (g) ? Size : 1;}
59 virtual int GetMaxSize(PGLOBAL g) {return Size;}
60 virtual bool OpenDB(PGLOBAL g);
61 virtual int ReadDB(PGLOBAL g);
62 virtual int WriteDB(PGLOBAL g);
63 virtual int DeleteDB(PGLOBAL g, int irc);
64 virtual void CloseDB(PGLOBAL g) {}
65
66 protected:
67 // Members
68 int Size; // Table size
69 int N; // The VIR table current position
70 }; // end of class TDBVIR
71
72/***********************************************************************/
73/* Class VIRCOL: VIRTUAL access method column descriptor. */
74/***********************************************************************/
75class VIRCOL : public COLBLK {
76 friend class TDBVIR;
77 public:
78 // Constructors
79 VIRCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "VIRTUAL");
80
81 // Implementation
82 virtual int GetAmType(void) {return TYPE_AM_VIR;}
83
84 // Methods
85 virtual void ReadColumn(PGLOBAL g);
86
87 protected:
88 // Default constructor not to be used
89 VIRCOL(void) {}
90
91 // No additional members
92 }; // end of class VIRCOL
93
94/***********************************************************************/
95/* This is the class declaration for the VIR column catalog table. */
96/***********************************************************************/
97class TDBVICL : public TDBCAT {
98 public:
99 // Constructor
100 TDBVICL(PVIRDEF tdp) : TDBCAT(tdp) {}
101
102 // Methods
103 virtual int Cardinality(PGLOBAL g) {return 2;} // Avoid DBUG_ASSERT
104
105 protected:
106 // Specific routines
107 virtual PQRYRES GetResult(PGLOBAL g);
108
109 // Members
110 }; // end of class TDBVICL
111