mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	This patch is the result of running run-clang-tidy -fix -header-filter=.* -checks='-*,modernize-use-equals-default' . Code style changes have been done on top. The result of this change leads to the following improvements: 1. Binary size reduction. * For a -DBUILD_CONFIG=mysql_release build, the binary size is reduced by ~400kb. * A raw -DCMAKE_BUILD_TYPE=Release reduces the binary size by ~1.4kb. 2. Compiler can better understand the intent of the code, thus it leads to more optimization possibilities. Additionally it enabled detecting unused variables that had an empty default constructor but not marked so explicitly. Particular change required following this patch in sql/opt_range.cc result_keys, an unused template class Bitmap now correctly issues unused variable warnings. Setting Bitmap template class constructor to default allows the compiler to identify that there are no side-effects when instantiating the class. Previously the compiler could not issue the warning as it assumed Bitmap class (being a template) would not be performing a NO-OP for its default constructor. This prevented the "unused variable warning".
		
			
				
	
	
		
			295 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			295 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*************** BlkFil H Declares Source Code File (.H) ***************/
 | 
						|
/*  Name: BLKFIL.H    Version 2.1                                      */
 | 
						|
/*                                                                     */
 | 
						|
/*  (C) Copyright to the author Olivier BERTRAND          2004-2010    */
 | 
						|
/*                                                                     */
 | 
						|
/*  This file contains the block optimization related classes declares */
 | 
						|
/***********************************************************************/
 | 
						|
#ifndef __BLKFIL__
 | 
						|
#define __BLKFIL__
 | 
						|
 | 
						|
typedef class BLOCKFILTER *PBF;
 | 
						|
typedef class BLOCKINDEX  *PBX;
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLOCKFILTER.                                   */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLOCKFILTER : public BLOCK {           /* Block Filter */
 | 
						|
  friend class BLKFILLOG;
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLOCKFILTER(PTDBDOS tdbp, int op);
 | 
						|
 | 
						|
  // Implementation
 | 
						|
          int  GetResult(void) {return Result;}
 | 
						|
          bool Correlated(void) {return Correl;}
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL) = 0;
 | 
						|
  virtual int  BlockEval(PGLOBAL) = 0;
 | 
						|
  virtual void Printf(PGLOBAL g, FILE *f, uint n);
 | 
						|
  virtual void Prints(PGLOBAL g, char *ps, uint z);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLOCKFILTER(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  PTDBDOS Tdbp;         // Owner TDB
 | 
						|
  bool    Correl;       // TRUE for correlated subqueries
 | 
						|
  int     Opc;          // Comparison operator
 | 
						|
  int     Opm;          // Operator modificator
 | 
						|
  int     Result;       // Result from evaluation
 | 
						|
  }; // end of class BLOCKFILTER
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILLOG (with Op=OP_AND,OP_OR, or OP_NOT)    */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILLOG : public BLOCKFILTER { /* Logical Op Block Filter */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILLOG(PTDBDOS tdbp, int op, PBF *bfp, int n);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKFILLOG(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  PBF *Fil;                // Points to Block filter args
 | 
						|
  int N;
 | 
						|
  }; // end of class BLKFILLOG
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILARI (with Op=OP_EQ,NE,GT,GE,LT, or LE)   */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILARI : public BLOCKFILTER { /* Arithm. Op Block Filter */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILARI(PGLOBAL g, PTDBDOS tdbp, int op, PXOB *xp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
  virtual void MakeValueBitmap(void) {}
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKFILARI(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  PDOSCOL Colp;            // Points to column argument
 | 
						|
  PCOL    Cpx;             // Point to subquery "constant" column
 | 
						|
  PVAL    Valp;            // Points to constant argument Value
 | 
						|
  bool    Sorted;          // True if the column is sorted
 | 
						|
  }; // end of class BLKFILARI
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILAR2 (with Op=OP_EQ,NE,GT,GE,LT, or LE)   */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILAR2 : public BLKFILARI { /* Arithm. Op Block Filter */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILAR2(PGLOBAL g, PTDBDOS tdbp, int op, PXOB *xp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
  virtual void MakeValueBitmap(void);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKFILAR2(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  uint Bmp;                // The value bitmap used to test blocks
 | 
						|
  uint Bxp;                // Bitmap used when Opc = OP_EQ
 | 
						|
  }; // end of class BLKFILAR2
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILAR2 (with Op=OP_EQ,NE,GT,GE,LT, or LE)   */
 | 
						|
/*  To be used when the bitmap is an array of ULONG bitmaps;           */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILMR2 : public BLKFILARI { /* Arithm. Op Block Filter */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILMR2(PGLOBAL g, PTDBDOS tdbp, int op, PXOB *xp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
  virtual void MakeValueBitmap(void);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKFILMR2(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  int    Nbm;              // The number of ULONG bitmaps
 | 
						|
  int    N;                // The position of the leftmost ULONG
 | 
						|
  bool   Void;             // True if all file blocks can be skipped
 | 
						|
  uint  *Bmp;              // The values bitmaps used to test blocks
 | 
						|
  uint  *Bxp;              // Bit of values <= max value
 | 
						|
  }; // end of class BLKFILMR2
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKSPCARI (with Op=OP_EQ,NE,GT,GE,LT, or LE)   */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKSPCARI : public BLOCKFILTER { /* Arithm. Op Block Filter */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKSPCARI(PTDBDOS tdbp, int op, PXOB *xp, int bsize);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKSPCARI(void) = default;       // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  PCOL    Cpx;             // Point to subquery "constant" column
 | 
						|
  PVAL    Valp;            // Points to constant argument Value
 | 
						|
  int     Val;             // Constant argument Value
 | 
						|
  int     Bsize;           // Table block size
 | 
						|
  }; // end of class BLKSPCARI
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILIN (with Op=OP_IN)                       */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILIN : public BLOCKFILTER {  // With array arguments.
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILIN(PGLOBAL g, PTDBDOS tdbp, int op, int opm, PXOB *xp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
  virtual void MakeValueBitmap(void) {}
 | 
						|
 | 
						|
 protected:
 | 
						|
  // Member
 | 
						|
  PDOSCOL Colp;            // Points to column argument
 | 
						|
  PARRAY  Arap;            // Points to array argument
 | 
						|
  bool    Sorted;          // True if the column is sorted
 | 
						|
  int     Type;            // Type of array elements
 | 
						|
  }; // end of class BLKFILIN
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKFILIN2 (with Op=OP_IN)                      */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKFILIN2 : public BLKFILIN {  // With array arguments.
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKFILIN2(PGLOBAL g, PTDBDOS tdbp, int op, int opm, PXOB *xp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
//virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
  virtual void MakeValueBitmap(void);
 | 
						|
 | 
						|
 protected:
 | 
						|
  // Member
 | 
						|
  int    Nbm;              // The number of ULONG bitmaps
 | 
						|
  int    N;                // The position of the leftmost ULONG
 | 
						|
//bool   Bitmap;           // True for IN operator (temporary)
 | 
						|
  bool   Void;             // True if all file blocks can be skipped
 | 
						|
  bool   Invert;           // True when Result must be inverted
 | 
						|
  uint  *Bmp;              // The values bitmaps used to test blocks
 | 
						|
  uint  *Bxp;              // Bit of values <= max value
 | 
						|
  PVAL   Valp;             // Used while building the bitmaps
 | 
						|
  }; // end of class BLKFILIN2
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKSPCIN (with Op=OP_IN) Special column        */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKSPCIN : public BLOCKFILTER {  // With array arguments.
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKSPCIN(PGLOBAL g, PTDBDOS tdbp, int op, int opm, PXOB *xp, int bsize);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual void Reset(PGLOBAL g);
 | 
						|
  virtual int  BlockEval(PGLOBAL g);
 | 
						|
 | 
						|
 protected:
 | 
						|
  // Member
 | 
						|
  PARRAY  Arap;            // Points to array argument
 | 
						|
  int     Bsize;           // Table block size
 | 
						|
  }; // end of class BLKSPCIN
 | 
						|
 | 
						|
// ---------------- Class used in block indexing testing ----------------
 | 
						|
 | 
						|
#if 0
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLOCKINDEX.                                    */
 | 
						|
/*  Used to test the indexing to joined tables when the foreign key is */
 | 
						|
/*  a clustered or sorted column. If the table is joined to several    */
 | 
						|
/*  tables, blocks will be chained together.                           */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLOCKINDEX : public BLOCK {     /* Indexing Test Block */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLOCKINDEX(PBX nx, PDOSCOL cp, PKXBASE kp);
 | 
						|
 | 
						|
  // Implementation
 | 
						|
          PBX  GetNext(void) {return Next;}
 | 
						|
 | 
						|
  // Methods
 | 
						|
          void Reset(void);
 | 
						|
  virtual int  BlockEval(PGLOBAL);
 | 
						|
  virtual void Printf(PGLOBAL g, FILE *f, UINT n);
 | 
						|
  virtual void Prints(PGLOBAL g, char *ps, UINT z);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLOCKINDEX(void) {}   // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  PBX     Next;         // To next Index Block
 | 
						|
  PTDBDOS Tdbp;         // To table description block
 | 
						|
  PDOSCOL Colp;         // Clustered foreign key
 | 
						|
  PKXBASE Kxp;          // To Kindex of joined table
 | 
						|
  bool    Sorted;       // TRUE if column is sorted
 | 
						|
  int     Type;         // Col/Index type
 | 
						|
  int     Result;       // Result from evaluation
 | 
						|
  }; // end of class BLOCKINDEX
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLOCKINDX2.     (XDB2)                         */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLOCKINDX2 : public BLOCKINDEX { /* Indexing Test Block */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLOCKINDX2(PBX nx, PDOSCOL cp, PKXBASE kp);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual int  BlockEval(PGLOBAL);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLOCKINDX2(void) {}   // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  int   Nbm;            // The number of ULONG bitmaps
 | 
						|
  PVBLK Dval;           // Array of column distinct values
 | 
						|
  PVBLK Bmap;           // Array of block bitmap values
 | 
						|
  }; // end of class BLOCKINDX2
 | 
						|
 | 
						|
/***********************************************************************/
 | 
						|
/*  Definition of class BLKSPCINDX.                                    */
 | 
						|
/*  Used to test the indexing to joined tables when the foreign key is */
 | 
						|
/*  the ROWID special column. If the table is joined to several        */
 | 
						|
/*  tables, blocks will be chained together.                           */
 | 
						|
/***********************************************************************/
 | 
						|
class DllExport BLKSPCINDX : public BLOCKINDEX { /* Indexing Test Block */
 | 
						|
 public:
 | 
						|
  // Constructors
 | 
						|
  BLKSPCINDX(PBX nx, PTDBDOS tp, PKXBASE kp, int bsize);
 | 
						|
 | 
						|
  // Methods
 | 
						|
  virtual int  BlockEval(PGLOBAL);
 | 
						|
 | 
						|
 protected:
 | 
						|
  BLKSPCINDX(void) {}   // Standard constructor not to be used
 | 
						|
 | 
						|
  // Members
 | 
						|
  int     Bsize;        // Table block size
 | 
						|
  }; // end of class BLOCKINDEX
 | 
						|
#endif // 0
 | 
						|
 | 
						|
#endif // __BLKFIL__
 |