patch 4.0

This commit is contained in:
wangzelin.wzl
2022-10-24 10:34:53 +08:00
parent 4ad6e00ec3
commit 93a1074b0c
10533 changed files with 2588271 additions and 2299373 deletions

View File

@ -15,13 +15,21 @@
#include "sql/engine/expr/ob_expr_operator.h"
namespace oceanbase {
namespace sql {
class ObExprBaseLeastGreatest : public ObMinMaxExprOperator {
namespace oceanbase
{
namespace sql
{
class ObExprLeastGreatest : public ObMinMaxExprOperator
{
public:
explicit ObExprBaseLeastGreatest(
common::ObIAllocator& alloc, ObExprOperatorType type, const char* name, int32_t param_num);
virtual ~ObExprBaseLeastGreatest();
explicit ObExprLeastGreatest(common::ObIAllocator &alloc, ObExprOperatorType type,
const char *name, int32_t param_num);
virtual ~ObExprLeastGreatest() {}
virtual int calc_result_typeN(ObExprResType &type,
ObExprResType *types_stack,
int64_t param_num,
common::ObExprTypeCtx &type_ctx) const;
int calc_result_typeN_oracle(ObExprResType &type,
ObExprResType *types_stack,
int64_t param_num,
@ -30,10 +38,18 @@ public:
ObExprResType *types_stack,
int64_t param_num,
common::ObExprTypeCtx &type_ctx) const;
void set_param_type(const ObExprResType &type,
ObExprResType *types,
int64_t param_num) const;
static int calc(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &expr_datum, bool least);
virtual int cg_expr(ObExprCGCtx &op_cg_ctx,
const ObRawExpr &raw_expr,
ObExpr &rt_expr) const override;
static int cast_param(const ObExpr &src_expr, ObEvalCtx &ctx,
const ObDatumMeta &dst_meta,
const ObCastMode &cm, ObIAllocator &allocator,
ObDatum &res_datum);
static int cast_result(const ObExpr &src_expr, const ObExpr &dst_expr, ObEvalCtx &ctx,
const ObCastMode &cm,
ObDatum &expr_datum);
static int calc_mysql(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &expr_datum, bool least);
static int calc_oracle(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &expr_datum, bool least);
// left < right: return true, else return false.
static inline bool cmp_integer(const ObDatum &l_datum, const bool l_is_int,
const ObDatum &r_datum, const bool r_is_int)
@ -52,59 +68,22 @@ public:
}
private:
// disallow copy
DISALLOW_COPY_AND_ASSIGN(ObExprBaseLeastGreatest);
DISALLOW_COPY_AND_ASSIGN(ObExprLeastGreatest);
};
class ObExprBaseLeast : public ObExprBaseLeastGreatest {
class ObExprLeast : public ObExprLeastGreatest
{
public:
explicit ObExprBaseLeast(common::ObIAllocator& alloc, int32_t param_num, ObExprOperatorType type = T_FUN_SYS_LEAST,
const char* name = N_LEAST);
virtual ~ObExprBaseLeast();
virtual int calc_result_typeN(
ObExprResType& type, ObExprResType* types_stack, int64_t param_num, common::ObExprTypeCtx& type_ctx) const override;
virtual int calc_resultN(
common::ObObj& result, const common::ObObj* objs_stack, int64_t param_num, common::ObExprCtx& expr_ctx) const override;
virtual int cg_expr(ObExprCGCtx& op_cg_ctx, const ObRawExpr& raw_expr, ObExpr& rt_expr) const override;
static int calc_least(const ObExpr& expr, ObEvalCtx& ctx, ObDatum& expr_datum);
explicit ObExprLeast(common::ObIAllocator &alloc);
virtual ~ObExprLeast() {}
static int calc_least(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &expr_datum);
private:
// disallow copy
DISALLOW_COPY_AND_ASSIGN(ObExprBaseLeast);
DISALLOW_COPY_AND_ASSIGN(ObExprLeast);
};
class ObExprLeastMySQL : public ObExprBaseLeast {
public:
explicit ObExprLeastMySQL(common::ObIAllocator& alloc);
virtual ~ObExprLeastMySQL();
virtual int calc_result_typeN(
ObExprResType& type, ObExprResType* types_stack, int64_t param_num, common::ObExprTypeCtx& type_ctx) const;
private:
DISALLOW_COPY_AND_ASSIGN(ObExprLeastMySQL);
};
class ObExprLeastMySQLInner : public ObExprBaseLeast {
public:
explicit ObExprLeastMySQLInner(common::ObIAllocator& alloc);
virtual ~ObExprLeastMySQLInner();
virtual int calc_result_typeN(
ObExprResType& type, ObExprResType* types_stack, int64_t param_num, common::ObExprTypeCtx& type_ctx) const;
private:
DISALLOW_COPY_AND_ASSIGN(ObExprLeastMySQLInner);
};
class ObExprOracleLeast : public ObExprBaseLeast {
public:
explicit ObExprOracleLeast(common::ObIAllocator& alloc);
virtual ~ObExprOracleLeast();
virtual int calc_result_typeN(
ObExprResType& type, ObExprResType* types_stack, int64_t param_num, common::ObExprTypeCtx& type_ctx) const;
private:
DISALLOW_COPY_AND_ASSIGN(ObExprOracleLeast);
};
} // namespace sql
} // namespace oceanbase
}
}
#endif /* _OB_SQL_EXPR_LEAST_H_ */