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 | /***********************************************************************/ |
8 | typedef class VIRDEF *PVIRDEF; |
9 | typedef class TDBVIR *PTDBVIR; |
10 | |
11 | /***********************************************************************/ |
12 | /* Return the unique column definition to MariaDB. */ |
13 | /***********************************************************************/ |
14 | PQRYRES VirColumns(PGLOBAL g, bool info); |
15 | |
16 | /* --------------------------- VIR classes --------------------------- */ |
17 | |
18 | /***********************************************************************/ |
19 | /* VIR: Virtual table used to select constant values. */ |
20 | /***********************************************************************/ |
21 | class 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 | /***********************************************************************/ |
41 | class 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 | /***********************************************************************/ |
75 | class 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 | /***********************************************************************/ |
97 | class 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 | |