mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	fp->field_length was unsigned and therefore the negative
condition around it.
Backport of cc182aca93 fixes it, however to correct the
consistent use of types pcf->Length needs to be unsigned
too.
At one point pcf->Precision is assigned from pcf->Length so
that's also unsigned.
GetTypeSize is assigned to length and has a length argument.
A -1 default value seemed dangerious to case, so at least 0
should assert if every hit.
		
	
			
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*************** Catalog H Declares Source Code File (.H) **************/
 | 
						|
/*  Name: CATALOG.H  Version 3.3                                       */
 | 
						|
/*                                                                     */
 | 
						|
/*  (C) Copyright to the author Olivier BERTRAND          2000-2015    */
 | 
						|
/*                                                                     */
 | 
						|
/*  This file contains the CATALOG PlugDB classes definitions.         */
 | 
						|
/***********************************************************************/
 | 
						|
#ifndef __CATALOG__H
 | 
						|
#define  __CATALOG__H
 | 
						|
 | 
						|
#include "block.h"
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Defines the length of a buffer to contain entire table section.    */
 | 
						|
/***********************************************************************/
 | 
						|
#define PLG_MAX_PATH    144   /* Must be the same across systems       */
 | 
						|
#define PLG_BUFF_LEN    100   /* Number of lines in binary file buffer */
 | 
						|
 | 
						|
 | 
						|
//typedef class INDEXDEF *PIXDEF;
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Defines the structure used to enumerate tables or views.           */
 | 
						|
/***********************************************************************/
 | 
						|
typedef struct _curtab {
 | 
						|
  PRELDEF CurTdb;
 | 
						|
  char   *Curp;
 | 
						|
  char   *Tabpat;
 | 
						|
  bool    Ispat;
 | 
						|
  bool    NoView;
 | 
						|
  int     Nt;
 | 
						|
  char   *Type[16];
 | 
						|
  } CURTAB, *PCURTAB;
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Defines the structure used to get column catalog info.             */
 | 
						|
/***********************************************************************/
 | 
						|
typedef struct _colinfo {
 | 
						|
  PCSZ   Name;
 | 
						|
  int    Type;
 | 
						|
  int    Offset;
 | 
						|
  unsigned    Length;
 | 
						|
  int    Key;
 | 
						|
  unsigned    Precision;
 | 
						|
  int    Scale;
 | 
						|
  int    Opt;
 | 
						|
  int    Freq;
 | 
						|
  PCSZ   Remark;
 | 
						|
  PCSZ   Datefmt;
 | 
						|
  PCSZ   Fieldfmt;
 | 
						|
  ushort Flags;         // Used by MariaDB CONNECT handlers
 | 
						|
  } COLINFO, *PCOLINFO;
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  CATALOG: base class for catalog classes.                           */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport CATALOG {
 | 
						|
  friend class RELDEF;
 | 
						|
  friend class TABDEF;
 | 
						|
  friend class DIRDEF;
 | 
						|
  friend class OEMDEF;
 | 
						|
 public:
 | 
						|
  CATALOG(void);                       // Constructor
 | 
						|
  virtual ~CATALOG() = default;        // Make -Wdelete-non-virtual-dtor happy
 | 
						|
 | 
						|
  // Implementation
 | 
						|
  int     GetCblen(void) {return Cblen;}
 | 
						|
  bool    GetDefHuge(void) {return DefHuge;}
 | 
						|
  void    SetDefHuge(bool b) {DefHuge = b;}
 | 
						|
  char   *GetCbuf(void) {return Cbuf;}
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void    Reset(void) {}
 | 
						|
  virtual bool    CheckName(PGLOBAL, char*) {return true;}
 | 
						|
  virtual bool    ClearName(PGLOBAL, PSZ) {return true;}
 | 
						|
  virtual PRELDEF MakeOneTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;}
 | 
						|
  virtual PRELDEF GetTableDescEx(PGLOBAL, PTABLE) {return NULL;}
 | 
						|
  //virtual PRELDEF GetTableDesc(PGLOBAL, LPCSTR, LPCSTR,
 | 
						|
  //                                      PRELDEF* = NULL) {return NULL;}
 | 
						|
  virtual PRELDEF GetFirstTable(PGLOBAL) {return NULL;}
 | 
						|
  virtual PRELDEF GetNextTable(PGLOBAL) {return NULL;}
 | 
						|
  virtual bool    TestCond(PGLOBAL, const char*, const char*) {return true;}
 | 
						|
  virtual bool    DropTable(PGLOBAL, PSZ, bool) {return true;}
 | 
						|
  virtual PTDB    GetTable(PGLOBAL, PTABLE,
 | 
						|
                           MODE = MODE_READ, LPCSTR = NULL) {return NULL;}
 | 
						|
  virtual void    TableNames(PGLOBAL, char*, int, int[]) {}
 | 
						|
  virtual void    ColumnNames(PGLOBAL, char*, char*, int, int[]) {}
 | 
						|
  virtual void    ColumnDefs(PGLOBAL, char*, char*, int, int[]) {}
 | 
						|
  virtual void   *DecodeValues(PGLOBAL, char*, char*, char*,
 | 
						|
                                        int, int[]) {return NULL;}
 | 
						|
  virtual int     ColumnType(PGLOBAL, char*, char*) {return 0;}
 | 
						|
  virtual void    ClearDB(PGLOBAL) {}
 | 
						|
 | 
						|
 protected:
 | 
						|
  virtual bool    ClearSection(PGLOBAL, const char*, const char*) {return true;}
 | 
						|
  //virtual PRELDEF MakeTableDesc(PGLOBAL, LPCSTR, LPCSTR) {return NULL;}
 | 
						|
 | 
						|
  // Members
 | 
						|
  char   *Cbuf;                        /* Buffer used for col section  */
 | 
						|
  int     Cblen;                       /* Length of suballoc. buffer   */
 | 
						|
  CURTAB  Ctb;                         /* Used to enumerate tables     */
 | 
						|
  bool    DefHuge;                     /* true: tables default to huge */
 | 
						|
  }; // end of class CATALOG
 | 
						|
 | 
						|
#endif // __CATALOG__H
 |