patch 4.0
This commit is contained in:
@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user