1/*************** Catalog H Declares Source Code File (.H) **************/
2/* Name: CATALOG.H Version 3.3 */
3/* */
4/* (C) Copyright to the author Olivier BERTRAND 2000-2015 */
5/* */
6/* This file contains the CATALOG PlugDB classes definitions. */
7/***********************************************************************/
8#ifndef __CATALOG__H
9#define __CATALOG__H
10
11#include "block.h"
12
13/***********************************************************************/
14/* Defines the length of a buffer to contain entire table section. */
15/***********************************************************************/
16#define PLG_MAX_PATH 144 /* Must be the same across systems */
17#define PLG_BUFF_LEN 100 /* Number of lines in binary file buffer */
18
19
20//typedef class INDEXDEF *PIXDEF;
21
22/***********************************************************************/
23/* Defines the structure used to enumerate tables or views. */
24/***********************************************************************/
25typedef struct _curtab {
26 PRELDEF CurTdb;
27 char *Curp;
28 char *Tabpat;
29 bool Ispat;
30 bool NoView;
31 int Nt;
32 char *Type[16];
33 } CURTAB, *PCURTAB;
34
35/***********************************************************************/
36/* Defines the structure used to get column catalog info. */
37/***********************************************************************/
38typedef struct _colinfo {
39 PCSZ Name;
40 int Type;
41 int Offset;
42 int Length;
43 int Key;
44 int Precision;
45 int Scale;
46 int Opt;
47 int Freq;
48 PCSZ Remark;
49 PCSZ Datefmt;
50 PCSZ Fieldfmt;
51 ushort Flags; // Used by MariaDB CONNECT handlers
52 } COLINFO, *PCOLINFO;
53
54/***********************************************************************/
55/* CATALOG: base class for catalog classes. */
56/***********************************************************************/
57class DllExport CATALOG {
58 friend class RELDEF;
59 friend class TABDEF;
60 friend class DIRDEF;
61 friend class OEMDEF;
62 public:
63 CATALOG(void); // Constructor
64 virtual ~CATALOG() { } // Make -Wdelete-non-virtual-dtor happy
65
66 // Implementation
67 int GetCblen(void) {return Cblen;}
68 bool GetDefHuge(void) {return DefHuge;}
69 void SetDefHuge(bool b) {DefHuge = b;}
70 char *GetCbuf(void) {return Cbuf;}
71
72 // Methods
73 virtual void Reset(void) {}
74 virtual bool CheckName(PGLOBAL, char*) {return true;}
75 virtual bool ClearName(PGLOBAL, PSZ) {return true;}
76 virtual PRELDEF MakeOneTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;}
77 virtual PRELDEF GetTableDescEx(PGLOBAL, PTABLE) {return NULL;}
78 //virtual PRELDEF GetTableDesc(PGLOBAL, LPCSTR, LPCSTR,
79 // PRELDEF* = NULL) {return NULL;}
80 virtual PRELDEF GetFirstTable(PGLOBAL) {return NULL;}
81 virtual PRELDEF GetNextTable(PGLOBAL) {return NULL;}
82 virtual bool TestCond(PGLOBAL, const char*, const char*) {return true;}
83 virtual bool DropTable(PGLOBAL, PSZ, bool) {return true;}
84 virtual PTDB GetTable(PGLOBAL, PTABLE,
85 MODE = MODE_READ, LPCSTR = NULL) {return NULL;}
86 virtual void TableNames(PGLOBAL, char*, int, int[]) {}
87 virtual void ColumnNames(PGLOBAL, char*, char*, int, int[]) {}
88 virtual void ColumnDefs(PGLOBAL, char*, char*, int, int[]) {}
89 virtual void *DecodeValues(PGLOBAL, char*, char*, char*,
90 int, int[]) {return NULL;}
91 virtual int ColumnType(PGLOBAL, char*, char*) {return 0;}
92 virtual void ClearDB(PGLOBAL) {}
93
94 protected:
95 virtual bool ClearSection(PGLOBAL, const char*, const char*) {return true;}
96 //virtual PRELDEF MakeTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;}
97
98 // Members
99 char *Cbuf; /* Buffer used for col section */
100 int Cblen; /* Length of suballoc. buffer */
101 CURTAB Ctb; /* Used to enumerate tables */
102 bool DefHuge; /* true: tables default to huge */
103 }; // end of class CATALOG
104
105#endif // __CATALOG__H
106