Merge DAY() system function into opensource branch.
This commit is contained in:
1
deps/oblib/src/lib/ob_name_def.h
vendored
1
deps/oblib/src/lib/ob_name_def.h
vendored
@ -523,6 +523,7 @@
|
|||||||
#define N_TO_TIMESTAMP_TZ "to_timestamp_tz"
|
#define N_TO_TIMESTAMP_TZ "to_timestamp_tz"
|
||||||
#define N_TO_DAYS "to_days"
|
#define N_TO_DAYS "to_days"
|
||||||
#define N_DAY_OF_MONTH "dayofmonth"
|
#define N_DAY_OF_MONTH "dayofmonth"
|
||||||
|
#define N_DAY "day"
|
||||||
#define N_DAY_OF_WEEK "dayofweek"
|
#define N_DAY_OF_WEEK "dayofweek"
|
||||||
#define N_DAY_OF_YEAR "dayofyear"
|
#define N_DAY_OF_YEAR "dayofyear"
|
||||||
#define N_HOUR "hour"
|
#define N_HOUR "hour"
|
||||||
|
|||||||
@ -36,6 +36,12 @@ int ObExprDayOfMonth::calc_dayofmonth(const ObExpr& expr, ObEvalCtx& ctx, ObDatu
|
|||||||
return ObExprTimeBase::calc(expr, ctx, expr_datum, DT_MDAY, true, true);
|
return ObExprTimeBase::calc(expr, ctx, expr_datum, DT_MDAY, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ObExprDay::ObExprDay(ObIAllocator &alloc)
|
||||||
|
: ObExprTimeBase(alloc, DT_MDAY, T_FUN_SYS_DAY, N_DAY){};
|
||||||
|
|
||||||
|
ObExprDay::~ObExprDay()
|
||||||
|
{}
|
||||||
|
|
||||||
ObExprDayOfWeek::ObExprDayOfWeek(ObIAllocator& alloc)
|
ObExprDayOfWeek::ObExprDayOfWeek(ObIAllocator& alloc)
|
||||||
: ObExprTimeBase(alloc, DT_WDAY, T_FUN_SYS_DAY_OF_WEEK, N_DAY_OF_WEEK){};
|
: ObExprTimeBase(alloc, DT_WDAY, T_FUN_SYS_DAY_OF_WEEK, N_DAY_OF_WEEK){};
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,15 @@ private:
|
|||||||
DISALLOW_COPY_AND_ASSIGN(ObExprDayOfMonth);
|
DISALLOW_COPY_AND_ASSIGN(ObExprDayOfMonth);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ObExprDay: public ObExprTimeBase {
|
||||||
|
public:
|
||||||
|
ObExprDay();
|
||||||
|
explicit ObExprDay(common::ObIAllocator &alloc);
|
||||||
|
virtual ~ObExprDay();
|
||||||
|
private:
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(ObExprDay);
|
||||||
|
};
|
||||||
|
|
||||||
class ObExprDayOfWeek : public ObExprTimeBase {
|
class ObExprDayOfWeek : public ObExprTimeBase {
|
||||||
public:
|
public:
|
||||||
ObExprDayOfWeek();
|
ObExprDayOfWeek();
|
||||||
|
|||||||
@ -685,6 +685,7 @@ void ObExprOperatorFactory::register_expr_operators()
|
|||||||
REG_OP(ObExprDegrees);
|
REG_OP(ObExprDegrees);
|
||||||
REG_OP(ObExprWeightString);
|
REG_OP(ObExprWeightString);
|
||||||
REG_OP(ObExprBenchmark);
|
REG_OP(ObExprBenchmark);
|
||||||
|
REG_OP(ObExprDay);
|
||||||
// register oracle system function
|
// register oracle system function
|
||||||
REG_OP_ORCL(ObExprSysConnectByPath);
|
REG_OP_ORCL(ObExprSysConnectByPath);
|
||||||
REG_OP_ORCL(ObExprTimestampNvl);
|
REG_OP_ORCL(ObExprTimestampNvl);
|
||||||
|
|||||||
@ -440,6 +440,7 @@ typedef enum ObItemType {
|
|||||||
T_FUN_SYS_INETATON = 728,
|
T_FUN_SYS_INETATON = 728,
|
||||||
T_FUN_SYS_WEIGHT_STRING = 729,
|
T_FUN_SYS_WEIGHT_STRING = 729,
|
||||||
T_FUN_SYS_CRC32 = 730,
|
T_FUN_SYS_CRC32 = 730,
|
||||||
|
T_FUN_SYS_DAY = 731,
|
||||||
///< @note add new mysql only function type before this line
|
///< @note add new mysql only function type before this line
|
||||||
T_MYSQL_ONLY_SYS_MAX_OP = 800,
|
T_MYSQL_ONLY_SYS_MAX_OP = 800,
|
||||||
|
|
||||||
|
|||||||
@ -2200,6 +2200,13 @@ MOD '(' expr ',' expr ')'
|
|||||||
make_name_node($$, result->malloc_pool_, "date");
|
make_name_node($$, result->malloc_pool_, "date");
|
||||||
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
|
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
|
||||||
}
|
}
|
||||||
|
| DAY '(' expr ')'
|
||||||
|
{
|
||||||
|
ParseNode *params = NULL;
|
||||||
|
malloc_non_terminal_node(params, result->malloc_pool_, T_EXPR_LIST, 1, $3);
|
||||||
|
make_name_node($$, result->malloc_pool_, "day");
|
||||||
|
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
|
||||||
|
}
|
||||||
| YEAR '(' expr ')'
|
| YEAR '(' expr ')'
|
||||||
{
|
{
|
||||||
ParseNode *params = NULL;
|
ParseNode *params = NULL;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -383,6 +383,7 @@ const char* get_type_name(int type)
|
|||||||
case T_FUN_SYS_INETATON : return "T_FUN_SYS_INETATON";
|
case T_FUN_SYS_INETATON : return "T_FUN_SYS_INETATON";
|
||||||
case T_FUN_SYS_WEIGHT_STRING : return "T_FUN_SYS_WEIGHT_STRING";
|
case T_FUN_SYS_WEIGHT_STRING : return "T_FUN_SYS_WEIGHT_STRING";
|
||||||
case T_FUN_SYS_CRC32 : return "T_FUN_SYS_CRC32";
|
case T_FUN_SYS_CRC32 : return "T_FUN_SYS_CRC32";
|
||||||
|
case T_FUN_SYS_DAY : return "T_FUN_SYS_DAY";
|
||||||
case T_MYSQL_ONLY_SYS_MAX_OP : return "T_MYSQL_ONLY_SYS_MAX_OP";
|
case T_MYSQL_ONLY_SYS_MAX_OP : return "T_MYSQL_ONLY_SYS_MAX_OP";
|
||||||
case T_FUN_SYS_CONNECT_BY_PATH : return "T_FUN_SYS_CONNECT_BY_PATH";
|
case T_FUN_SYS_CONNECT_BY_PATH : return "T_FUN_SYS_CONNECT_BY_PATH";
|
||||||
case T_FUN_SYS_SYSTIMESTAMP : return "T_FUN_SYS_SYSTIMESTAMP";
|
case T_FUN_SYS_SYSTIMESTAMP : return "T_FUN_SYS_SYSTIMESTAMP";
|
||||||
|
|||||||
Reference in New Issue
Block a user