diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
commit | a175314c3e5827eb193872241446f2f8f5c9d33c (patch) | |
tree | cd3d60ca99ae00829c52a6ca79150a5b6e62528b /storage/connect/tabvir.h | |
parent | Initial commit. (diff) | |
download | mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.tar.xz mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.zip |
Adding upstream version 1:10.5.12.upstream/1%10.5.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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..e7313bba --- /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) {} + + // 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) {} + + // 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 |