1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-04-18 21:44:02 +03:00
Leonid Fedorov 3919c541ac
New warnfixes (#2254)
* Fix clang warnings

* Remove vim tab guides

* initialize variables

* 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length

* Fix ISO C++17 does not allow 'register' storage class specifier for outdated bison

* chars are unsigned on ARM, having  if (ival < 0) always false

* chars are unsigned by default on ARM and comparison with -1 if always true
2022-02-17 13:08:58 +03:00

149 lines
3.1 KiB
C++

/* Copyright (C) 2014 InfiniDB, Inc.
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; version 2 of
the License.
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., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA. */
// $Id: frameboundrow.h 3868 2013-06-06 22:13:05Z xlou $
#pragma once
#include "framebound.h"
namespace windowfunction
{
/** @brief class FrameBoundRow
*
*/
class FrameBoundRow : public FrameBound
{
public:
/** @brief FrameBoundRow constructor
* @param t, frame type
*/
FrameBoundRow(int t = 0) : FrameBound(t){};
/** @brief FrameBoundRow destructor
*/
virtual ~FrameBoundRow(){};
/** @brief clone
*/
virtual FrameBound* clone()
{
return new FrameBoundRow(*this);
}
/** @brief virtual void getBound
*/
int64_t getBound(int64_t, int64_t, int64_t);
const std::string toString() const;
protected:
};
/** @brief class FrameBoundConstantRow
*
*/
class FrameBoundConstantRow : public FrameBoundRow
{
public:
/** @brief FrameBoundConstant constructor
* @param t, frame type
* @param c, constant value. !! caller need to check NULL or negative value !!
*/
FrameBoundConstantRow(int t = 0, int c = 0) : FrameBoundRow(t), fOffset(c){};
/** @brief FrameBoundConstantRow destructor
*/
virtual ~FrameBoundConstantRow(){};
/** @brief clone
*/
virtual FrameBound* clone()
{
return new FrameBoundConstantRow(*this);
}
/** @brief virtual void getBound
*/
int64_t getBound(int64_t, int64_t, int64_t);
const std::string toString() const;
protected:
// constant offset
int64_t fOffset;
};
/** @brief class FrameBoundExpressionRow
*
*/
template <typename T>
class FrameBoundExpressionRow : public FrameBoundConstantRow
{
public:
/** @brief FrameBoundExpressionRow constructor
* @param t, frame type
*/
FrameBoundExpressionRow(int t, uint64_t id = -1, int idx = -1)
: FrameBoundConstantRow(t), fExprTupleId(id), fExprIdx(idx){};
/** @brief FrameBoundExpressionRow destructor
*/
virtual ~FrameBoundExpressionRow(){};
/** @brief clone
*/
virtual FrameBound* clone()
{
return new FrameBoundExpressionRow<T>(*this);
}
/** @brief virtual void getBound
*/
int64_t getBound(int64_t, int64_t, int64_t);
const std::string toString() const;
void setExprTupleId(int id)
{
fExprTupleId = id;
}
uint64_t getExprTupleId() const
{
return fExprTupleId;
}
void setExprIndex(int i)
{
fExprIdx = i;
}
uint64_t getExprIndex() const
{
return fExprIdx;
}
protected:
void getOffset();
// id and index in row
uint64_t fExprTupleId;
int fExprIdx;
};
} // namespace windowfunction