mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
5f64276fb2
modified: storage/connect/array.cpp modified: storage/connect/blkfil.cpp modified: storage/connect/block.h modified: storage/connect/bson.cpp modified: storage/connect/cmgoconn.cpp modified: storage/connect/colblk.cpp modified: storage/connect/domdoc.cpp modified: storage/connect/filamap.cpp modified: storage/connect/filamdbf.cpp modified: storage/connect/filamfix.cpp modified: storage/connect/filamgz.cpp modified: storage/connect/filamtxt.cpp modified: storage/connect/filamvct.cpp modified: storage/connect/filamzip.cpp modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/fmdlex.c modified: storage/connect/global.h modified: storage/connect/ha_connect.cc modified: storage/connect/javaconn.cpp modified: storage/connect/javaconn.h modified: storage/connect/jdbconn.cpp modified: storage/connect/jmgfam.cpp modified: storage/connect/json.cpp modified: storage/connect/macutil.cpp modified: storage/connect/macutil.h modified: storage/connect/maputil.cpp modified: storage/connect/mycat.cc modified: storage/connect/myconn.cpp modified: storage/connect/myconn.h modified: storage/connect/myutil.cpp modified: storage/connect/odbconn.cpp modified: storage/connect/odbconn.h modified: storage/connect/os.h modified: storage/connect/osutil.c modified: storage/connect/plgdbsem.h modified: storage/connect/plgdbutl.cpp modified: storage/connect/plugutil.cpp modified: storage/connect/rcmsg.c modified: storage/connect/reldef.cpp modified: storage/connect/reldef.h modified: storage/connect/tabdos.cpp modified: storage/connect/tabext.cpp modified: storage/connect/tabfix.cpp modified: storage/connect/tabfmt.cpp modified: storage/connect/tabjdbc.cpp modified: storage/connect/tabmac.cpp modified: storage/connect/tabmac.h modified: storage/connect/tabmul.cpp modified: storage/connect/tabmul.h modified: storage/connect/tabmysql.cpp modified: storage/connect/taboccur.cpp modified: storage/connect/tabodbc.cpp modified: storage/connect/tabpivot.cpp modified: storage/connect/tabrest.cpp modified: storage/connect/tabrest.h modified: storage/connect/tabsys.cpp modified: storage/connect/tabtbl.cpp modified: storage/connect/tabutil.cpp modified: storage/connect/tabvct.cpp modified: storage/connect/tabwmi.cpp modified: storage/connect/tabxcl.cpp modified: storage/connect/tabxml.cpp modified: storage/connect/valblk.cpp modified: storage/connect/value.cpp modified: storage/connect/xindex.cpp modified: storage/connect/xindex.h - Fix Date errors and SSL warnings modified: storage/connect/mysql-test/connect/r/jdbc.result modified: storage/connect/mysql-test/connect/r/jdbc_new.result modified: storage/connect/mysql-test/connect/t/jdbc.test modified: storage/connect/mysql-test/connect/t/jdbc_new.test - Update java source files modified: storage/connect/Mongo2Interface.java modified: storage/connect/Mongo3Interface.java added: storage/connect/Client2.java added: storage/connect/Client3.java added: storage/connect/TestInsert2.java added: storage/connect/TestInsert3.java
251 lines
11 KiB
C++
251 lines
11 KiB
C++
/*************** RelDef H Declares Source Code File (.H) ***************/
|
|
/* Name: RELDEF.H Version 1.6 */
|
|
/* */
|
|
/* (C) Copyright to the author Olivier BERTRAND 2004-2016 */
|
|
/* */
|
|
/* This file contains the DEF classes definitions. */
|
|
/***********************************************************************/
|
|
|
|
#ifndef __RELDEF_H
|
|
#define __RELDEF_H
|
|
|
|
#include "block.h"
|
|
#include "catalog.h"
|
|
//#include "my_sys.h"
|
|
#include "mycat.h"
|
|
|
|
typedef class INDEXDEF *PIXDEF;
|
|
typedef class ha_connect *PHC;
|
|
|
|
/***********************************************************************/
|
|
/* Table or View (relation) definition block. */
|
|
/***********************************************************************/
|
|
class DllExport RELDEF : public BLOCK { // Relation definition block
|
|
friend class CATALOG;
|
|
friend class PLUGCAT;
|
|
friend class MYCAT;
|
|
public:
|
|
RELDEF(void); // Constructor
|
|
|
|
// Implementation
|
|
PRELDEF GetNext(void) {return Next;}
|
|
PSZ GetName(void) {return Name;}
|
|
PSZ GetDB(void) {return (PSZ)Database;}
|
|
PCOLDEF GetCols(void) {return To_Cols;}
|
|
PHC GetHandler(void) {return Hc;}
|
|
void SetCols(PCOLDEF pcd) {To_Cols = pcd;}
|
|
PCATLG GetCat(void) {return Cat;}
|
|
virtual const char *GetType(void) = 0;
|
|
virtual AMT GetDefType(void) = 0;
|
|
void SetName(const char *str) { Name=(char*)str; }
|
|
void SetCat(PCATLG cat) { Cat=cat; }
|
|
|
|
// Methods
|
|
PTOS GetTopt(void);
|
|
bool GetBoolCatInfo(PCSZ what, bool bdef);
|
|
bool SetIntCatInfo(PCSZ what, int ival);
|
|
bool Partitioned(void);
|
|
int GetIntCatInfo(PCSZ what, int idef);
|
|
int GetSizeCatInfo(PCSZ what, PCSZ sdef);
|
|
int GetCharCatInfo(PCSZ what, PCSZ sdef, char *buf, int size);
|
|
char *GetStringCatInfo(PGLOBAL g, PCSZ what, PCSZ sdef);
|
|
virtual int Indexable(void) {return 0;}
|
|
virtual bool Define(PGLOBAL g, PCATLG cat,
|
|
LPCSTR name, LPCSTR schema, LPCSTR am) = 0;
|
|
virtual PTDB GetTable(PGLOBAL g, MODE mode) = 0;
|
|
|
|
protected:
|
|
PRELDEF Next; /* To next definition block */
|
|
PSZ Name; /* Name of the view */
|
|
LPCSTR Database; /* Table database */
|
|
PCOLDEF To_Cols; /* To a list of column desc */
|
|
PCATLG Cat; /* To DB catalog info */
|
|
PHC Hc; /* The Connect handler */
|
|
}; // end of RELDEF
|
|
|
|
/***********************************************************************/
|
|
/* This class corresponds to the data base description for tables */
|
|
/* of type DOS, FIX, CSV, DBF, BIN, VCT, JSON, XML... */
|
|
/***********************************************************************/
|
|
class DllExport TABDEF : public RELDEF { /* Logical table descriptor */
|
|
friend class CATALOG;
|
|
friend class PLUGCAT;
|
|
friend class MYCAT;
|
|
friend class TDB;
|
|
friend class TDBEXT;
|
|
public:
|
|
// Constructor
|
|
TABDEF(void); // Constructor
|
|
|
|
// Implementation
|
|
int GetDegree(void) {return Degree;}
|
|
void SetDegree(int d) {Degree = d;}
|
|
int GetElemt(void) {return Elemt;}
|
|
void SetNext(PTABDEF tdfp) {Next = tdfp;}
|
|
int GetMultiple(void) {return Multiple;}
|
|
int GetPseudo(void) {return Pseudo;}
|
|
RECFM GetRecfm(void) {return Recfm;}
|
|
PCSZ GetPath(void);
|
|
//PSZ GetPath(void)
|
|
// {return (Database) ? (PSZ)Database : Cat->GetDataPath();}
|
|
RECFM GetTableFormat(const char* type);
|
|
bool SepIndex(void) {return GetBoolCatInfo("SepIndex", false);}
|
|
bool IsReadOnly(void) {return Read_Only;}
|
|
virtual AMT GetDefType(void) {return TYPE_AM_TAB;}
|
|
virtual PIXDEF GetIndx(void) {return NULL;}
|
|
virtual void SetIndx(PIXDEF) {}
|
|
virtual bool IsHuge(void) {return false;}
|
|
const CHARSET_INFO *data_charset() {return m_data_charset;}
|
|
const char *GetCsName(void) {return csname;}
|
|
|
|
// Methods
|
|
int GetColCatInfo(PGLOBAL g);
|
|
void SetIndexInfo(void);
|
|
bool DropTable(PGLOBAL g, PSZ name);
|
|
virtual bool Define(PGLOBAL g, PCATLG cat,
|
|
LPCSTR name, LPCSTR schema, LPCSTR am);
|
|
virtual bool DefineAM(PGLOBAL, LPCSTR, int) = 0;
|
|
|
|
protected:
|
|
// Members
|
|
PCSZ Schema; /* Table schema (for ODBC) */
|
|
PCSZ Desc; /* Table description */
|
|
RECFM Recfm; /* File or table format */
|
|
uint Catfunc; /* Catalog function ID */
|
|
int Card; /* (max) number of rows in table */
|
|
int Elemt; /* Number of rows in blocks or rowset */
|
|
int Sort; /* Table already sorted ??? */
|
|
int Multiple; /* 0: No 1: DIR 2: Section 3: filelist */
|
|
int Degree; /* Number of columns in the table */
|
|
int Pseudo; /* Bit: 1 ROWID }Ok, 2 FILEID Ok */
|
|
bool Read_Only; /* true for read only tables */
|
|
const CHARSET_INFO *m_data_charset;
|
|
const char *csname; /* Table charset name */
|
|
}; // end of TABDEF
|
|
|
|
/***********************************************************************/
|
|
/* Externally defined OEM tables. */
|
|
/***********************************************************************/
|
|
class DllExport OEMDEF : public TABDEF { /* OEM table */
|
|
friend class CATALOG;
|
|
friend class PLUGCAT;
|
|
friend class MYCAT;
|
|
public:
|
|
// Constructor
|
|
OEMDEF(void) {Hdll = NULL; Pxdef = NULL; Module = Subtype = NULL;}
|
|
|
|
// Implementation
|
|
virtual const char *GetType(void) {return "OEM";}
|
|
virtual AMT GetDefType(void) {return TYPE_AM_OEM;}
|
|
|
|
// Methods
|
|
virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
|
|
virtual PTDB GetTable(PGLOBAL g, MODE mode);
|
|
|
|
protected:
|
|
PTABDEF GetXdef(PGLOBAL g);
|
|
|
|
// Members
|
|
#if defined(_WIN32)
|
|
HANDLE Hdll; /* Handle to the external DLL */
|
|
#else // !_WIN32
|
|
void *Hdll; /* Handle for the loaded shared library */
|
|
#endif // !_WIN32
|
|
PTABDEF Pxdef; /* Pointer to the external TABDEF class */
|
|
char *Module; /* Path/Name of the DLL implenting it */
|
|
char *Subtype; /* The name of the OEM table sub type */
|
|
}; // end of OEMDEF
|
|
|
|
/***********************************************************************/
|
|
/* Column definition block used during creation. */
|
|
/***********************************************************************/
|
|
class DllExport COLCRT : public BLOCK { /* Column description block */
|
|
friend class TABDEF;
|
|
public:
|
|
COLCRT(PSZ name); // Constructor
|
|
COLCRT(void); // Constructor (for views)
|
|
|
|
// Implementation
|
|
PSZ GetName(void) {return Name;}
|
|
PSZ GetDecode(void) {return Decode;}
|
|
PSZ GetFmt(void) {return Fmt;}
|
|
int GetOpt(void) {return Opt;}
|
|
int GetFreq(void) {return Freq;}
|
|
int GetLong(void) {return Long;}
|
|
int GetPrecision(void) {return Precision;}
|
|
int GetOffset(void) {return Offset;}
|
|
void SetOffset(int offset) {Offset = offset;}
|
|
|
|
protected:
|
|
PCOLCRT Next; /* To next block */
|
|
PSZ Name; /* Column name */
|
|
PSZ Desc; /* Column description */
|
|
PSZ Decode; /* Date format */
|
|
PSZ Fmt; /* Input format for formatted files */
|
|
int Offset; /* Offset of field within record */
|
|
int Long; /* Length of field in file record (!BIN) */
|
|
int Key; /* Key (greater than 1 if multiple) */
|
|
int Precision; /* Logical column length */
|
|
int Scale; /* Decimals for float/decimal values */
|
|
int Opt; /* 0:Not 1:clustered 2:sorted-asc 3:desc */
|
|
int Freq; /* Estimated number of different values */
|
|
char DataType; /* Internal data type (C, N, F, T) */
|
|
}; // end of COLCRT
|
|
|
|
/***********************************************************************/
|
|
/* Column definition block. */
|
|
/***********************************************************************/
|
|
class DllExport COLDEF : public COLCRT { /* Column description block */
|
|
friend class TABDEF;
|
|
friend class COLBLK;
|
|
friend class DBFFAM;
|
|
friend class TDB;
|
|
friend class TDBASE;
|
|
friend class TDBDOS;
|
|
public:
|
|
COLDEF(void); // Constructor
|
|
|
|
// Implementation
|
|
PCOLDEF GetNext(void) {return (PCOLDEF)Next;}
|
|
void SetNext(PCOLDEF pcdf) {Next = pcdf;}
|
|
int GetLength(void) {return (int)F.Length;}
|
|
int GetClen(void) {return Clen;}
|
|
int GetType(void) {return Buf_Type;}
|
|
int GetPoff(void) {return Poff;}
|
|
void *GetMin(void) {return To_Min;}
|
|
void SetMin(void *minp) {To_Min = minp;}
|
|
void *GetMax(void) {return To_Max;}
|
|
void SetMax(void *maxp) {To_Max = maxp;}
|
|
bool GetXdb2(void) {return Xdb2;}
|
|
void SetXdb2(bool b) {Xdb2 = b;}
|
|
void *GetBmap(void) {return To_Bmap;}
|
|
void SetBmap(void *bmp) {To_Bmap = bmp;}
|
|
void *GetDval(void) {return To_Dval;}
|
|
void SetDval(void *dvp) {To_Dval = dvp;}
|
|
int GetNdv(void) {return Ndv;}
|
|
void SetNdv(int ndv) {Ndv = ndv;}
|
|
int GetNbm(void) {return Nbm;}
|
|
void SetNbm(int nbm) {Nbm = nbm;}
|
|
int Define(PGLOBAL g, void *memp, PCOLINFO cfp, int poff);
|
|
void Define(PGLOBAL g, PCOL colp);
|
|
bool IsSpecial(void) {return (Flags & U_SPECIAL) ? true : false;}
|
|
bool IsVirtual(void) {return (Flags & U_VIRTUAL) ? true : false;}
|
|
|
|
protected:
|
|
void *To_Min; /* Point to array of block min values */
|
|
void *To_Max; /* Point to array of block max values */
|
|
int *To_Pos; /* Point to array of block positions */
|
|
bool Xdb2; /* TRUE if to be optimized by XDB2 */
|
|
void *To_Bmap; /* To array of block bitmap values */
|
|
void *To_Dval; /* To array of column distinct values */
|
|
int Ndv; /* Number of distinct values */
|
|
int Nbm; /* Number of ULONG in bitmap (XDB2) */
|
|
int Buf_Type; /* Internal data type */
|
|
int Clen; /* Internal data size in chars (bytes) */
|
|
int Poff; /* Calculated offset for Packed tables */
|
|
FORMAT F; /* Output format (should be in COLCRT) */
|
|
ushort Flags; /* Used by MariaDB CONNECT handler */
|
|
}; // end of COLDEF
|
|
|
|
#endif // __RELDEF_H
|
|
|