Files
openGauss-server/src/include/vecexecutor/vecfunc.h
2021-03-06 12:39:28 +08:00

68 lines
2.2 KiB
C

/*
* Copyright (c) 2020 Huawei Technologies Co.,Ltd.
*
* openGauss is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* 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 PSL v2 for more details.
* ---------------------------------------------------------------------------------------
*
* vecfunc.h
*
*
* IDENTIFICATION
* src/include/vecexecutor/vecfunc.h
*
* ---------------------------------------------------------------------------------------
*/
#ifndef VECFUNC_H
#define VECFUNC_H
#include "utils/hsearch.h"
#include "utils/builtins.h"
#include "utils/fmgrtab.h"
#include "mb/pg_wchar.h"
#define FUNCACHE_NUM 8
typedef struct {
/* fn_oid is the hash key and so must be first! */
Oid fn_oid; /* OID of an external C function */
VectorFunction vec_fn_cache[FUNCACHE_NUM]; /* address of its info record */
VectorFunction vec_agg_cache[FUNCACHE_NUM];
/*
* function cache pointer to the sonic hash agg function if supported
*/
VectorFunction vec_sonic_agg_cache[FUNCACHE_NUM];
/* vec_transform_function has three applications
* 1. this function is used for the last stage of avg(vec_aggfinal_function);
* 2. we can replace some native PGFunctions to our transformed function for some reasons;
* (such as: int_numeric TO int_numeric_bi)
* 3. this interface is reserved for later use.
*/
PGFunction vec_transform_function[FUNCACHE_NUM];
/*
* sonic transform functions, which have the same meanings as vec_transform_function, but
* used only for sonic cases.
*/
PGFunction vec_sonic_transform_function[FUNCACHE_NUM];
} VecFuncCacheEntry;
typedef Datum (*sub_Array)(Datum str, int32 start, int32 length, bool* isnull, mblen_converter fun_mblen);
extern sub_Array substr_Array[32];
#endif /* VECFUNC_H */