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

@ -13,9 +13,11 @@
#include "sql/code_generator/ob_column_index_provider.h"
#include "sql/resolver/expr/ob_raw_expr.h"
namespace oceanbase {
namespace oceanbase
{
using namespace common;
namespace sql {
namespace sql
{
int RowDesc::init()
{
static const int64_t BUCKET_SIZE = 256;
@ -28,17 +30,17 @@ void RowDesc::reset()
exprs_.reset();
}
int RowDesc::assign(const RowDesc& other)
int RowDesc::assign(const RowDesc &other)
{
reset();
return append(other);
}
int RowDesc::append(const RowDesc& other)
int RowDesc::append(const RowDesc &other)
{
int ret = OB_SUCCESS;
int64_t N = other.get_column_num();
ObRawExpr* raw_expr = NULL;
ObRawExpr *raw_expr = NULL;
for (int64_t i = 0; OB_SUCC(ret) && i < N; ++i) {
if (OB_FAIL(other.get_column(i, raw_expr))) {
SQL_CG_LOG(WARN, "failed to get column", K(ret), K(i), K(other.get_column_num()));
@ -48,11 +50,11 @@ int RowDesc::append(const RowDesc& other)
} else if (OB_FAIL(add_column(raw_expr))) {
SQL_CG_LOG(WARN, "failed to add column", K(ret), K(*raw_expr));
}
} // end for
} // end for
return ret;
}
int RowDesc::add_column(ObRawExpr* raw_expr)
int RowDesc::add_column(ObRawExpr *raw_expr)
{
int ret = OB_SUCCESS;
if (OB_ISNULL(raw_expr)) {
@ -62,12 +64,14 @@ int RowDesc::add_column(ObRawExpr* raw_expr)
SQL_CG_LOG(WARN, "failed to add raw_expr", K(ret), K(*raw_expr));
} else {
int64_t idx = OB_INVALID_INDEX;
ret = expr_idx_map_.get_refactored(reinterpret_cast<int64_t>(static_cast<jit::expr::ObExpr*>(raw_expr)), idx);
ret = expr_idx_map_.get_refactored(reinterpret_cast<int64_t>(
static_cast<jit::expr::ObIRawExpr *>(raw_expr)), idx);
if (OB_HASH_EXIST == ret) {
ret = OB_SUCCESS;
} else if (OB_HASH_NOT_EXIST == ret) {
if (OB_FAIL(expr_idx_map_.set_refactored(
reinterpret_cast<int64_t>(static_cast<jit::expr::ObExpr*>(raw_expr)), exprs_.count() - 1))) {
if (OB_FAIL(expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(
static_cast<jit::expr::ObIRawExpr *>(raw_expr)),
exprs_.count() - 1))) {
SQL_CG_LOG(WARN, "failed to set", K(ret), K(*raw_expr));
} else {
ret = OB_SUCCESS;
@ -76,15 +80,14 @@ int RowDesc::add_column(ObRawExpr* raw_expr)
SQL_CG_LOG(WARN, "failed to get hashmap", K(ret));
}
}
if (OB_SUCC(ret) && !raw_expr->has_flag(IS_COLUMNLIZED)) {
if(OB_FAIL(raw_expr->add_flag(IS_COLUMNLIZED))) {
SQL_CG_LOG(WARN, "failed to add flag IS_COLUMNLIZED", K(ret));
}
if (OB_SUCC(ret) && !raw_expr->has_flag(IS_COLUMNLIZED)
&& OB_FAIL(raw_expr->add_flag(IS_COLUMNLIZED))) {
SQL_CG_LOG(WARN, "failed to add flag", K(ret));
}
return ret;
}
int RowDesc::replace_column(ObRawExpr* old_expr, ObRawExpr* new_expr)
int RowDesc::replace_column(ObRawExpr *old_expr, ObRawExpr *new_expr)
{
int ret = OB_SUCCESS;
int64_t idx = OB_INVALID_INDEX;
@ -96,24 +99,21 @@ int RowDesc::replace_column(ObRawExpr* old_expr, ObRawExpr* new_expr)
ret = OB_HASH_NOT_EXIST;
}
SQL_CG_LOG(WARN, "get expr index failed", K(ret), KPC(old_expr), K_(exprs));
} else if (OB_FAIL(expr_idx_map_.erase_refactored(
reinterpret_cast<int64_t>(static_cast<jit::expr::ObExpr*>(old_expr))))) {
} else if (OB_FAIL(expr_idx_map_.erase_refactored(reinterpret_cast<int64_t>(static_cast<jit::expr::ObIRawExpr *>(old_expr))))) {
SQL_CG_LOG(WARN, "erase old expr failed", K(ret), KPC(old_expr), K(idx));
} else if (OB_FAIL(expr_idx_map_.set_refactored(
reinterpret_cast<int64_t>(static_cast<jit::expr::ObExpr*>(new_expr)), idx))) {
} else if (OB_FAIL(expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(static_cast<jit::expr::ObIRawExpr *>(new_expr)), idx))) {
SQL_CG_LOG(WARN, "set expr idx failed", K(ret), KPC(new_expr), K(idx));
} else {
exprs_.at(idx) = new_expr;
}
if (OB_SUCC(ret) && !new_expr->has_flag(IS_COLUMNLIZED)) {
if(OB_FAIL(new_expr->add_flag(IS_COLUMNLIZED))) {
SQL_CG_LOG(WARN, "failed to add flag IS_COLUMNLIZED", K(ret));
}
if (OB_SUCC(ret) && !new_expr->has_flag(IS_COLUMNLIZED)
&& OB_FAIL(new_expr->add_flag(IS_COLUMNLIZED))) {
SQL_CG_LOG(WARN, "failed to add flag", K(ret));
}
return ret;
}
int RowDesc::swap_position(const ObRawExpr* expr1, const ObRawExpr* expr2)
int RowDesc::swap_position(const ObRawExpr *expr1, const ObRawExpr *expr2)
{
int ret = OB_SUCCESS;
int64_t idx1 = OB_INVALID_INDEX;
@ -131,15 +131,11 @@ int RowDesc::swap_position(const ObRawExpr* expr1, const ObRawExpr* expr2)
ret = OB_HASH_NOT_EXIST;
}
SQL_CG_LOG(WARN, "get expr index failed", K(ret), KPC(expr2), K_(exprs));
} else if (OB_FAIL(
expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(static_cast<const jit::expr::ObExpr*>(expr1)),
idx2,
1 /*overwrite value*/))) {
} else if (OB_FAIL(expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(
static_cast<const jit::expr::ObIRawExpr *>(expr1)), idx2, 1/*overwrite value*/))) {
SQL_CG_LOG(WARN, "overwrite expr1 index failed", K(ret), KPC(expr1), K(idx2));
} else if (OB_FAIL(
expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(static_cast<const jit::expr::ObExpr*>(expr2)),
idx1,
1 /*overwrite value*/))) {
} else if (OB_FAIL(expr_idx_map_.set_refactored(reinterpret_cast<int64_t>(
static_cast<const jit::expr::ObIRawExpr *>(expr2)), idx1, 1/*overwrite value*/))) {
SQL_CG_LOG(WARN, "overwrite expr2 index failed", K(ret), KPC(expr2), K(idx1));
} else {
exprs_.at(idx1) = const_cast<ObRawExpr*>(expr2);
@ -155,14 +151,14 @@ int64_t RowDesc::get_column_num() const
ObRawExpr* RowDesc::get_column(int64_t idx) const
{
ObRawExpr* ret = NULL;
ObRawExpr *ret = NULL;
if (0 <= idx && idx < exprs_.count()) {
ret = reinterpret_cast<ObRawExpr*>(exprs_.at(idx));
}
return ret;
}
int RowDesc::get_column(int64_t idx, ObRawExpr*& raw_expr) const
int RowDesc::get_column(int64_t idx, ObRawExpr *&raw_expr) const
{
int ret = OB_SUCCESS;
if (0 <= idx && idx < exprs_.count()) {
@ -173,12 +169,12 @@ int RowDesc::get_column(int64_t idx, ObRawExpr*& raw_expr) const
return ret;
}
int RowDesc::get_idx(const jit::expr::ObExpr* raw_expr, int64_t& idx) const
int RowDesc::get_idx(const jit::expr::ObIRawExpr *raw_expr, int64_t &idx) const
{
idx = OB_INVALID_INDEX;
int ret = OB_SUCCESS;
if (OB_FAIL(expr_idx_map_.get_refactored(
reinterpret_cast<int64_t>(static_cast<const jit::expr::ObExpr*>(raw_expr)), idx))) {
if (OB_FAIL(expr_idx_map_.get_refactored(reinterpret_cast<int64_t>(
static_cast<const jit::expr::ObIRawExpr *>(raw_expr)), idx))) {
if (OB_HASH_NOT_EXIST == ret) {
ret = OB_ENTRY_NOT_EXIST;
}
@ -186,10 +182,10 @@ int RowDesc::get_idx(const jit::expr::ObExpr* raw_expr, int64_t& idx) const
return ret;
}
const ObIArray<ObRawExpr*>& RowDesc::get_columns() const
const ObIArray<ObRawExpr*> &RowDesc::get_columns() const
{
return exprs_;
}
} // end of namespace sql
} // end of namespace oceanbase
}//end of namespace sql
}//end of namespace oceanbase