Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  tabmysql.h   Sprache: 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

Messung V0.5 in Prozent
C=49 H=100 G=78

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1897691