mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 da1c91fb92
			
		
	
	
	da1c91fb92
	
	
	
		
			
			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
 |