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_DAYS "to_days"
|
||||
#define N_DAY_OF_MONTH "dayofmonth"
|
||||
#define N_DAY "day"
|
||||
#define N_DAY_OF_WEEK "dayofweek"
|
||||
#define N_DAY_OF_YEAR "dayofyear"
|
||||
#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);
|
||||
}
|
||||
|
||||
ObExprDay::ObExprDay(ObIAllocator &alloc)
|
||||
: ObExprTimeBase(alloc, DT_MDAY, T_FUN_SYS_DAY, N_DAY){};
|
||||
|
||||
ObExprDay::~ObExprDay()
|
||||
{}
|
||||
|
||||
ObExprDayOfWeek::ObExprDayOfWeek(ObIAllocator& alloc)
|
||||
: ObExprTimeBase(alloc, DT_WDAY, T_FUN_SYS_DAY_OF_WEEK, N_DAY_OF_WEEK){};
|
||||
|
||||
|
||||
@ -29,6 +29,15 @@ private:
|
||||
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 {
|
||||
public:
|
||||
ObExprDayOfWeek();
|
||||
|
||||
@ -685,6 +685,7 @@ void ObExprOperatorFactory::register_expr_operators()
|
||||
REG_OP(ObExprDegrees);
|
||||
REG_OP(ObExprWeightString);
|
||||
REG_OP(ObExprBenchmark);
|
||||
REG_OP(ObExprDay);
|
||||
// register oracle system function
|
||||
REG_OP_ORCL(ObExprSysConnectByPath);
|
||||
REG_OP_ORCL(ObExprTimestampNvl);
|
||||
|
||||
@ -440,6 +440,7 @@ typedef enum ObItemType {
|
||||
T_FUN_SYS_INETATON = 728,
|
||||
T_FUN_SYS_WEIGHT_STRING = 729,
|
||||
T_FUN_SYS_CRC32 = 730,
|
||||
T_FUN_SYS_DAY = 731,
|
||||
///< @note add new mysql only function type before this line
|
||||
T_MYSQL_ONLY_SYS_MAX_OP = 800,
|
||||
|
||||
|
||||
@ -2200,6 +2200,13 @@ MOD '(' expr ',' expr ')'
|
||||
make_name_node($$, result->malloc_pool_, "date");
|
||||
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 ')'
|
||||
{
|
||||
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_WEIGHT_STRING : return "T_FUN_SYS_WEIGHT_STRING";
|
||||
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_FUN_SYS_CONNECT_BY_PATH : return "T_FUN_SYS_CONNECT_BY_PATH";
|
||||
case T_FUN_SYS_SYSTIMESTAMP : return "T_FUN_SYS_SYSTIMESTAMP";
|
||||
|
||||
Reference in New Issue
Block a user