Files
oceanbase/src/sql/engine/expr/ob_expr_eval_functions.cpp
2023-07-21 09:48:59 +00:00

1171 lines
74 KiB
C++

/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#include "ob_expr_eval_functions.h"
#include "sql/engine/ob_serializable_function.h"
#include "ob_expr_add.h"
#include "ob_expr_bit_count.h"
#include "ob_expr_bit_neg.h"
#include "ob_expr_column_conv.h"
#include "ob_expr_concat.h"
#include "ob_expr_connection_id.h"
#include "ob_expr_regexp_count.h"
#include "ob_expr_conv.h"
#include "ob_expr_current_user.h"
#include "ob_expr_current_user_priv.h"
#include "ob_expr_cur_time.h"
#include "ob_expr_database.h"
#include "ob_expr_date.h"
#include "ob_expr_date_diff.h"
#include "ob_expr_day_of_func.h"
#include "ob_expr_div.h"
#include "ob_expr_effective_tenant.h"
#include "ob_expr_effective_tenant_id.h"
#include "ob_expr_exists.h"
#include "ob_expr_extract.h"
#include "ob_expr_export_set.h"
#include "ob_expr_found_rows.h"
#include "ob_expr_from_unix_time.h"
#include "ob_expr_func_partition_key.h"
#include "ob_expr_greatest.h"
#include "ob_expr_host_ip.h"
#include "ob_expr_trim.h"
#include "ob_expr_insert.h"
#include "ob_expr_int2ip.h"
#include "ob_expr_int_div.h"
#include "ob_expr_ip2int.h"
#include "ob_expr_inet.h"
#include "ob_expr_is.h"
#include "ob_expr_last_exec_id.h"
#include "ob_expr_last_trace_id.h"
#include "ob_expr_least.h"
#include "ob_expr_length.h"
#include "ob_expr_like.h"
#include "ob_expr_lower.h"
#include "ob_expr_md5.h"
#include "ob_expr_crc32.h"
#include "ob_expr_mid.h"
#include "ob_expr_minus.h"
#include "ob_expr_mod.h"
#include "ob_expr_mul.h"
#include "ob_expr_mysql_port.h"
#include "ob_expr_neg.h"
#include "ob_expr_not.h"
#include "ob_expr_not_exists.h"
#include "ob_expr_null_safe_equal.h"
#include "ob_expr_nvl2_oracle.h"
#include "ob_expr_nvl.h"
#include "ob_expr_operator.h"
#include "ob_expr_pow.h"
#include "ob_expr_regexp_count.h"
#include "ob_expr_regexp.h"
#include "ob_expr_regexp_instr.h"
#include "ob_expr_regexp_like.h"
#include "ob_expr_regexp_replace.h"
#include "ob_expr_regexp_substr.h"
#include "ob_expr_repeat.h"
#include "ob_expr_replace.h"
#include "ob_expr_func_dump.h"
#include "ob_expr_func_part_hash.h"
#include "ob_expr_autoinc_nextval.h"
#include "ob_expr_is_serving_tenant.h"
#include "ob_expr_sys_privilege_check.h"
#include "ob_expr_field.h"
#include "ob_expr_elt.h"
#include "ob_expr_des_hex_str.h"
#include "ob_expr_lnnvl.h"
#include "ob_expr_row_count.h"
#include "ob_expr_rownum.h"
#include "ob_expr_rpc_port.h"
#include "ob_expr_space.h"
#include "ob_expr_subquery_ref.h"
#include "ob_expr_substr.h"
#include "ob_expr_substring_index.h"
#include "ob_expr_time.h"
#include "ob_expr_timestamp.h"
#include "ob_expr_timezone.h"
#include "ob_expr_trim.h"
#include "ob_expr_uid.h"
#include "ob_expr_unhex.h"
#include "ob_expr_user.h"
#include "ob_expr_uuid.h"
#include "ob_expr_version.h"
#include "ob_expr_xor.h"
#include "ob_expr_estimate_ndv.h"
#include "ob_expr_find_in_set.h"
#include "ob_expr_get_sys_var.h"
#include "ob_expr_to_number.h"
#include "ob_expr_hextoraw.h"
#include "ob_expr_rawtohex.h"
#include "ob_expr_chr.h"
#include "ob_expr_prior.h"
#include "ob_expr_seq_nextval.h"
#include "ob_expr_ifnull.h"
#include "ob_expr_lengthb.h"
#include "ob_expr_ascii.h"
#include "ob_expr_instr.h"
#include "ob_expr_calc_partition_id.h"
#include "ob_expr_instrb.h"
#include "ob_expr_reverse.h"
#include "ob_expr_concat_ws.h"
#include "ob_expr_make_set.h"
#include "ob_expr_interval.h"
#include "ob_expr_sys_op_opnsize.h"
#include "ob_expr_quote.h"
#include "ob_expr_date_add.h"
#include "ob_expr_date_format.h"
#include "ob_expr_from_days.h"
#include "ob_expr_period_diff.h"
#include "ob_expr_time_diff.h"
#include "ob_expr_timestamp_nvl.h"
#include "ob_expr_to_interval.h"
#include "ob_expr_week_of_func.h"
#include "ob_expr_in.h"
#include "ob_expr_fun_default.h"
#include "ob_expr_substrb.h"
#include "ob_expr_remainder.h"
#include "ob_expr_rand.h"
#include "ob_expr_randstr.h"
#include "ob_expr_random.h"
#include "ob_expr_width_bucket.h"
#include "ob_expr_sys_extract_utc.h"
#include "ob_expr_to_clob.h"
#include "ob_expr_userenv.h"
#include "ob_expr_vsize.h"
#include "ob_expr_lrpad.h"
#include "ob_expr_pad.h"
#include "ob_expr_fun_values.h"
#include "ob_expr_connect_by_root.h"
#include "ob_expr_oracle_to_char.h"
#include "ob_expr_part_id.h"
#include "ob_expr_hex.h"
#include "ob_expr_shadow_uk_project.h"
#include "ob_expr_char_length.h"
#include "ob_expr_unix_timestamp.h"
#include "ob_expr_aes_encrypt.h"
#include "ob_expr_case.h"
#include "ob_expr_oracle_decode.h"
#include "ob_expr_remove_const.h"
#include "ob_expr_wrapper_inner.h"
#include "ob_expr_func_sleep.h"
#include "ob_expr_errno.h"
#include "ob_expr_get_package_var.h"
#include "ob_expr_sys_context.h"
#include "ob_expr_timestamp_diff.h"
#include "ob_expr_from_tz.h"
#include "ob_expr_tz_offset.h"
#include "ob_expr_orahash.h"
#include "ob_expr_get_user_var.h"
#include "ob_expr_util.h"
#include "ob_expr_cot.h"
#include "ob_expr_convert.h"
#include "ob_expr_type_to_str.h"
#include "ob_expr_date_format.h"
#include "ob_expr_calc_urowid.h"
#include "ob_expr_sys_connect_by_path.h"
#include "ob_expr_last_insert_id.h"
#include "ob_expr_part_id_pseudo_column.h"
#include "ob_expr_nullif.h"
#include "ob_expr_oracle_nullif.h"
#include "ob_expr_user_can_access_obj.h"
#include "ob_expr_empty_lob.h"
#include "ob_expr_radians.h"
#include "ob_expr_pi.h"
#include "ob_expr_maketime.h"
#include "ob_expr_makedate.h"
#include "ob_expr_to_blob.h"
#include "ob_expr_join_filter.h"
#include "ob_expr_to_outfile_row.h"
#include "ob_expr_format.h"
#include "ob_expr_and.h"
#include "ob_expr_or.h"
#include "ob_expr_quarter.h"
#include "ob_expr_bit_length.h"
#include "ob_expr_unistr.h"
#include "ob_expr_at_time_zone.h"
#include "ob_expr_to_single_byte.h"
#include "ob_expr_to_multi_byte.h"
#include "ob_expr_time_format.h"
#include "ob_expr_dll_udf.h"
#include "ob_expr_collection_construct.h"
#include "ob_expr_obj_access.h"
#include "ob_expr_pl_associative_index.h"
#include "ob_expr_udf.h"
#include "ob_expr_object_construct.h"
#include "ob_expr_pl_get_cursor_attr.h"
#include "ob_expr_pl_integer_checker.h"
#include "ob_expr_get_subprogram_var.h"
#include "ob_expr_pl_sqlcode_sqlerrm.h"
#include "ob_expr_multiset.h"
#include "ob_expr_cardinality.h"
#include "ob_expr_coll_pred.h"
#include "ob_expr_stmt_id.h"
#include "ob_expr_pl_seq_nextval.h"
#include "ob_expr_output_pack.h"
#include "ob_expr_returning_lob.h"
#include "ob_expr_set.h"
#include "ob_expr_obversion.h"
#include "ob_expr_ols_funcs.h"
#include "ob_expr_plsql_variable.h"
#include "ob_expr_degrees.h"
#include "ob_expr_any_value.h"
#include "ob_expr_uuid_short.h"
#include "ob_expr_func_round.h"
#include "ob_expr_validate_password_strength.h"
#include "ob_expr_soundex.h"
#include "ob_expr_rowid_to_char.h"
#include "ob_expr_rowid_to_nchar.h"
#include "ob_expr_char_to_rowid.h"
#include "ob_expr_benchmark.h"
#include "ob_expr_weight_string.h"
#include "ob_expr_convert_tz.h"
#include "ob_expr_dml_event.h"
#include "ob_expr_to_base64.h"
#include "ob_expr_from_base64.h"
#include "ob_expr_random_bytes.h"
#include "ob_pl_expr_subquery.h"
#include "ob_expr_encode_sortkey.h"
#include "ob_expr_hash.h"
#include "ob_expr_nlssort.h"
#include "ob_expr_json_object.h"
#include "ob_expr_json_extract.h"
#include "ob_expr_json_contains.h"
#include "ob_expr_json_contains_path.h"
#include "ob_expr_json_depth.h"
#include "ob_expr_json_keys.h"
#include "ob_expr_json_search.h"
#include "ob_expr_json_array.h"
#include "ob_expr_json_quote.h"
#include "ob_expr_json_unquote.h"
#include "ob_expr_json_overlaps.h"
#include "ob_expr_json_valid.h"
#include "ob_expr_json_remove.h"
#include "ob_expr_json_array_append.h"
#include "ob_expr_json_array_insert.h"
#include "ob_expr_json_value.h"
#include "ob_expr_json_replace.h"
#include "ob_expr_json_type.h"
#include "ob_expr_json_length.h"
#include "ob_expr_json_insert.h"
#include "ob_expr_json_storage_size.h"
#include "ob_expr_json_storage_free.h"
#include "ob_expr_json_set.h"
#include "ob_expr_json_merge_preserve.h"
#include "ob_expr_json_merge.h"
#include "ob_expr_json_merge_patch.h"
#include "ob_expr_json_pretty.h"
#include "ob_expr_json_member_of.h"
#include "ob_expr_json_equal.h"
#include "ob_expr_sha.h"
#include "ob_expr_compress.h"
#include "ob_expr_statement_digest.h"
#include "ob_expr_is_json.h"
#include "ob_expr_json_query.h"
#include "ob_expr_json_exists.h"
#include "ob_expr_treat.h"
#include "ob_expr_point.h"
#include "ob_expr_spatial_collection.h"
#include "ob_expr_st_geomfromtext.h"
#include "ob_expr_st_area.h"
#include "ob_expr_st_intersects.h"
#include "ob_expr_st_x.h"
#include "ob_expr_st_transform.h"
#include "ob_expr_priv_st_transform.h"
#include "ob_expr_st_covers.h"
#include "ob_expr_st_bestsrid.h"
#include "ob_expr_st_astext.h"
#include "ob_expr_st_buffer.h"
#include "ob_expr_spatial_cellid.h"
#include "ob_expr_spatial_mbr.h"
#include "ob_expr_st_geomfromewkb.h"
#include "ob_expr_st_geomfromwkb.h"
#include "ob_expr_st_geomfromewkt.h"
#include "ob_expr_st_asewkt.h"
#include "ob_expr_st_srid.h"
#include "ob_expr_st_distance.h"
#include "ob_expr_st_geometryfromtext.h"
#include "ob_expr_priv_st_setsrid.h"
#include "ob_expr_priv_st_point.h"
#include "ob_expr_priv_st_geogfromtext.h"
#include "ob_expr_priv_st_geographyfromtext.h"
#include "ob_expr_st_isvalid.h"
#include "ob_expr_st_dwithin.h"
#include "ob_expr_st_aswkb.h"
#include "ob_expr_st_distance_sphere.h"
#include "ob_expr_st_contains.h"
#include "ob_expr_st_within.h"
#include "ob_expr_priv_st_asewkb.h"
#include "ob_expr_name_const.h"
#include "ob_expr_format_bytes.h"
#include "ob_expr_format_pico_time.h"
#include "ob_expr_encrypt.h"
#include "ob_expr_coalesce.h"
#include "ob_expr_cast.h"
#include "ob_expr_current_scn.h"
#include "ob_expr_icu_version.h"
#include "ob_expr_sql_mode_convert.h"
#include "ob_expr_priv_xml_binary.h"
#include "ob_expr_sys_makexml.h"
#include "ob_expr_priv_xml_binary.h"
#include "ob_expr_xmlparse.h"
#include "ob_expr_xml_element.h"
#include "ob_expr_xml_attributes.h"
#include "ob_expr_extract_value.h"
#include "ob_expr_extract_xml.h"
#include "ob_expr_xml_serialize.h"
#include "ob_expr_xmlcast.h"
#include "ob_expr_update_xml.h"
#include "ob_expr_generator_func.h"
#include "ob_expr_random.h"
#include "ob_expr_randstr.h"
#include "ob_expr_zipf.h"
#include "ob_expr_normal.h"
#include "ob_expr_uniform.h"
#include "ob_expr_prefix_pattern.h"
#include "ob_expr_initcap.h"
#include "ob_expr_temp_table_ssid.h"
namespace oceanbase
{
using namespace common;
namespace sql
{
//
// this file is for function serialization
// Without maps defined here, you can not get correct function ptr
// when serialize between different observer versions
//
extern int cast_eval_arg(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int anytype_to_varchar_char_explicit(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int anytype_anytype_explicit(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_acos_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_and_exprN(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_asin_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_assign_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_atan2_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_atan_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_between_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_bool_expr_for_integer_type(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_bool_expr_for_float_type(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_bool_expr_for_double_type(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_bool_expr_for_other_type(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_char_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_coalesce_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_cos_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_cosh_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_exp_expr_double(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_exp_expr_number(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_ceil_floor(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_round_expr_datetime1(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_round_expr_datetime2(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_round_expr_numeric2(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_round_expr_numeric1(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_initcap_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_left_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_ln_expr_mysql(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_ln_expr_oracle_double(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_ln_expr_oracle_number(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_log10_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_log2_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_log_expr_double(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_log_expr_number(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_not_between_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_or_exprN(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_power_expr_oracle(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_right_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sign_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sin_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sinh_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sqrt_expr_mysql(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sqrt_expr_oracle_double(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sqrt_expr_oracle_number(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_str_to_date_expr_date(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_str_to_date_expr_time(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_str_to_date_expr_datetime(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_tan_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_tanh_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_timestampadd_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_time_to_usec_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_todays_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_to_temporal_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_translate_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_usec_to_time_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_charset_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_collation_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_coercibility_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_set_collation_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_cmp_meta_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_trunc_expr_datetime(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_trunc_expr_numeric(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_truncate_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_reverse_expr(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &res_datum);
extern int calc_instrb_expr(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &res_datum);
extern int calc_convert_expr(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &res_datum);
extern int calc_translate_using_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int eval_question_mark_func(EVAL_FUNC_ARG_DECL);
extern int cast_eval_arg_batch(const ObExpr &, ObEvalCtx &, const ObBitVector &, const int64_t);
extern int eval_batch_ceil_floor(const ObExpr &, ObEvalCtx &, const ObBitVector &, const int64_t);
extern int eval_assign_question_mark_func(EVAL_FUNC_ARG_DECL);
extern int calc_timestamp_to_scn_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_scn_to_timestamp_expr(const ObExpr &, ObEvalCtx &, ObDatum &);
extern int calc_sqrt_expr_mysql_in_batch(const ObExpr &, ObEvalCtx &, const ObBitVector &, const int64_t);
extern int calc_sqrt_expr_oracle_double_in_batch(const ObExpr &, ObEvalCtx &, const ObBitVector &, const int64_t);
extern int calc_sqrt_expr_oracle_number_in_batch(const ObExpr &, ObEvalCtx &, const ObBitVector &, const int64_t);
// append only, can not delete, set to NULL for mark delete
static ObExpr::EvalFunc g_expr_eval_functions[] = {
cast_eval_arg, /* 0 */
anytype_to_varchar_char_explicit, /* 1 */
anytype_anytype_explicit, /* 2 */
calc_acos_expr, /* 3 */
ObExprAdd::add_datetime_datetime, /* 4 */
ObExprAdd::add_datetime_intervalds, /* 5 */
ObExprAdd::add_datetime_intervalym, /* 6 */
ObExprAdd::add_datetime_number, /* 7 */
ObExprAdd::add_double_double, /* 8 */
ObExprAdd::add_float_float, /* 9 */
ObExprAdd::add_intervalds_datetime, /* 10 */
ObExprAdd::add_intervalds_intervalds, /* 11 */
ObExprAdd::add_intervalds_timestamp_tiny, /* 12 */
ObExprAdd::add_intervalds_timestamptz, /* 13 */
ObExprAdd::add_intervalym_datetime, /* 14 */
ObExprAdd::add_intervalym_intervalym, /* 15 */
ObExprAdd::add_intervalym_timestampltz, /* 16 */
ObExprAdd::add_intervalym_timestampnano, /* 17 */
ObExprAdd::add_intervalym_timestamptz, /* 18 */
ObExprAdd::add_int_int, /* 19 */
ObExprAdd::add_int_uint, /* 20 */
ObExprAdd::add_number_datetime, /* 21 */
ObExprAdd::add_number_number, /* 22 */
ObExprAdd::add_timestampltz_intervalym, /* 23 */
ObExprAdd::add_timestampnano_intervalym, /* 24 */
ObExprAdd::add_timestamp_tiny_intervalds, /* 25 */
ObExprAdd::add_timestamptz_intervalds, /* 26 */
ObExprAdd::add_timestamptz_intervalym, /* 27 */
ObExprAdd::add_uint_int, /* 28 */
ObExprAdd::add_uint_uint, /* 29 */
calc_and_exprN, /* 30 */
calc_asin_expr, /* 31 */
calc_assign_expr, /* 32 */
calc_atan2_expr, /* 33 */
calc_atan_expr, /* 34 */
calc_between_expr, /* 35 */
ObExprBitCount::calc_bitcount_expr, /* 36 */
ObExprBitNeg::calc_bitneg_expr, /* 37 */
calc_bool_expr_for_integer_type, /* 38 */
calc_bool_expr_for_float_type, /* 39 */
calc_bool_expr_for_double_type, /* 40 */
calc_bool_expr_for_other_type, /* 41 */
calc_char_expr, /* 42 */
calc_coalesce_expr, /* 43 */
ObExprColumnConv::column_convert, /* 44 */
ObExprConcat::eval_concat, /* 45 */
ObExprConnectionId::eval_connection_id, /* 46 */
ObExprConv::eval_conv, /* 47 */
calc_cos_expr, /* 48 */
calc_cosh_expr, /* 49 */
ObExprCurrentUser::eval_current_user, /* 50 */
ObExprUtcTimestamp::eval_utc_timestamp, /* 51 */
ObExprCurTimestamp::eval_cur_timestamp, /* 52 */
ObExprSysdate::eval_sysdate, /* 53 */
ObExprCurDate::eval_cur_date, /* 54 */
ObExprCurTime::eval_cur_time, /* 55 */
ObExprDatabase::eval_database, /* 56 */
ObExprDate::eval_date, /* 57 */
ObExprDateDiff::eval_date_diff, /* 58 */
ObExprMonthsBetween::eval_months_between, /* 59 */
ObExprToSeconds::calc_toseconds, /* 60 */
ObExprSecToTime::calc_sectotime, /* 61 */
ObExprTimeToSec::calc_timetosec, /* 62 */
ObExprSubtime::subaddtime_datetime, /* 63 */
ObExprSubtime::subaddtime_varchar, /* 64 */
ObExprDiv::div_float, /* 65 */
ObExprDiv::div_double, /* 66 */
ObExprDiv::div_number, /* 67 */
ObExprDiv::div_intervalym_number, /* 68 */
ObExprDiv::div_intervalds_number, /* 69 */
ObExprEffectiveTenant::eval_effective_tenant, /* 70 */
ObExprEffectiveTenantId::eval_effective_tenant_id, /* 71 */
ObExprExists::exists_eval, /* 72 */
calc_exp_expr_double, /* 73 */
calc_exp_expr_number, /* 74 */
ObExprExtract::calc_extract_oracle, /* 75 */
ObExprExtract::calc_extract_mysql, /* 76 */
ObExprFoundRows::eval_found_rows, /* 77 */
ObExprFromUnixTime::eval_one_temporal_fromtime, /* 78 */
ObExprFromUnixTime::eval_one_param_fromtime, /* 79 */
ObExprFromUnixTime::eval_fromtime_normal, /* 80 */
ObExprFromUnixTime::eval_fromtime_special, /* 81 */
calc_ceil_floor, /* 82 */
ObExprFuncPartKey::calc_partition_key, /* 83 */
calc_round_expr_datetime1, /* 84 */
calc_round_expr_datetime2, /* 85 */
calc_round_expr_numeric2, /* 86 */
calc_round_expr_numeric1, /* 87 */
ObExprGreatest::calc_greatest, /* 88 */
ObExprHostIP::eval_host_ip, /* 89 */
calc_initcap_expr, /* 90 */
ObExprTrim::eval_trim, /* 91 */
ObExprInsert::calc_expr_insert, /* 92 */
ObExprInt2ip::int2ip_varchar, /* 93 */
ObExprIntDiv::div_int_int, /* 94 */
ObExprIntDiv::div_int_uint, /* 95 */
ObExprIntDiv::div_uint_int, /* 96 */
ObExprIntDiv::div_uint_uint, /* 97 */
ObExprIntDiv::div_number, /* 98 */
ObExprIp2int::ip2int_varchar, /* 99 */
ObExprIs::calc_is_date_int_null, /* 100 */
ObExprIs::calc_is_null, /* 101 */
ObExprIs::int_is_true, /* 102 */
ObExprIs::int_is_false, /* 103 */
ObExprIs::float_is_true, /* 104 */
ObExprIs::float_is_false, /* 105 */
ObExprIs::double_is_true, /* 106 */
ObExprIs::double_is_false, /* 107 */
ObExprIs::number_is_true, /* 108 */
ObExprIs::number_is_false, /* 109 */
ObExprIsNot::calc_is_not_null, /* 110 */
ObExprIsNot::int_is_not_true, /* 111 */
ObExprIsNot::int_is_not_false, /* 112 */
ObExprIsNot::float_is_not_true, /* 113 */
ObExprIsNot::float_is_not_false, /* 114 */
ObExprIsNot::double_is_not_true, /* 115 */
ObExprIsNot::double_is_not_false, /* 116 */
ObExprIsNot::number_is_not_true, /* 117 */
ObExprIsNot::number_is_not_false, /* 118 */
ObExprLastExecId::eval_last_exec_id, /* 119 */
ObExprLastTraceId::eval_last_trace_id, /* 120 */
ObExprLeast::calc_least, /* 121 */
calc_left_expr, /* 122 */
ObExprLength::calc_null, /* 123 */
ObExprLength::calc_oracle_mode, /* 124 */
ObExprLength::calc_mysql_mode, /* 125 */
ObExprLike::like_varchar, /* 126 */
calc_ln_expr_mysql, /* 127 */
calc_ln_expr_oracle_double, /* 128 */
calc_ln_expr_oracle_number, /* 129 */
calc_log10_expr, /* 130 */
calc_log2_expr, /* 131 */
calc_log_expr_double, /* 132 */
calc_log_expr_number, /* 133 */
ObExprLower::calc_lower, /* 134 */
ObExprUpper::calc_upper, /* 135 */
ObExprMd5::calc_md5, /* 136 */
ObExprMinus::minus_datetime_datetime, /* 137 */
ObExprMinus::minus_datetime_datetime_oracle, /* 138 */
ObExprMinus::minus_datetime_intervalds, /* 139 */
ObExprMinus::minus_datetime_intervalym, /* 140 */
ObExprMinus::minus_datetime_number, /* 141 */
ObExprMinus::minus_double_double, /* 142 */
ObExprMinus::minus_float_float, /* 143 */
ObExprMinus::minus_intervalds_intervalds, /* 144 */
ObExprMinus::minus_intervalym_intervalym, /* 145 */
ObExprMinus::minus_int_int, /* 146 */
ObExprMinus::minus_int_uint, /* 147 */
ObExprMinus::minus_number_number, /* 148 */
ObExprMinus::minus_timestampltz_intervalym, /* 149 */
ObExprMinus::minus_timestampnano_intervalym, /* 150 */
ObExprMinus::minus_timestamp_timestamp, /* 151 */
ObExprMinus::minus_timestamp_tiny_intervalds, /* 152 */
ObExprMinus::minus_timestamptz_intervalds, /* 153 */
ObExprMinus::minus_timestamptz_intervalym, /* 154 */
ObExprMinus::minus_uint_int, /* 155 */
ObExprMinus::minus_uint_uint, /* 156 */
ObExprMod::mod_double, /* 157 */
ObExprMod::mod_float, /* 158 */
ObExprMod::mod_int_int, /* 159 */
ObExprMod::mod_int_uint, /* 160 */
ObExprMod::mod_number, /* 161 */
ObExprMod::mod_uint_int, /* 162 */
ObExprMod::mod_uint_uint, /* 163 */
ObExprMul::mul_double, /* 164 */
ObExprMul::mul_float, /* 165 */
ObExprMul::mul_intervalds_number, /* 166 */
ObExprMul::mul_intervalym_number, /* 167 */
ObExprMul::mul_int_int, /* 168 */
ObExprMul::mul_int_uint, /* 169 */
ObExprMul::mul_number, /* 170 */
ObExprMul::mul_number_intervalds, /* 171 */
ObExprMul::mul_number_intervalym, /* 172 */
ObExprMul::mul_uint_int, /* 173 */
ObExprMul::mul_uint_uint, /* 174 */
ObExprMySQLPort::eval_mysql_port, /* 175 */
NULL, // ObExprNeg::eval_tinyint is deleted /* 176 */
calc_not_between_expr, /* 177 */
ObExprNot::eval_not, /* 178 */
ObExprNotExists::not_exists_eval, /* 179 */
ObExprNullSafeEqual::ns_equal_eval, /* 180 */
ObExprNullSafeEqual::row_ns_equal_eval, /* 181 */
ObExprNvlUtil::calc_nvl_expr, /* 182 */
ObExprNvlUtil::calc_nvl_expr2, /* 183 */
ObSubQueryRelationalExpr::subquery_cmp_eval, /* 184 */
ObBitwiseExprOperator::calc_result2_oracle, /* 185 */
ObBitwiseExprOperator::calc_result2_mysql, /* 186 */
ObRelationalExprOperator::row_eval, /* 187 */
calc_or_exprN, /* 188 */
ObExprPow::calc_pow_expr, /* 189 */
calc_power_expr_oracle, /* 190 */
ObExprRegexp::eval_regexp, /* 191 */
ObExprRegexpCount::eval_regexp_count, /* 192 */
ObExprRegexpInstr::eval_regexp_instr, /* 193 */
ObExprRegexpLike::eval_regexp_like, /* 194 */
ObExprRegexpReplace::eval_regexp_replace, /* 195 */
ObExprRegexpSubstr::eval_regexp_substr, /* 196 */
ObExprRepeat::eval_repeat, /* 197 */
ObExprReplace::eval_replace, /* 198 */
ObExprFuncDump::eval_dump, /* 199 */
NULL,//ObExprFuncPartOldKey::eval_part_old_key is deleted /* 200 */
ObExprFuncPartHash::eval_part_hash, /* 201 */
NULL,//ObExprFuncAddrToPartId::eval_addr_to_part_id is deleted /* 202 */
ObExprAutoincNextval::eval_nextval, /* 203 */
ObExprFuncLnnvl::eval_lnnvl, /* 204 */
ObExprIsServingTenant::eval_is_serving_tenant, /* 205 */
ObExprSysPrivilegeCheck::eval_sys_privilege_check, /* 206 */
ObExprField::eval_field, /* 207 */
ObExprElt::eval_elt, /* 208 */
ObExprDesHexStr::eval_des_hex_str, /* 209 */
calc_right_expr, /* 210 */
ObExprRowCount::eval_row_count, /* 211 */
ObExprRowNum::rownum_eval, /* 212 */
ObExprRpcPort::eval_rpc_port, /* 213 */
ObExprCot::calc_cot_expr, /* 214 */
calc_sign_expr, /* 215 */
calc_sin_expr, /* 216 */
calc_sinh_expr, /* 217 */
ObExprSpace::eval_space, /* 218 */
calc_sqrt_expr_mysql, /* 219 */
calc_sqrt_expr_oracle_double, /* 220 */
calc_sqrt_expr_oracle_number, /* 221 */
calc_str_to_date_expr_time, /* 222 */
calc_str_to_date_expr_date, /* 223 */
calc_str_to_date_expr_datetime, /* 224 */
ObExprSubQueryRef::expr_eval, /* 225 */
ObExprSubstr::eval_substr, /* 226 */
ObExprSubstringIndex::eval_substring_index, /* 227 */
calc_tan_expr, /* 228 */
calc_tanh_expr, /* 229 */
ObExprDayOfMonth::calc_dayofmonth, /* 230 */
ObExprDayOfWeek::calc_dayofweek, /* 231 */
ObExprDayOfYear::calc_dayofyear, /* 232 */
ObExprHour::calc_hour, /* 233 */
ObExprMicrosecond::calc_microsecond, /* 234 */
ObExprMinute::calc_minute, /* 235 */
ObExprMonth::calc_month, /* 236 */
ObExprSecond::calc_second, /* 237 */
ObExprTime::calc_time, /* 238 */
ObExprYear::calc_year, /* 239 */
calc_timestampadd_expr, /* 240 */
ObExprLocalTimestamp::eval_localtimestamp, /* 241 */
ObExprSysTimestamp::eval_systimestamp, /* 242 */
calc_time_to_usec_expr, /* 243 */
ObExprDbtimezone::eval_db_timezone, /* 244 */
ObExprSessiontimezone::eval_session_timezone, /* 245 */
calc_todays_expr, /* 246 */
calc_to_temporal_expr, /* 247 */
calc_translate_expr, /* 248 */
ObExprTrim::eval_trim, /* 249 */
ObExprUid::eval_uid, /* 250 */
ObExprUnhex::eval_unhex, /* 251 */
calc_usec_to_time_expr, /* 252 */
ObExprUser::eval_user, /* 253 */
ObExprUuid::eval_uuid, /* 254 */
ObExprSysGuid::eval_sys_guid, /* 255 */
ObExprVersion::eval_version, /* 256 */
ObExprXor::eval_xor, /* 257 */
calc_charset_expr, /* 258 */
calc_collation_expr, /* 259 */
calc_coercibility_expr, /* 260 */
calc_set_collation_expr, /* 261 */
calc_cmp_meta_expr, /* 262 */
calc_trunc_expr_datetime, /* 263 */
calc_trunc_expr_numeric, /* 264 */
calc_truncate_expr, /* 265 */
ObExprEstimateNdv::calc_estimate_ndv_expr, /* 266 */
ObExprFindInSet::calc_find_in_set_expr, /* 267 */
ObExprGetSysVar::calc_get_sys_val_expr, /* 268 */
ObExprToNumber::calc_tonumber_expr, /* 269 */
ObExprToBinaryFloat::calc_to_binaryfloat_expr, /* 270 */
ObExprToBinaryDouble::calc_to_binarydouble_expr, /* 271 */
ObExprHextoraw::calc_hextoraw_expr, /* 272 */
ObExprRawtohex::calc_rawtohex_expr, /* 273 */
ObExprChr::calc_chr_expr, /* 274 */
ObExprIfNull::calc_ifnull_expr, /* 275 */
ObExprLengthb::calc_lengthb_expr, /* 276 */
ObExprAscii::calc_ascii_expr, /* 277 */
ObExprOrd::calc_ord_expr, /* 278 */
ObExprInstr::calc_mysql_instr_expr, /* 279 */
ObExprOracleInstr::calc_oracle_instr_expr, /* 280 */
ObLocationExprOperator::calc_location_expr, /* 281 */
ObExprCalcPartitionBase::calc_no_partition_location, /* 282 */
ObExprCalcPartitionBase::calc_partition_level_one, /* 283 */
ObExprCalcPartitionBase::calc_partition_level_two, /* 284 */
ObExprPrior::calc_prior_expr, /* 285 */
ObExprSeqNextval::calc_sequence_nextval, /* 286 */
calc_reverse_expr, /* 287 */
calc_instrb_expr, /* 288 */
ObExprConcatWs::calc_concat_ws_expr, /* 289 */
ObExprMakeSet::calc_make_set_expr, /* 290 */
ObExprInterval::calc_interval_expr, /* 291 */
ObExprSysOpOpnsize::calc_sys_op_opnsize_expr, /* 292 */
ObExprQuote::calc_quote_expr, /* 293 */
ObExprDateAdd::calc_date_add, /* 294 */
ObExprDateSub::calc_date_sub, /* 295 */
ObExprAddMonths::calc_add_months, /* 296 */
ObExprLastDay::calc_last_day, /* 297 */
ObExprNextDay::calc_next_day, /* 298 */
ObExprFromDays::calc_fromdays, /* 299 */
ObExprPeriodDiff::calc_perioddiff, /* 300 */
ObExprTimeDiff::calc_timediff, /* 301 */
ObExprTimestampNvl::calc_timestampnvl, /* 302 */
ObExprToYMInterval::calc_to_yminterval, /* 303 */
ObExprToDSInterval::calc_to_dsinterval, /* 304 */
ObExprNumToYMInterval::calc_num_to_yminterval, /* 305 */
ObExprNumToDSInterval::calc_num_to_dsinterval, /* 306 */
ObExprWeekOfYear::calc_weekofyear, /* 307 */
ObExprWeekDay::calc_weekday, /* 308 */
ObExprYearWeek::calc_yearweek, /* 309 */
ObExprWeek::calc_week, /* 310 */
ObExprInOrNotIn::eval_in_with_row, /* 311 */
ObExprInOrNotIn::eval_in_without_row, /* 312 */
ObExprInOrNotIn::eval_in_with_row_fallback, /* 313 */
ObExprInOrNotIn::eval_in_without_row_fallback, /* 314 */
ObExprInOrNotIn::eval_in_with_subquery, /* 315 */
ObExprFunDefault::calc_default_expr, /* 316 */
ObExprSubstrb::calc_substrb_expr, /* 317 */
ObExprRemainder::calc_remainder_expr, /* 318 */
ObExprRand::calc_random_expr_const_seed, /* 319 */
ObExprRand::calc_random_expr_nonconst_seed, /* 320 */
ObExprWidthBucket::calc_width_bucket_expr, /* 321 */
ObExprSysExtractUtc::calc_sys_extract_utc, /* 322 */
ObExprToClob::calc_to_clob_expr, /* 323 */
ObExprUserEnv::calc_user_env_expr, /* 324 */
ObExprVsize::calc_vsize_expr, /* 325 */
ObExprOracleLpad::calc_oracle_lpad_expr, /* 326 */
ObExprOracleRpad::calc_oracle_rpad_expr, /* 327 */
ObExprLpad::calc_mysql_lpad_expr, /* 328 */
ObExprRpad::calc_mysql_rpad_expr, /* 329 */
ObExprPad::calc_pad_expr, /* 330 */
ObExprFunValues::eval_values, /* 331 */
ObExprConnectByRoot::eval_connect_by_root, /* 332 */
ObExprOracleToChar::eval_oracle_to_char, /* 333 */
ObExprPartId::eval_part_id, /* 334 */
ObExprHex::eval_hex, /* 335 */
ObExprShadowUKProject::shadow_uk_project, /* 336 */
ObExprCharLength::eval_char_length, /* 337 */
ObExprUnixTimestamp::eval_unix_timestamp, /* 338 */
ObExprAesDecrypt::eval_aes_decrypt, /* 339 */
ObExprAesEncrypt::eval_aes_encrypt, /* 340 */
ObExprCase::calc_case_expr, /* 341 */
ObExprOracleDecode::eval_decode, /* 342 */
ObExprRemoveConst::eval_remove_const, /* 343 */
ObExprSleep::eval_sleep, /* 344 */
ObExprSysContext::eval_sys_context, /* 345 */
ObExprGetPackageVar::eval_get_package_var, /* 346 */
ObExprTimeStampDiff::eval_timestamp_diff, /* 347 */
ObExprFromTz::eval_from_tz, /* 348 */
ObExprTzOffset::eval_tz_offset, /* 349 */
ObExprOrahash::eval_orahash, /* 350 */
ObExprGetUserVar::eval_get_user_var, /* 351 */
NULL, //ObExprUtil::eval_generated_column, /* 352 */
NULL, //ObExprCalcPartitionBase::calc_opt_route_hash_one /* 353 */
calc_convert_expr, /* 354 */
ObExprSetToStr::calc_to_str_expr, /* 355 */
ObExprEnumToStr::calc_to_str_expr, /* 356 */
ObExprSetToInnerType::calc_to_inner_expr, /* 357 */
ObExprEnumToInnerType::calc_to_inner_expr, /* 358 */
ObExprDateFormat::calc_date_format_invalid, /* 359 */
ObExprDateFormat::calc_date_format, /* 360 */
ObExprCalcURowID::calc_urowid, /* 361 */
NULL,//ObExprFuncPartOldHash::eval_old_part_hash is deleted /* 362 */
NULL,//ObExprFuncPartNewKey::calc_new_partition_key is deleted /* 363 */
ObExprUtil::eval_stack_overflow_check, /* 364 */
ObExprSysConnectByPath::calc_sys_path, /* 365 */
ObExprLastInsertID::eval_last_insert_id, /* 366 */
ObExprPartIdPseudoColumn::eval_part_id, /* 367 */
ObExprNullif::eval_nullif, /* 368 */
ObExprOracleNullif::eval_nullif, /* 369 */
ObExprUserCanAccessObj::eval_user_can_access_obj, /* 370 */
ObExprEmptyClob::eval_empty_clob, /* 371 */
ObExprEmptyBlob::eval_empty_blob, /* 372 */
ObExprRadians::calc_radians_expr, /* 373 */
ObExprMakeTime::eval_maketime, /* 374 */
ObExprMonthName::calc_month_name, /* 375 */
ObExprToBlob::eval_to_blob, /* 376 */
ObExprJoinFilter::eval_bloom_filter, /* 377 */
ObExprNlsLower::calc_lower, /* 378 */
ObExprNlsUpper::calc_upper, /* 379 */
ObExprToOutfileRow::to_outfile_str, /* 380 */
ObExprIs::calc_is_infinite, /* 381 */
ObExprIs::calc_is_nan, /* 382 */
ObExprIsNot::calc_is_not_infinite, /* 383 */
ObExprIsNot::calc_is_not_nan, /* 384 */
ObExprOracleNullif::eval_nullif_not_null, /* 385 */
ObExprNaNvl::eval_nanvl, /* 386 */
ObExprFormat::calc_format_expr, /* 387 */
calc_translate_using_expr, /* 388 */
ObExprQuarter::calc_quater, /* 389 */
ObExprBitLength::calc_bit_length, /* 390 */
ObExprConvertOracle::calc_convert_oracle_expr, /* 391 */
ObExprUnistr::calc_unistr_expr, /* 392 */
ObExprAsciistr::calc_asciistr_expr, /* 393 */
ObExprAtTimeZone::eval_at_time_zone, /* 394 */
ObExprAtLocal::eval_at_local, /* 395 */
ObExprToSingleByte::calc_to_single_byte, /* 396 */
ObExprToMultiByte::calc_to_multi_byte, /* 397 */
ObExprDllUdf::eval_dll_udf, /* 398 */
ObExprRawtonhex::calc_rawtonhex_expr, /* 399 */
ObExprPi::eval_pi, /* 400 */
ObExprOutputPack::eval_output_pack, /* 401 */
ObExprReturningLob::eval_lob, /* 402 */
eval_question_mark_func, /* 403 */
ObExprUtcTime::eval_utc_time, /* 404 */
ObExprUtcDate::eval_utc_date, /* 405 */
ObExprGetFormat::calc_get_format, /* 406 */
ObExprCollectionConstruct::eval_collection_construct, /* 407 */
ObExprObjAccess::eval_obj_access, /* 408 */
ObExprTimeFormat::calc_time_format, /* 409 */
ObExprMakedate::calc_makedate, /* 410 */
ObExprPeriodAdd::calc_periodadd, /* 411 */
ObExprPLAssocIndex::eval_assoc_idx, /* 412 */
ObExprUDF::eval_udf, /* 413 */
ObExprObjectConstruct::eval_object_construct, /* 414 */
ObRelationalExprOperator::eval_pl_udt_compare, /* 415 */
ObExprInOrNotIn::eval_pl_udt_in, /* 416 */
ObExprPLGetCursorAttr::calc_pl_get_cursor_attr, /* 417 */
ObExprPLIntegerChecker::calc_pl_integer_checker, /* 418 */
ObExprGetSubprogramVar::calc_get_subprogram_var, /* 419 */
ObExprPLSQLCodeSQLErrm::eval_pl_sql_code_errm, /* 420 */
ObExprMultiSet::eval_multiset, /* 421 */
ObExprCardinality::eval_card, /* 422 */
ObExprCollPred::eval_coll_pred, /* 423 */
ObExprStmtId::eval_stmt_id, /* 424 */
NULL,//ObExprWordSegment::eval_word_segment is deleted /* 425 */
ObExprPLSeqNextval::eval_pl_seq_next_val, /* 426 */
ObExprSet::calc_set, /* 427 */
ObExprWrapperInner::eval_wrapper_inner, /* 428 */
ObExprObVersion::eval_version, /* 429 */
ObExprOLSLabelCmpLE::eval_cmple, /* 430 */
ObExprOLSLabelCheck::eval_label_check, /* 431 */
ObExprOLSCharToLabel::eval_char_to_label, /* 432 */
ObExprOLSLabelToChar::eval_label_to_char, /* 433 */
ObExprPLSQLVariable::eval_plsql_variable, /* 434 */
ObExprDegrees::calc_degrees_expr, /* 435 */
ObExprAnyValue::eval_any_value, /* 436 */
ObExprIs::calc_collection_is_null, /* 437 */
ObExprIsNot::calc_collection_is_not_null, /* 438 */
ObExprOLSSessionRowLabel::eval_row_label, /* 439 */
ObExprOLSSessionLabel::eval_label, /* 440 */
ObExprTimestamp::calc_timestamp1, /* 441 */
ObExprTimestamp::calc_timestamp2, /* 442 */
ObExprValidatePasswordStrength::eval_password_strength, /* 443 */
ObExprSoundex::eval_soundex, /* 444 */
ObExprRowIDToChar::eval_rowid_to_char, /* 445 */
ObExprRowIDToNChar::eval_rowid_to_nchar, /* 446 */
ObExprCharToRowID::eval_char_to_rowid, /* 447 */
ObExprUuidShort::eval_uuid_short, /* 448 */
ObExprBenchmark::eval_benchmark, /* 449 */
ObExprExportSet::eval_export_set, /* 450 */
ObExprInet6Aton::calc_inet6_aton, /* 451 */
ObExprIsIpv4::calc_is_ipv4, /* 452 */
ObExprIsIpv6::calc_is_ipv6, /* 453 */
ObExprIsIpv4Mapped::calc_is_ipv4_mapped, /* 454 */
ObExprIsIpv4Compat::calc_is_ipv4_compat, /* 455 */
ObExprInetAton::calc_inet_aton, /* 456 */
ObExprInet6Ntoa::calc_inet6_ntoa, /* 457 */
ObExprWeightString::eval_weight_string, /* 458 */
ObExprConvertTZ::eval_convert_tz, /* 459 */
ObExprCrc32::calc_crc32_expr, /* 460 */
ObExprDmlEvent::calc_dml_event, /* 461 */
ObExprToBase64::eval_to_base64, /* 462 */
ObExprFromBase64::eval_from_base64, /* 463 */
ObExprRandomBytes::generate_random_bytes, /* 464 */
ObExprOpSubQueryInPl::eval_subquery, /* 465 */
ObExprEncodeSortkey::eval_encode_sortkey, /* 466 */
ObExprNLSSort::eval_nlssort, /* 467 */
eval_assign_question_mark_func, /* 468 */
ObExprEncodeSortkey::eval_encode_sortkey, /* 469 */
ObExprJsonObject::eval_json_object, /* 470 */
ObExprJsonExtract::eval_json_extract, /* 471 */
ObExprJsonContains::eval_json_contains, /* 472 */
ObExprJsonContainsPath::eval_json_contains_path, /* 473 */
ObExprJsonDepth::eval_json_depth, /* 474 */
ObExprJsonKeys::eval_json_keys, /* 475 */
ObExprJsonArray::eval_json_array, /* 476 */
ObExprJsonQuote::eval_json_quote, /* 477 */
ObExprJsonUnquote::eval_json_unquote, /* 478 */
ObExprJsonOverlaps::eval_json_overlaps, /* 479 */
ObExprJsonRemove::eval_json_remove, /* 480 */
ObExprJsonSearch::eval_json_search, /* 481 */
ObExprJsonValid::eval_json_valid, /* 482 */
ObExprJsonArrayAppend::eval_json_array_append, /* 483 */
ObExprJsonArrayInsert::eval_json_array_insert, /* 484 */
ObExprJsonReplace::eval_json_replace, /* 485 */
ObExprJsonType::eval_json_type, /* 486 */
ObExprJsonLength::eval_json_length, /* 487 */
ObExprJsonInsert::eval_json_insert, /* 488 */
ObExprJsonStorageSize::eval_json_storage_size, /* 489 */
ObExprJsonStorageFree::eval_json_storage_free, /* 490 */
ObExprJsonMergePreserve::eval_json_merge_preserve, /* 491 */
ObExprJsonMerge::eval_json_merge_preserve, /* 492 */
ObExprJsonMergePatch::eval_json_merge_patch, /* 493 */
ObExprJsonPretty::eval_json_pretty, /* 494 */
ObExprJsonSet::eval_json_set, /* 495 */
ObExprJsonValue::eval_json_value, /* 496 */
ObExprJsonMemberOf::eval_json_member_of, /* 497 */
ObExprJsonExtract::eval_json_extract_null, /* 498 */
ObExprSha::eval_sha, /* 499 */
ObExprSha2::eval_sha2, /* 500 */
ObExprCompress::eval_compress, /* 501 */
ObExprUncompress::eval_uncompress, /* 502 */
ObExprUncompressedLength::eval_uncompressed_length, /* 503 */
ObExprStatementDigest::eval_statement_digest, /* 504 */
ObExprStatementDigestText::eval_statement_digest_text, /* 505 */
ObExprHash::calc_hash_value_expr, /* 506 */
calc_timestamp_to_scn_expr, /* 507 */
calc_scn_to_timestamp_expr, /* 508 */
#if defined(ENABLE_DEBUG_LOG) || !defined(NDEBUG)
ObExprErrno::eval_errno, /* 509 */
#else
NULL, /* 509 */
#endif
ObExprDayName::calc_dayname, /* 510 */
ObExprNullif::eval_nullif_enumset, /* 511 */
ObExprSTIntersects::eval_st_intersects, /* 512 */
ObExprSTX::eval_st_x, /* 513 */
ObExprSTY::eval_st_y, /* 514 */
ObExprSTLatitude::eval_st_latitude, /* 515 */
ObExprSTLongitude::eval_st_longitude, /* 516 */
ObExprSTTransform::eval_st_transform, /* 517 */
ObExprPoint::eval_point, /* 518 */
ObExprLineString::eval_linestring, /* 519 */
ObExprMultiPoint::eval_multipoint, /* 520 */
ObExprMultiLineString::eval_multilinestring, /* 521 */
ObExprPolygon::eval_polygon, /* 522 */
ObExprMultiPolygon::eval_multipolygon, /* 523 */
ObExprGeomCollection::eval_geomcollection, /* 524 */
ObExprPrivSTCovers::eval_st_covers, /* 525 */
ObExprPrivSTBestsrid::eval_st_bestsrid, /* 526 */
ObExprSTAsText::eval_st_astext, /* 527 */
ObExprSTAsWkt::eval_st_astext, /* 528 */
ObExprSTBufferStrategy::eval_st_buffer_strategy, /* 529 */
ObExprSTBuffer::eval_st_buffer, /* 530 */
ObExprSpatialCellid::eval_spatial_cellid, /* 531 */
ObExprSpatialMbr::eval_spatial_mbr, /* 532 */
ObExprPrivSTGeomFromEWKB::eval_st_geomfromewkb, /* 533 */
ObExprSTGeomFromWKB::eval_st_geomfromwkb, /* 534 */
ObExprSTGeometryFromWKB::eval_st_geometryfromwkb, /* 535 */
ObExprPrivSTGeomFromEwkt::eval_st_geomfromewkt, /* 536 */
ObExprPrivSTAsEwkt::eval_priv_st_asewkt, /* 537 */
ObExprGeometryCollection::eval_geometrycollection, /* 538 */
ObExprSTSRID::eval_st_srid, /* 539 */
ObExprSTDistance::eval_st_distance, /* 540 */
ObExprPrivSTSetSRID::eval_priv_st_setsrid, /* 541 */
ObExprSTGeometryFromText::eval_st_geometryfromtext, /* 542 */
ObExprPrivSTPoint::eval_priv_st_point, /* 543 */
ObExprPrivSTGeogFromText::eval_priv_st_geogfromtext, /* 544 */
ObExprPrivSTGeographyFromText::eval_priv_st_geographyfromtext, /* 545 */
ObExprSTIsValid::eval_st_isvalid, /* 546 */
ObExprPrivSTBuffer::eval_priv_st_buffer, /* 547 */
ObExprSTAsWkb::eval_st_aswkb, /* 548 */
ObExprStPrivAsEwkb::eval_priv_st_as_ewkb, /* 549 */
ObExprSTAsBinary::eval_st_asbinary, /* 550 */
ObExprSTDistanceSphere::eval_st_distance_sphere, /* 551 */
ObExprPrivSTDWithin::eval_st_dwithin, /* 552 */
ObExprSTContains::eval_st_contains, /* 553 */
ObExprSTWithin::eval_st_within, /* 554 */
ObExprPrivSTTransform::eval_priv_st_transform, /* 555 */
ObExprSTGeomFromText::eval_st_geomfromtext, /* 556 */
ObExprSTArea::eval_st_area, /* 557 */
ObExprCurrentUserPriv::eval_current_user_priv, /* 558 */
ObExprSqlModeConvert::sql_mode_convert, /* 559 */
ObExprJsonValue::eval_ora_json_value, /* 560 */
ObExprIsJson::eval_is_json, /* 561 */
ObExprJsonEqual::eval_json_equal, /* 562 */
ObExprJsonQuery::eval_json_query, /* 563 */
ObExprJsonMergePatch::eval_ora_json_merge_patch, /* 564 */
ObExprJsonExists::eval_json_exists, /* 565 */
ObExprJsonArray::eval_ora_json_array, /* 566 */
ObExprJsonObject::eval_ora_json_object, /* 567 */
ObExprTreat::eval_treat, /* 568 */
ObExprUuid2bin::uuid2bin, /* 569 */
ObExprIsUuid::is_uuid, /* 570 */
ObExprBin2uuid::bin2uuid, /* 571 */
ObExprNameConst::eval_name_const, /* 572 */
ObExprFormatBytes::eval_format_bytes, /* 573 */
ObExprFormatPicoTime::eval_format_pico_time, /* 574 */
ObExprDesEncrypt::eval_des_encrypt_with_key, /* 575 */
ObExprDesEncrypt::eval_des_encrypt_with_default, /* 576 */
ObExprDesDecrypt::eval_des_decrypt, /* 577 */
ObExprEncrypt::eval_encrypt, /* 578 */
ObExprEncode::eval_encode, /* 579 */
ObExprDecode::eval_decode, /* 580 */
ObExprICUVersion::eval_version, /* 581 */
ObExprCast::eval_cast_multiset, /* 582 */
ObExprGeneratorFunc::eval_next_value, /* 583 */
ObExprZipf::eval_next_value, /* 584 */
ObExprNormal::eval_next_value, /* 585 */
ObExprUniform::eval_next_int_value, /* 586 */
ObExprUniform::eval_next_real_value, /* 587 */
ObExprUniform::eval_next_number_value, /* 588 */
ObExprRandom::calc_random_expr_const_seed, /* 589 */
ObExprRandom::calc_random_expr_nonconst_seed, /* 590 */
ObExprRandstr::calc_random_str, /* 591 */
ObExprNlsInitCap::calc_nls_initcap_expr, /* 592 */
ObExprPrefixPattern::eval_prefix_pattern, /* 593 */
ObExprSysMakeXML::eval_sys_makexml, /* 594 */
ObExprPrivXmlBinary::eval_priv_xml_binary, /* 595 */
ObExprXmlparse::eval_xmlparse, /* 596 */
ObExprXmlElement::eval_xml_element, /* 597 */
ObExprXmlAttributes::eval_xml_attributes, /* 598 */
ObExprExtractValue::eval_extract_value, /* 599 */
ObExprExtractXml::eval_extract_xml, /* 600 */
ObExprXmlSerialize::eval_xml_serialize, /* 601 */
ObExprXmlcast::eval_xmlcast, /* 602 */
ObExprUpdateXml::eval_update_xml, /* 603 */
ObExprJoinFilter::eval_range_filter, /* 604 */
ObExprJoinFilter::eval_in_filter, /* 605 */
ObExprCurrentScn::eval_current_scn, /* 606 */
ObExprTempTableSSID::calc_temp_table_ssid, /* 607 */
};
static ObExpr::EvalBatchFunc g_expr_eval_batch_functions[] = {
expr_default_eval_batch_func, /* 0 */
ObExprUtil::eval_batch_stack_overflow_check, /* 1 */
ObExprAdd::add_datetime_datetime_batch, /* 2 */
ObExprAdd::add_datetime_intervalds_batch, /* 3 */
ObExprAdd::add_datetime_intervalym_batch, /* 4 */
ObExprAdd::add_datetime_number_batch, /* 5 */
ObExprAdd::add_double_double_batch, /* 6 */
ObExprAdd::add_float_float_batch, /* 7 */
ObExprAdd::add_intervalds_datetime_batch, /* 8 */
ObExprAdd::add_intervalds_intervalds_batch, /* 9 */
ObExprAdd::add_intervalds_timestamp_tiny_batch, /* 10 */
ObExprAdd::add_intervalds_timestamptz_batch, /* 11 */
ObExprAdd::add_intervalym_datetime_batch, /* 12 */
ObExprAdd::add_intervalym_intervalym_batch, /* 13 */
ObExprAdd::add_intervalym_timestampltz_batch, /* 14 */
ObExprAdd::add_intervalym_timestampnano_batch, /* 15 */
ObExprAdd::add_intervalym_timestamptz_batch, /* 16 */
ObExprAdd::add_int_int_batch, /* 17 */
ObExprAdd::add_int_uint_batch, /* 18 */
ObExprAdd::add_number_datetime_batch, /* 19 */
ObExprAdd::add_number_number_batch, /* 20 */
ObExprAdd::add_timestampltz_intervalym_batch, /* 21 */
ObExprAdd::add_timestampnano_intervalym_batch, /* 22 */
ObExprAdd::add_timestamp_tiny_intervalds_batch, /* 23 */
ObExprAdd::add_timestamptz_intervalds_batch, /* 24 */
ObExprAdd::add_timestamptz_intervalym_batch, /* 25 */
ObExprAdd::add_uint_int_batch, /* 26 */
ObExprAdd::add_uint_uint_batch, /* 27 */
ObExprMinus::minus_datetime_datetime_batch, /* 28 */
ObExprMinus::minus_datetime_datetime_oracle_batch, /* 29 */
ObExprMinus::minus_datetime_intervalds_batch, /* 30 */
ObExprMinus::minus_datetime_intervalym_batch, /* 31 */
ObExprMinus::minus_datetime_number_batch, /* 32 */
ObExprMinus::minus_double_double_batch, /* 33 */
ObExprMinus::minus_float_float_batch, /* 34 */
ObExprMinus::minus_intervalds_intervalds_batch, /* 35 */
ObExprMinus::minus_intervalym_intervalym_batch, /* 36 */
ObExprMinus::minus_int_int_batch, /* 37 */
ObExprMinus::minus_int_uint_batch, /* 38 */
ObExprMinus::minus_number_number_batch, /* 39 */
ObExprMinus::minus_timestampltz_intervalym_batch, /* 40 */
ObExprMinus::minus_timestampnano_intervalym_batch, /* 41 */
ObExprMinus::minus_timestamp_timestamp_batch, /* 42 */
ObExprMinus::minus_timestamp_tiny_intervalds_batch, /* 43 */
ObExprMinus::minus_timestamptz_intervalds_batch, /* 44 */
ObExprMinus::minus_timestamptz_intervalym_batch, /* 45 */
ObExprMinus::minus_uint_int_batch, /* 46 */
ObExprMinus::minus_uint_uint_batch, /* 47 */
ObExprMul::mul_double_batch, /* 48 */
ObExprMul::mul_float_batch, /* 49 */
ObExprMul::mul_intervalds_number_batch, /* 50 */
ObExprMul::mul_intervalym_number_batch, /* 51 */
ObExprMul::mul_int_int_batch, /* 52 */
ObExprMul::mul_int_uint_batch, /* 53 */
ObExprMul::mul_number_batch, /* 54 */
ObExprMul::mul_number_intervalds_batch, /* 55 */
ObExprMul::mul_number_intervalym_batch, /* 56 */
ObExprMul::mul_uint_int_batch, /* 57 */
ObExprMul::mul_uint_uint_batch, /* 58 */
ObExprDiv::div_float_batch, /* 59 */
ObExprDiv::div_double_batch, /* 60 */
ObExprDiv::div_number_batch, /* 61 */
ObExprDiv::div_intervalym_number_batch, /* 62 */
ObExprDiv::div_intervalds_number_batch, /* 63 */
ObExprMakeTime::eval_batch_maketime, /* 64 */
ObExprAnd::eval_and_batch_exprN, /* 65 */
ObExprOr::eval_or_batch_exprN, /* 66 */
ObExprFuncPartKey::calc_partition_key_batch, /* 67 */
NULL,//ObExprFuncPartNewKey::calc_new_partition_key_batch is deleted/* 68 */
ObExprInOrNotIn::eval_batch_in_without_row_fallback, /* 69 */
ObExprInOrNotIn::eval_batch_in_without_row, /* 70 */
ObExprLike::eval_like_expr_batch_only_text_vectorized, /* 71 */
ObExprCase::eval_case_batch, /* 72 */
ObExprSubstr::eval_substr_batch, /* 73 */
ObExprJoinFilter::eval_bloom_filter_batch, /* 74 */
ObExprToNumber::calc_tonumber_expr_batch, /* 75 */
ObExprToCharCommon::eval_oracle_to_char_batch, /* 76 */
ObExprExtract::calc_extract_oracle_batch, /* 77 */
ObExprExtract::calc_extract_mysql_batch, /* 78 */
cast_eval_arg_batch, /* 79 */
ObExprOutputPack::eval_output_pack_batch, /* 80 */
eval_batch_ceil_floor, /* 81 */
ObExprFuncRound::calc_round_expr_numeric1_batch, /* 82 */
ObExprFuncRound::calc_round_expr_numeric2_batch, /* 83 */
ObExprFuncRound::calc_round_expr_datetime1_batch, /* 84 */
ObExprFuncRound::calc_round_expr_datetime2_batch, /* 85 */
ObExprNot::eval_not_batch, /* 86 */
NULL, // ObExprCalcPartitionBase::calc_opt_route_hash_one_vec, /* 87 */
ObExprBenchmark::eval_benchmark_batch, /* 88 */
ObExprToBase64::eval_to_base64_batch, /* 89 */
ObExprFromBase64::eval_from_base64_batch, /* 90 */
ObExprEncodeSortkey::eval_encode_sortkey_batch, /* 91 */
ObExprHash::calc_hash_value_expr_batch, /* 92 */
ObExprSubstringIndex::eval_substring_index_batch, /* 93 */
ObExprInstrb::calc_instrb_expr_batch, /* 94 */
ObExprNaNvl::eval_nanvl_batch, /* 95 */
ObExprNvlUtil::calc_nvl_expr_batch, /* 96 */
ObExprNvl2Oracle::calc_nvl2_oracle_expr_batch, /* 97 */
ObExprUuid2bin::uuid2bin_batch, /* 98 */
ObExprIsUuid::is_uuid_batch, /* 99 */
ObExprBin2uuid::bin2uuid_batch, /* 100 */
ObExprFormatBytes::eval_format_bytes_batch, /* 101 */
ObExprFormatPicoTime::eval_format_pico_time_batch, /* 102 */
ObExprDesEncrypt::eval_des_encrypt_batch_with_default, /* 103 */
ObExprDesEncrypt::eval_des_encrypt_batch_with_key, /* 104 */
ObExprDesDecrypt::eval_des_decrypt_batch, /* 105 */
ObExprEncrypt::eval_encrypt_batch, /* 106 */
ObExprEncode::eval_encode_batch, /* 107 */
ObExprDecode::eval_decode_batch, /* 108 */
ObExprCoalesce::calc_batch_coalesce_expr, /* 109 */
ObExprIsNot::calc_batch_is_not_null, /* 110 */
ObExprNlsInitCap::calc_nls_initcap_batch, /* 111 */
ObExprJoinFilter::eval_range_filter_batch, /* 112 */
ObExprJoinFilter::eval_in_filter_batch, /* 113 */
calc_sqrt_expr_mysql_in_batch, /* 114 */
calc_sqrt_expr_oracle_double_in_batch, /* 115 */
calc_sqrt_expr_oracle_number_in_batch /* 116 */
};
REG_SER_FUNC_ARRAY(OB_SFA_SQL_EXPR_EVAL,
g_expr_eval_functions,
ARRAYSIZEOF(g_expr_eval_functions));
REG_SER_FUNC_ARRAY(OB_SFA_SQL_EXPR_EVAL_BATCH,
g_expr_eval_batch_functions,
ARRAYSIZEOF(g_expr_eval_batch_functions));
} // end namespace sql
} // end namespace oceanbase