NDBT_DataSet.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
- /* Copyright (C) 2003 MySQL AB
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
- #ifndef NDBT_DATA_SET_HPP
- #define NDBT_DATA_SET_HPP
- #include "NDBT_Table.hpp"
- #include <NdbApi.hpp>
- class NDBT_DataSet;
- class NDBT_DataSetFactory {
- public:
- NDBT_DataSet * createEmpty(const NDBT_Table & table,
- const char * columns[]);
-
- NDBT_DataSet * createRandom(const NDBT_DataSet & table,
- const char * columns[],
- int rows);
-
- NDBT_DataSet * createXXX(int noOfDS, const NDBT_DataSet ** datasets);
- };
- class NDBT_DataSet {
- friend class NDBT_DataSetFactory;
- public:
- /**
- * Rows in the data set
- */
- void setRows(int rows);
- void addRows(int rows);
-
- int getNoOfRows() const;
- /**
- * Columns for a row in the data set
- */
- int getNoOfColumns() const;
- int getNoOfPKs() const;
-
- const NDBT_Attribute * getColumn(int index);
- const NDBT_Attribute * getColumn(const char * name);
-
- /**
- * Data status in dataset
- */
- bool hasPK(int row);
- bool hasData(int row);
- /**
- * Do all rows in the dataset have a PK
- */
- bool hasPK();
-
- /**
- * Do all rows in the dataset has data
- */
- bool hasData();
-
- /**
- * Getters for data
- */
- Uint32 getUInt(int row, int index) const;
- Uint32 getUInt(int row, const char * attribute) const;
-
- Int32 getInt(int row, int index) const;
- Int32 getInt(int row, const char * attribute) const;
-
- const char * getString(int row, int index) const;
- const char * getString(int row, const char * attribute) const;
- bool getIsNull(int row, int index) const;
- bool getIsNull(int row, const char * attribute) const;
-
- /**
- * Setters for data
- */
- void set(int row, int index, Int32 value);
- void set(int row, const char * attr, Int32 value);
-
- void set(int row, int index, Uint32 value);
- void set(int row, const char * attr, Uint32 value);
-
- void set(int row, int index, const char * value);
- void set(int row, const char * attr, const char * value);
- /**
- * Comparators
- */
- /**
- * Is this dataset identical to other dataset
- *
- * If either of the datasets have "undefined" rows the answer is false
- */
- bool equal(const NDBT_DataSet & other) const;
-
- /**
- * Do these dataset have identical PK's
- *
- * I.e noOfRows equal
- *
- * and for each row there is a corresponding row in the other ds
- * with the same pk
- */
- bool equalPK(const NDBT_DataSet & other) const;
- private:
- NDBT_Attribute * columns;
-
- Uint32 noOfRows;
- Uint32 noOfPKs;
-
- Uint32 * pks;
- Uint32 * columnSizes;
-
- char * pkData;
- char * data;
- char * pk(int row, int pkIndex);
- char * column(int row, int columnIndex);
- Uint32 * hasPK;
- Uint32 * hasData;
- };
- #endif