mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 db0c28eff8
			
		
	
	
	db0c28eff8
	
	
	
		
			
			Find and fix missing virtual override markings. Updates cmake maintainer flags to include -Wsuggest-override and -Winconsistent-missing-override.
		
			
				
	
	
		
			254 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // TDBMYSQL.H     Olivier Bertrand    2007-2017
 | |
| #include "myconn.h"               // MySQL connection declares
 | |
| 
 | |
| typedef class MYSQLDEF *PMYDEF;
 | |
| typedef class TDBMYSQL *PTDBMY;
 | |
| typedef class MYSQLCOL *PMYCOL;
 | |
| typedef class TDBMYEXC *PTDBMYX;
 | |
| typedef class MYXCOL   *PMYXCOL;
 | |
| typedef class MYSQLC   *PMYC;
 | |
| 
 | |
| /* ------------------------- MYSQL classes --------------------------- */
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  MYSQL: table type that are MySQL tables.                           */
 | |
| /*  Using embedded MySQL library (or optionally calling a MySQL server)*/
 | |
| /***********************************************************************/
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  MYSQL table.                                                       */
 | |
| /***********************************************************************/
 | |
| class MYSQLDEF : public EXTDEF           {/* Logical table description */
 | |
|   friend class TDBMYSQL;
 | |
|   friend class TDBMYEXC;
 | |
|   friend class TDBMCL;
 | |
|   friend class ha_connect;
 | |
|  public:
 | |
|   // Constructor
 | |
|   MYSQLDEF(void);
 | |
| 
 | |
|   // Implementation
 | |
|   const char *GetType(void) override {return "MYSQL";}
 | |
|   inline  PSZ  GetHostname(void) {return Hostname;};
 | |
| //inline  PSZ  GetDatabase(void) {return Tabschema;};
 | |
| //inline  PSZ  GetTabname(void) {return Tabname;}
 | |
| //inline  PSZ  GetSrcdef(void) {return Srcdef;}
 | |
| //inline  PSZ  GetUsername(void) {return Username;};
 | |
| //inline  PSZ  GetPassword(void) {return Password;};
 | |
|   inline  int  GetPortnumber(void) {return Portnumber;}
 | |
| 
 | |
|   // Methods
 | |
| //virtual int  Indexable(void) {return 2;}
 | |
|   bool DefineAM(PGLOBAL g, LPCSTR am, int poff) override;
 | |
|   PTDB GetTable(PGLOBAL g, MODE m) override;
 | |
|           bool ParseURL(PGLOBAL g, char *url, bool b = true);
 | |
|           bool GetServerInfo(PGLOBAL g, const char *server_name);
 | |
| 
 | |
|  protected:
 | |
|   // Members
 | |
|   PSZ     Hostname;           /* Host machine to use                   */
 | |
| //PSZ     Tabschema;          /* Database to be used by server         */
 | |
| //PSZ     Tabname;            /* External table name                   */
 | |
| //PSZ     Srcdef;             /* The source table SQL definition       */
 | |
| //PSZ     Username;           /* User logon name                       */
 | |
| //PSZ     Password;           /* Password logon info                   */
 | |
|   PSZ     Server;             /* PServerID                             */
 | |
| //PSZ     Qrystr;             /* The original query                    */
 | |
|   int     Portnumber;         /* MySQL port number (0 = default)       */
 | |
| //int     Maxerr;             /* Maxerr for an Exec table              */
 | |
| //int     Quoted;             /* Identifier quoting level              */
 | |
|   bool    Isview;             /* true if this table is a MySQL view    */
 | |
|   bool    Bind;               /* Use prepared statement on insert      */
 | |
|   bool    Delayed;            /* Delayed insert                        */
 | |
|   bool    Ignored;            /* Use insert IGNORE                     */
 | |
| //bool    Xsrc;               /* Execution type                        */
 | |
|   bool    Huge;               /* True for big table                    */
 | |
|   }; // end of MYSQLDEF
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the class declaration for the MYSQL table.                 */
 | |
| /***********************************************************************/
 | |
| class TDBMYSQL : public TDBEXT {
 | |
|   friend class MYSQLCOL;
 | |
| 	friend class TDBTBM;
 | |
|  public:
 | |
|   // Constructor
 | |
|   TDBMYSQL(PMYDEF tdp);
 | |
|   TDBMYSQL(PTDBMY tdbp);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return TYPE_AM_MYSQL;}
 | |
|   PTDB Duplicate(PGLOBAL g) override {return (PTDB)new(g) TDBMYSQL(this);}
 | |
| 
 | |
|   // Methods
 | |
|   PTDB Clone(PTABS t) override;
 | |
| //virtual int  GetAffectedRows(void) {return AftRows;}
 | |
|   int  GetRecpos(void) override {return N;}
 | |
|   int  GetProgMax(PGLOBAL g) override;
 | |
|   void ResetDB(void) override {N = 0;}
 | |
|   int  RowNumber(PGLOBAL g, bool b = false) override;
 | |
|   bool IsView(void) override {return Isview;}
 | |
|   PCSZ GetServer(void) override {return Server;}
 | |
|           void SetDatabase(LPCSTR db) {Schema = (char*)db;}
 | |
| 
 | |
|   // Schema routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
 | |
|   int  Cardinality(PGLOBAL g) override;
 | |
| //int  GetMaxSize(PGLOBAL g) override;
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  ReadDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
|   int  DeleteDB(PGLOBAL g, int irc) override;
 | |
|   void CloseDB(PGLOBAL g) override;
 | |
|   bool ReadKey(PGLOBAL g, OPVAL op, const key_range *kr) override;
 | |
| 
 | |
|   // Specific routines
 | |
|           bool SetColumnRanks(PGLOBAL g);
 | |
|           PCOL MakeFieldColumn(PGLOBAL g, char *name);
 | |
|           PSZ  FindFieldColumn(char *name);
 | |
| 
 | |
|  protected:
 | |
|   // Internal functions
 | |
|   bool MakeSelect(PGLOBAL g, bool mx);
 | |
|   bool MakeInsert(PGLOBAL g);
 | |
|   int  BindColumns(PGLOBAL g __attribute__((unused)));
 | |
|   bool MakeCommand(PGLOBAL g) override;
 | |
| //int  MakeUpdate(PGLOBAL g);  
 | |
| //int  MakeDelete(PGLOBAL g);
 | |
|   int  SendCommand(PGLOBAL g);
 | |
| 
 | |
|   // Members
 | |
|   MYSQLC      Myc;            // MySQL connection class
 | |
|   MYSQL_BIND *Bind;           // To the MySQL bind structure array
 | |
| //PSTRG       Query;          // Constructed SQL query
 | |
|   char       *Host;           // Host machine to use
 | |
| //char       *User;           // User logon info
 | |
| //char       *Pwd;            // Password logon info
 | |
| //char       *Schema;         // Database to be used by server
 | |
| //char       *TableName;      // External table name
 | |
| //char       *Srcdef;         // The source table SQL definition
 | |
|   char       *Server;         // The server ID
 | |
| //char       *Qrystr;         // The original query
 | |
|   bool        Fetched;        // True when fetch was done
 | |
|   bool        Isview;         // True if this table is a MySQL view
 | |
|   bool        Prep;           // Use prepared statement on insert
 | |
|   bool        Delayed;        // Use delayed insert
 | |
|   bool        Ignored;        // Use insert IGNORE
 | |
|   int         m_Rc;           // Return code from command
 | |
| //int         AftRows;        // The number of affected rows
 | |
|   int         N;              // The current table index
 | |
|   unsigned    Port;          // MySQL port number (0 = default)
 | |
| //int         Nparm;          // The number of statement parameters
 | |
| //int         Quoted;         // The identifier quoting level
 | |
|   }; // end of class TDBMYSQL
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Class MYSQLCOL: MySQL table column.                                */
 | |
| /***********************************************************************/
 | |
| class MYSQLCOL : public COLBLK {
 | |
|   friend class TDBMYSQL;
 | |
|  public:
 | |
|   // Constructors
 | |
|   MYSQLCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i,  PCSZ am = "MYSQL");
 | |
|   MYSQLCOL(MYSQL_FIELD *fld, PTDB tdbp, int i,  PCSZ am = "MYSQL");
 | |
|   MYSQLCOL(MYSQLCOL *colp, PTDB tdbp); // Constructor used in copy process
 | |
| 
 | |
|   // Implementation
 | |
|   int  GetAmType(void) override {return TYPE_AM_MYSQL;}
 | |
|           void InitBind(PGLOBAL g);
 | |
| 
 | |
|   // Methods
 | |
|   bool SetBuffer(PGLOBAL g, PVAL value, bool ok, bool check) override;
 | |
|   void ReadColumn(PGLOBAL g) override;
 | |
|   void WriteColumn(PGLOBAL g) override;
 | |
|           bool FindRank(PGLOBAL g);
 | |
| 
 | |
|  protected:
 | |
|   // Members
 | |
|   MYSQL_BIND   *Bind;            // This column bind structure pointer
 | |
|   PVAL          To_Val;          // To value used for Update/Insert
 | |
|   unsigned long Slen;            // Bind string lengh
 | |
|   int           Rank;            // Rank (position) number in the query
 | |
|   }; // end of class MYSQLCOL
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the class declaration for the exec command MYSQL table.    */
 | |
| /***********************************************************************/
 | |
| class TDBMYEXC : public TDBMYSQL {
 | |
|   friend class MYXCOL;
 | |
|  public:
 | |
|   // Constructors
 | |
|   TDBMYEXC(PMYDEF tdp); 
 | |
|   TDBMYEXC(PTDBMYX tdbp);
 | |
| 
 | |
|   // Implementation
 | |
|   AMT  GetAmType(void) override {return TYPE_AM_MYX;}
 | |
|   PTDB Duplicate(PGLOBAL g) override {return (PTDB)new(g) TDBMYEXC(this);}
 | |
| 
 | |
|   // Methods
 | |
|   PTDB Clone(PTABS t) override;
 | |
|   bool IsView(void) override {return Isview;}
 | |
| 
 | |
|   // Database routines
 | |
|   PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) override;
 | |
|   int  GetMaxSize(PGLOBAL g) override;
 | |
|   bool OpenDB(PGLOBAL g) override;
 | |
|   int  ReadDB(PGLOBAL g) override;
 | |
|   int  WriteDB(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
|   // Internal functions
 | |
|   PCMD MakeCMD(PGLOBAL g);
 | |
| 
 | |
|   // Members
 | |
|   PCMD     Cmdlist;           // The commands to execute
 | |
|   char    *Cmdcol;            // The name of the Xsrc command column
 | |
|   bool     Shw;               // Show warnings
 | |
|   bool     Havew;             // True when processing warnings
 | |
|   bool     Isw;               // True for warning lines
 | |
|   int      Warnings;          // Warnings number
 | |
|   int      Mxr;               // Maximum errors before closing
 | |
|   int      Nerr;              // Number of errors so far
 | |
|   }; // end of class TDBMYEXC
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  Class MYXCOL: MySQL exec command table column.                     */
 | |
| /***********************************************************************/
 | |
| class MYXCOL : public MYSQLCOL {
 | |
|   friend class TDBMYEXC;
 | |
|  public:
 | |
|   // Constructors
 | |
|   MYXCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i,  PCSZ am = "MYSQL");
 | |
|   MYXCOL(MYSQL_FIELD *fld, PTDB tdbp, int i,  PCSZ am = "MYSQL");
 | |
|   MYXCOL(MYXCOL *colp, PTDB tdbp);   // Constructor used in copy process
 | |
| 
 | |
|   // Methods
 | |
|   void ReadColumn(PGLOBAL g) override;
 | |
|   void WriteColumn(PGLOBAL g) override;
 | |
| 
 | |
|  protected:
 | |
|   // Members
 | |
|   char    *Buffer;              // To get returned message
 | |
|   int      Flag;                // Column content desc
 | |
|   }; // end of class MYXCOL
 | |
| 
 | |
| /***********************************************************************/
 | |
| /*  This is the class declaration for the MYSQL column catalog table.  */
 | |
| /***********************************************************************/
 | |
| class TDBMCL : public TDBCAT {
 | |
|  public:
 | |
|   // Constructor
 | |
|   TDBMCL(PMYDEF tdp);
 | |
| 
 | |
|  protected:
 | |
| 	// Specific routines
 | |
| 	PQRYRES GetResult(PGLOBAL g) override;
 | |
| 
 | |
|   // Members
 | |
|   PCSZ Host;                      // Host machine to use            
 | |
| 	PCSZ Db;                        // Database to be used by server  
 | |
| 	PCSZ Tab;                       // External table name            
 | |
| 	PCSZ User;                      // User logon name                
 | |
| 	PCSZ Pwd;                       // Password logon info            
 | |
| 	int  Port;                      // MySQL port number (0 = default)
 | |
|   }; // end of class TDBMCL
 |