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

@ -14,58 +14,59 @@
#define OCEANBASE_SQL_RESOLVER_OB_PARTITIONED_STMT_H_ 1
#include "share/ob_rpc_struct.h"
#include "sql/resolver/ddl/ob_ddl_stmt.h"
namespace oceanbase {
namespace sql {
class ObPartitionedStmt : public ObDDLStmt {
namespace oceanbase
{
namespace sql
{
class ObPartitionedStmt : public ObDDLStmt
{
public:
ObPartitionedStmt(common::ObIAllocator* name_pool, stmt::StmtType type) : ObDDLStmt(name_pool, type)
{}
explicit ObPartitionedStmt(stmt::StmtType type) : ObDDLStmt(type)
{}
virtual ~ObPartitionedStmt()
{}
ObPartitionedStmt(common::ObIAllocator *name_pool, stmt::StmtType type)
: ObDDLStmt(name_pool, type), interval_expr_(NULL), use_def_sub_part_(true) {}
explicit ObPartitionedStmt(stmt::StmtType type)
: ObDDLStmt(type), interval_expr_(NULL), use_def_sub_part_(true) {}
virtual ~ObPartitionedStmt() {}
array_t& get_part_fun_exprs()
{
return part_fun_exprs_;
}
array_t& get_part_values_exprs()
{
return part_values_exprs_;
}
array_t& get_subpart_fun_exprs()
{
return subpart_fun_exprs_;
}
array_t& get_template_subpart_values_exprs()
{
return template_subpart_values_exprs_;
}
array_array_t& get_individual_subpart_values_exprs()
{
return individual_subpart_values_exprs_;
}
array_t &get_part_fun_exprs() { return part_fun_exprs_; }
array_t &get_part_values_exprs() { return part_values_exprs_; }
array_t &get_subpart_fun_exprs() { return subpart_fun_exprs_; }
array_t &get_template_subpart_values_exprs() { return template_subpart_values_exprs_; }
array_array_t &get_individual_subpart_values_exprs() { return individual_subpart_values_exprs_; }
ObRawExpr *get_interval_expr() { return interval_expr_; }
void set_interval_expr(ObRawExpr* interval_expr) { interval_expr_ = interval_expr; }
bool use_def_sub_part() const { return use_def_sub_part_; }
void set_use_def_sub_part(bool use_def_sub_part) { use_def_sub_part_ = use_def_sub_part; }
TO_STRING_KV(K_(part_fun_exprs), K_(part_values_exprs), K_(subpart_fun_exprs), K_(template_subpart_values_exprs),
K_(individual_subpart_values_exprs));
TO_STRING_KV(K_(part_fun_exprs),
K_(part_values_exprs),
K_(subpart_fun_exprs),
K_(template_subpart_values_exprs),
K_(individual_subpart_values_exprs),
K_(interval_expr),
K_(use_def_sub_part));
private:
/**
* part_values_exprs demo:
* range: array of single value, e.g.
* partition by range(c1) (partition p0 values less than (100), partition p1 values less than (200))
* array = [100, 200]
* partition by range columns (c1,c2) (partition p0 values less than (100, 200), partition p1 values less than (300,
* 300)) array = [100, 200, 300, 400] list: array of row, each row store some values of a single range, e.g. partition
* by list(c1) (partition p0 values in (1,2,3,4,5), partition p1 values less in (6,7,8,9,10)) array = [(1,2,3,4,5),
* (6,7,8,9,10)] partition by list columns (c1,c2) (partition p0 values in ((1,1),(2,2),(3,3)), partition p1 values
* less in ((6,6),(7,7),(8,8))) array = [(1,1,2,2,3,3), (6,6,7,7,8,8)]
*/
array_t part_fun_exprs_; // for part fun expr
array_t part_values_exprs_; // for part values expr
array_t subpart_fun_exprs_; // for subpart fun expr
array_t template_subpart_values_exprs_; // for template subpart fun expr
array_array_t individual_subpart_values_exprs_; // for individual subpart values expr
/**
* part_values_exprs的组织形式如下:
* range 分区平铺, e.g.
* partition by range(c1) (partition p0 values less than (100), partition p1 values less than (200))
* array = [100, 200]
* partition by range columns (c1,c2) (partition p0 values less than (100, 200), partition p1 values less than (300, 300))
* array = [100, 200, 300, 400]
* list 分区将每个分区的值平铺到一个row中, array中保存row, e.g.
* partition by list(c1) (partition p0 values in (1,2,3,4,5), partition p1 values less in (6,7,8,9,10))
* array = [(1,2,3,4,5), (6,7,8,9,10)]
* partition by list columns (c1,c2) (partition p0 values in ((1,1),(2,2),(3,3)), partition p1 values less in ((6,6),(7,7),(8,8)))
* array = [(1,1,2,2,3,3), (6,6,7,7,8,8)]
*/
array_t part_fun_exprs_; // for part fun expr
array_t part_values_exprs_; // for part values expr
array_t subpart_fun_exprs_; // for subpart fun expr
array_t template_subpart_values_exprs_; // for template subpart fun expr
array_array_t individual_subpart_values_exprs_; //for individual subpart values expr
ObRawExpr *interval_expr_;
bool use_def_sub_part_; // control resolver behaviour when resolve composited-partitioned table/tablegroup
private:
DISALLOW_COPY_AND_ASSIGN(ObPartitionedStmt);
};