mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
08c852026d
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".
104 lines
3.7 KiB
C++
104 lines
3.7 KiB
C++
// TABXCL.H Olivier Bertrand 2013
|
|
// Defines the XCOL tables
|
|
|
|
#include "tabutil.h"
|
|
|
|
typedef class XCLDEF *PXCLDEF;
|
|
typedef class TDBXCL *PTDBXCL;
|
|
typedef class XCLCOL *PXCLCOL;
|
|
|
|
/* -------------------------- XCOL classes --------------------------- */
|
|
|
|
/***********************************************************************/
|
|
/* XCOL: table having one column containing several values comma */
|
|
/* (or any other character) separated. When creating the table, the */
|
|
/* name of the X column is given by the NAME option. */
|
|
/* This sample has a limitation: */
|
|
/* - The X column has the same length than in the physical file. */
|
|
/* This tables produces as many rows for a physical row than the */
|
|
/* number of items in the X column (eventually 0). */
|
|
/***********************************************************************/
|
|
|
|
/***********************************************************************/
|
|
/* XCL table. */
|
|
/***********************************************************************/
|
|
class XCLDEF : public PRXDEF { /* Logical table description */
|
|
friend class TDBXCL;
|
|
public:
|
|
// Constructor
|
|
XCLDEF(void);
|
|
|
|
// Implementation
|
|
virtual const char *GetType(void) {return "XCL";}
|
|
|
|
// Methods
|
|
virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff);
|
|
virtual PTDB GetTable(PGLOBAL g, MODE mode);
|
|
|
|
protected:
|
|
// Members
|
|
char *Xcol; /* The column containing separated fields */
|
|
char Sep; /* The field separator, defaults to comma */
|
|
int Mult; /* Multiplication factor */
|
|
}; // end of XCLDEF
|
|
|
|
/***********************************************************************/
|
|
/* This is the class declaration for the XCOL table. */
|
|
/***********************************************************************/
|
|
class TDBXCL : public TDBPRX {
|
|
friend class XCLDEF;
|
|
friend class PRXCOL;
|
|
friend class XCLCOL;
|
|
public:
|
|
// Constructor
|
|
TDBXCL(PXCLDEF tdp);
|
|
|
|
// Implementation
|
|
virtual AMT GetAmType(void) {return TYPE_AM_XCOL;}
|
|
|
|
// Methods
|
|
virtual void ResetDB(void) {N = 0; Tdbp->ResetDB();}
|
|
virtual int RowNumber(PGLOBAL g, bool b = FALSE);
|
|
|
|
// Database routines
|
|
virtual PCOL MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n);
|
|
virtual int GetMaxSize(PGLOBAL g);
|
|
virtual bool OpenDB(PGLOBAL g);
|
|
virtual int ReadDB(PGLOBAL g);
|
|
|
|
protected:
|
|
// Members
|
|
char *Xcolumn; // Multiple column name
|
|
PXCLCOL Xcolp; // To the XCVCOL column
|
|
int Mult; // Multiplication factor
|
|
int N; // The current table index
|
|
int M; // The occurence rank
|
|
BYTE RowFlag; // 0: Ok, 1: Same, 2: Skip
|
|
bool New; // TRUE for new line
|
|
char Sep; // The Xcol separator
|
|
}; // end of class TDBXCL
|
|
|
|
/***********************************************************************/
|
|
/* Class XCLCOL: for the multiple CSV column. */
|
|
/***********************************************************************/
|
|
class XCLCOL : public PRXCOL {
|
|
friend class TDBXCL;
|
|
public:
|
|
// Constructors
|
|
XCLCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i);
|
|
|
|
// Methods
|
|
using PRXCOL::Init;
|
|
virtual void Reset(void) {} // Evaluated only by TDBXCL
|
|
virtual void ReadColumn(PGLOBAL g);
|
|
virtual bool Init(PGLOBAL g, PTDB tp = NULL);
|
|
|
|
protected:
|
|
// Default constructor not to be used
|
|
XCLCOL(void) = default;
|
|
|
|
// Members
|
|
char *Cbuf; // The column buffer
|
|
char *Cp; // Pointer to current position
|
|
char Sep; // The separator
|
|
}; // end of class XCLCOL
|