Files
openGauss-server/contrib/gms_utility/gms_utility.h
2024-11-11 14:48:03 +08:00

115 lines
3.1 KiB
C

/*---------------------------------------------------------------------------------------*
* gms_utility.h
*
* Definition about gms_utility package.
*
* IDENTIFICATION
* contrib/gms_utility/gms_utility.h
*
* ---------------------------------------------------------------------------------------
*/
#ifndef GMS_UTILITY_H
#define GMS_UTILITY_H
#include "postgres.h"
#include "funcapi.h"
#include "fmgr.h"
#include "catalog/pg_proc.h"
#include "catalog/gs_package.h"
#include "catalog/pg_object.h"
#include "catalog/pg_trigger.h"
#include "catalog/pg_synonym.h"
#include "parser/parse_relation.h"
typedef enum {
METHOD_OPT_TABLE,
METHOD_OPT_ALL_COLUMN,
METHOD_OPT_ALL_INDEX
} AnalyzeMethodOpt;
typedef struct AnalyzeVar {
bool isEstimate;
bool validRows;
int64 estimateRows;
bool validPercent;
int64 estimatePercent;
} AnalyzeVar;
typedef struct TokenizeVar {
List* list;
char* dblink;
int nextpos;
} TokenizeVar;
typedef struct NameResolveVar {
char* schema;
char* part1;
char* part2;
int part1Type;
Oid objectId;
int len;
bool synonym;
} NameResolveVar;
/*
* name resolve function input param context valid value: 0~9
*/
typedef enum {
NR_CONTEXT_TABLE,
NR_CONTEXT_PLSQL,
NR_CONTEXT_SEQUENCES,
NR_CONTEXT_TRIGGER,
NR_CONTEXT_JAVA_SOURCE,
NR_CONTEXT_JAVA_RESOURCE,
NR_CONTEXT_JAVA_CLASS,
NR_CONTEXT_TYPE,
NR_CONTEXT_JAVA_SHARED_DATA,
NR_CONTEXT_INDEX,
NR_CONTEXT_UNKNOWN
} NameResolveContext;
/*
* name resolve function output param part1_type valid value:
* 0、1、2、5、6、7、8、9、12、13
*/
#define NAME_RESOLVE_TYPE_NONE 0
#define NAME_RESOLVE_TYPE_INDEX 1
#define NAME_RESOLVE_TYPE_TABLE 2
#define NAME_RESOLVE_TYPE_SYNONYM 5
#define NAME_RESOLVE_TYPE_SEQUENCE 6
#define NAME_RESOLVE_TYPE_PROCEDURE 7
#define NAME_RESOLVE_TYPE_FUNCTION 8
#define NAME_RESOLVE_TYPE_PACKAGE 9
#define NAME_RESOLVE_TYPE_TRIGGER 12
#define NAME_RESOLVE_TYPE_TYPE 13
/*
* name parse double quote marks
*/
#define QUOTE_NONE 0x01
#define QUOTE_STARTED 0x02
#define QUOTE_ENDED 0x04
#define QUOTE_STATE(val, bits) (((val) & (bits)) == (val))
#define IS_QUOTE_STARTED(val) QUOTE_STATE(val, QUOTE_STARTED)
#define BEFORE_QUOTE_STARTED(val) QUOTE_STATE(val, QUOTE_NONE)
#define IS_QUOTE_END(val) QUOTE_STATE(val, QUOTE_ENDED)
#define NAME_TOKENIZE_MAX_ITEM_COUNT 3
extern "C" Datum gms_analyze_schema(PG_FUNCTION_ARGS);
extern "C" Datum gms_canonicalize(PG_FUNCTION_ARGS);
extern "C" Datum gms_compile_schema(PG_FUNCTION_ARGS);
extern "C" Datum gms_expand_sql_text(PG_FUNCTION_ARGS);
extern "C" Datum gms_get_cpu_time(PG_FUNCTION_ARGS);
extern "C" Datum gms_get_endianness(PG_FUNCTION_ARGS);
extern "C" Datum gms_get_sql_hash(PG_FUNCTION_ARGS);
extern "C" Datum gms_name_tokenize(PG_FUNCTION_ARGS);
extern "C" Datum gms_name_resolve(PG_FUNCTION_ARGS);
extern "C" Datum gms_is_bit_set(PG_FUNCTION_ARGS);
extern "C" Datum gms_old_current_schema(PG_FUNCTION_ARGS);
extern void RecompileSingleFunction(Oid func_oid, bool is_procedure);
extern void RecompileSinglePackage(Oid package_oid, bool is_spec);
#endif /* GMS_UTILITY_H */