mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
3e36eb230b
modified: storage/connect/array.cpp modified: storage/connect/array.h modified: storage/connect/blkfil.cpp modified: storage/connect/blkfil.h modified: storage/connect/block.h modified: storage/connect/colblk.cpp modified: storage/connect/colblk.h modified: storage/connect/csort.h modified: storage/connect/filamvct.cpp modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/global.h modified: storage/connect/json.h modified: storage/connect/plgdbsem.h modified: storage/connect/plgdbutl.cpp modified: storage/connect/tabcol.cpp modified: storage/connect/tabcol.h modified: storage/connect/tabdos.cpp modified: storage/connect/tabdos.h modified: storage/connect/tabjson.cpp modified: storage/connect/table.cpp modified: storage/connect/tabodbc.cpp modified: storage/connect/tabodbc.h modified: storage/connect/tabsys.h modified: storage/connect/tabxml.h modified: storage/connect/value.cpp modified: storage/connect/value.h modified: storage/connect/xindex.cpp modified: storage/connect/xindex.h modified: storage/connect/xobject.cpp modified: storage/connect/xobject.h modified: storage/connect/xtable.h Set values as nullable when retrieving catalog info modified: storage/connect/jdbconn.cpp modified: storage/connect/mysql-test/connect/r/odbc_oracle.result modified: storage/connect/odbconn.cpp Change format of Jpath modified: storage/connect/json.cpp modified: storage/connect/jsonudf.cpp modified: storage/connect/mysql-test/connect/r/json.result modified: storage/connect/mysql-test/connect/r/json_udf.result modified: storage/connect/mysql-test/connect/r/json_udf_bin.result modified: storage/connect/mysql-test/connect/r/zip.result modified: storage/connect/mysql-test/connect/t/json.test modified: storage/connect/mysql-test/connect/t/json_udf.test modified: storage/connect/mysql-test/connect/t/json_udf_bin.test modified: storage/connect/mysql-test/connect/t/zip.test modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h modified: storage/connect/tabmgo.cpp Change null representation from ??? to <null> modified: storage/connect/json.cpp Change the name of UDF that are equal to a native JSON function name modified: storage/connect/jsonudf.cpp modified: storage/connect/jsonudf.h modified: storage/connect/mysql-test/connect/t/json_udf.inc modified: storage/connect/mysql-test/connect/t/json_udf2.inc Fix bug in making JSON project info modified: storage/connect/mongofam.cpp Fix COMPUTE when one argument is null modified: storage/connect/value.cpp Value is null only when nullable modified: storage/connect/value.h
264 lines
8.9 KiB
C++
264 lines
8.9 KiB
C++
/*************** Tabodbc H Declares Source Code File (.H) **************/
|
|
/* Name: TABODBC.H Version 1.9 */
|
|
/* */
|
|
/* (C) Copyright to the author Olivier BERTRAND 2000-2017 */
|
|
/* */
|
|
/* This file contains the TDBODBC classes declares. */
|
|
/***********************************************************************/
|
|
#include "colblk.h"
|
|
#include "resource.h"
|
|
|
|
typedef class ODBCDEF *PODEF;
|
|
typedef class TDBODBC *PTDBODBC;
|
|
typedef class ODBCCOL *PODBCCOL;
|
|
typedef class TDBXDBC *PTDBXDBC;
|
|
typedef class XSRCCOL *PXSRCCOL;
|
|
typedef class TDBOIF *PTDBOIF;
|
|
typedef class OIFCOL *POIFCOL;
|
|
typedef class TDBSRC *PTDBSRC;
|
|
|
|
/***********************************************************************/
|
|
/* ODBC table. */
|
|
/***********************************************************************/
|
|
class DllExport ODBCDEF : public EXTDEF { /* Logical table description */
|
|
friend class TDBODBC;
|
|
friend class TDBXDBC;
|
|
friend class TDBDRV;
|
|
friend class TDBOTB;
|
|
friend class TDBOCL;
|
|
public:
|
|
// Constructor
|
|
ODBCDEF(void);
|
|
|
|
// Implementation
|
|
virtual const char *GetType(void) {return "ODBC";}
|
|
PSZ GetConnect(void) {return Connect;}
|
|
int GetCatver(void) {return Catver;}
|
|
|
|
// Methods
|
|
virtual int Indexable(void) {return 2;}
|
|
virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
|
|
virtual PTDB GetTable(PGLOBAL g, MODE m);
|
|
|
|
protected:
|
|
// Members
|
|
PSZ Connect; /* ODBC connection string */
|
|
int Catver; /* ODBC version for catalog functions */
|
|
bool UseCnc; /* Use SQLConnect (!SQLDriverConnect) */
|
|
}; // end of ODBCDEF
|
|
|
|
#if !defined(NODBC)
|
|
#include "odbconn.h"
|
|
|
|
/***********************************************************************/
|
|
/* This is the ODBC Access Method class declaration for files from */
|
|
/* other DB drivers to be accessed via ODBC. */
|
|
/***********************************************************************/
|
|
class TDBODBC : public TDBEXT {
|
|
friend class ODBCCOL;
|
|
friend class ODBConn;
|
|
public:
|
|
// Constructor
|
|
TDBODBC(PODEF tdp = NULL);
|
|
TDBODBC(PTDBODBC tdbp);
|
|
|
|
// Implementation
|
|
virtual AMT GetAmType(void) {return TYPE_AM_ODBC;}
|
|
virtual PTDB Duplicate(PGLOBAL g)
|
|
{return (PTDB)new(g) TDBODBC(this);}
|
|
|
|
// Methods
|
|
virtual PTDB Clone(PTABS t);
|
|
virtual bool SetRecpos(PGLOBAL g, int recpos);
|
|
virtual PCSZ GetFile(PGLOBAL g);
|
|
virtual void SetFile(PGLOBAL g, PCSZ fn);
|
|
virtual void ResetSize(void);
|
|
virtual PCSZ GetServer(void) {return "ODBC";}
|
|
virtual int Indexable(void) {return 2;}
|
|
|
|
// Database routines
|
|
virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
|
|
virtual int Cardinality(PGLOBAL g);
|
|
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);
|
|
virtual bool ReadKey(PGLOBAL g, OPVAL op, const key_range *kr);
|
|
|
|
protected:
|
|
// Internal functions
|
|
bool MakeInsert(PGLOBAL g);
|
|
bool BindParameters(PGLOBAL g);
|
|
|
|
// Members
|
|
ODBConn *Ocp; // Points to an ODBC connection class
|
|
ODBCCOL *Cnp; // Points to count(*) column
|
|
ODBCPARM Ops; // Additional parameters
|
|
char *Connect; // Points to connection string
|
|
int Catver; // Catalog ODBC version
|
|
bool UseCnc; // Use SQLConnect (!SQLDriverConnect)
|
|
}; // end of class TDBODBC
|
|
|
|
/***********************************************************************/
|
|
/* Class ODBCCOL: ODBC access method column descriptor. */
|
|
/* This A.M. is used for ODBC tables. */
|
|
/***********************************************************************/
|
|
class ODBCCOL : public EXTCOL {
|
|
friend class TDBODBC;
|
|
public:
|
|
// Constructors
|
|
ODBCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "ODBC");
|
|
ODBCCOL(ODBCCOL *colp, PTDB tdbp); // Constructor used in copy process
|
|
|
|
// Implementation
|
|
virtual int GetAmType(void) {return TYPE_AM_ODBC;}
|
|
SQLLEN *GetStrLen(void) {return StrLen;}
|
|
|
|
// Methods
|
|
//virtual bool SetBuffer(PGLOBAL g, PVAL value, bool ok, bool check);
|
|
virtual void ReadColumn(PGLOBAL g);
|
|
virtual void WriteColumn(PGLOBAL g);
|
|
void AllocateBuffers(PGLOBAL g, int rows);
|
|
void *GetBuffer(DWORD rows);
|
|
SWORD GetBuflen(void);
|
|
|
|
protected:
|
|
// Constructor for count(*) column
|
|
ODBCCOL(void);
|
|
|
|
// Members
|
|
TIMESTAMP_STRUCT *Sqlbuf; // To get SQL_TIMESTAMP's
|
|
SQLLEN *StrLen; // As returned by ODBC
|
|
SQLLEN Slen; // Used with Fetch
|
|
}; // end of class ODBCCOL
|
|
|
|
/***********************************************************************/
|
|
/* This is the ODBC Access Method class declaration that send */
|
|
/* commands to be executed by other DB ODBC drivers. */
|
|
/***********************************************************************/
|
|
class TDBXDBC : public TDBODBC {
|
|
friend class XSRCCOL;
|
|
friend class ODBConn;
|
|
public:
|
|
// Constructors
|
|
TDBXDBC(PODEF tdp = NULL);
|
|
TDBXDBC(PTDBXDBC tdbp);
|
|
|
|
// Implementation
|
|
virtual AMT GetAmType(void) {return TYPE_AM_XDBC;}
|
|
virtual PTDB Duplicate(PGLOBAL g)
|
|
{return (PTDB)new(g) TDBXDBC(this);}
|
|
|
|
// Methods
|
|
virtual PTDB Clone(PTABS t);
|
|
|
|
// Database routines
|
|
virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
|
|
virtual int GetMaxSize(PGLOBAL g);
|
|
virtual bool OpenDB(PGLOBAL g);
|
|
virtual int ReadDB(PGLOBAL g);
|
|
virtual int WriteDB(PGLOBAL g);
|
|
virtual int DeleteDB(PGLOBAL g, int irc);
|
|
|
|
protected:
|
|
// Internal functions
|
|
PCMD MakeCMD(PGLOBAL g);
|
|
|
|
// Members
|
|
PCMD Cmdlist; // The commands to execute
|
|
char *Cmdcol; // The name of the Xsrc command column
|
|
int Mxr; // Maximum errors before closing
|
|
int Nerr; // Number of errors so far
|
|
}; // end of class TDBXDBC
|
|
|
|
/***********************************************************************/
|
|
/* Used by table in source execute mode. */
|
|
/***********************************************************************/
|
|
class XSRCCOL : public ODBCCOL {
|
|
friend class TDBXDBC;
|
|
public:
|
|
// Constructors
|
|
XSRCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am = "ODBC");
|
|
XSRCCOL(XSRCCOL *colp, PTDB tdbp); // Constructor used in copy process
|
|
|
|
// Implementation
|
|
|
|
// Methods
|
|
virtual void ReadColumn(PGLOBAL g);
|
|
virtual void WriteColumn(PGLOBAL g);
|
|
|
|
protected:
|
|
// Members
|
|
char *Buffer; // To get returned message
|
|
int Flag; // Column content desc
|
|
}; // end of class XSRCCOL
|
|
|
|
/***********************************************************************/
|
|
/* This is the class declaration for the Drivers catalog table. */
|
|
/***********************************************************************/
|
|
class TDBDRV : public TDBCAT {
|
|
public:
|
|
// Constructor
|
|
TDBDRV(PODEF tdp) : TDBCAT(tdp) {Maxres = tdp->Maxres;}
|
|
|
|
protected:
|
|
// Specific routines
|
|
virtual PQRYRES GetResult(PGLOBAL g);
|
|
|
|
// Members
|
|
int Maxres; // Returned lines limit
|
|
}; // end of class TDBDRV
|
|
|
|
/***********************************************************************/
|
|
/* This is the class declaration for the Data Sources catalog table. */
|
|
/***********************************************************************/
|
|
class TDBSRC : public TDBDRV {
|
|
public:
|
|
// Constructor
|
|
TDBSRC(PODEF tdp) : TDBDRV(tdp) {}
|
|
|
|
protected:
|
|
// Specific routines
|
|
virtual PQRYRES GetResult(PGLOBAL g);
|
|
|
|
// No additional Members
|
|
}; // end of class TDBSRC
|
|
|
|
/***********************************************************************/
|
|
/* This is the class declaration for the tables catalog table. */
|
|
/***********************************************************************/
|
|
class TDBOTB : public TDBDRV {
|
|
public:
|
|
// Constructor
|
|
TDBOTB(PODEF tdp);
|
|
|
|
protected:
|
|
// Specific routines
|
|
virtual PQRYRES GetResult(PGLOBAL g);
|
|
|
|
// Members
|
|
PCSZ Dsn; // Points to connection string
|
|
PCSZ Schema; // Points to schema name or NULL
|
|
PCSZ Tab; // Points to ODBC table name or pattern
|
|
PCSZ Tabtyp; // Points to ODBC table type
|
|
ODBCPARM Ops; // Additional parameters
|
|
}; // end of class TDBOTB
|
|
|
|
/***********************************************************************/
|
|
/* This is the class declaration for the columns catalog table. */
|
|
/***********************************************************************/
|
|
class TDBOCL : public TDBOTB {
|
|
public:
|
|
// Constructor
|
|
TDBOCL(PODEF tdp);
|
|
|
|
protected:
|
|
// Specific routines
|
|
virtual PQRYRES GetResult(PGLOBAL g);
|
|
|
|
// Members
|
|
char *Colpat; // Points to column pattern
|
|
}; // end of class TDBOCL
|
|
|
|
#endif // !NODBC
|