提交 f2f91f98 编写于 作者: J jg0 提交者: wangzelin.wzl

【CP】patch to opensource

上级 8160997f
......@@ -67,7 +67,6 @@ ob_set_subtarget(oblib_lib common
allocator/ob_thread_mempool.cpp
allocator/ob_page_manager.cpp
alloc/block_set.cpp
alloc/malloc_hook.cpp
alloc/object_set.cpp
alloc/ob_malloc_allocator.cpp
alloc/ob_tenant_ctx_allocator.cpp
......@@ -472,3 +471,7 @@ ob_lib_add_pchs(lib
hash/ob_concurrent_hash_map.h
)
add_library(malloc_hook STATIC
alloc/malloc_hook.cpp
alloc/malloc_hook.h)
target_link_libraries(malloc_hook oblib_base)
......@@ -11,189 +11,159 @@
*/
#include "malloc_hook.h"
#include "lib/utility/ob_macro_utils.h"
#include "lib/utility/ob_defer.h"
#include "lib/allocator/ob_mem_leak_checker.h"
#include "lib/allocator/ob_malloc.h"
namespace oceanbase {
int64_t lib::memalign_size = 0;
namespace lib {
RLOCAL(int, glibc_hook_opt);
} // namespace lib
} // namespace oceanbase
using namespace oceanbase;
using namespace oceanbase::common;
using namespace oceanbase::lib;
#if 0
EXTERN_C_BEGIN
extern void *__libc_malloc(size_t size);
extern void __libc_free(void *ptr);
extern void *__libc_realloc(void *ptr, size_t size);
static ObMemAttr mattr{OB_SERVER_TENANT_ID, ObModIds::OB_JIT_MALLOC, ObCtxIds::GLIBC};
#define up_align(x, y) (((x) + ((y)-1)) / (y) * (y))
uint64_t up_align(uint64_t x, uint64_t align)
{
return (x + (align - 1)) & ~(align - 1);
}
void *calloc(size_t nmemb, size_t size)
struct Header
{
static const uint32_t MAGIC_CODE = 0XA1B2C3D1;
static const uint32_t SIZE;
Header(int32_t size, bool from_mmap)
: magic_code_(MAGIC_CODE),
data_size_(size),
offset_(0),
from_mmap_(from_mmap)
{}
bool check_magic_code() const { return MAGIC_CODE == magic_code_; }
void mark_unused() { magic_code_ &= ~0x1; }
static Header *ptr2header(void *ptr) { return reinterpret_cast<Header*>((char*)ptr - SIZE); }
uint32_t magic_code_;
int32_t data_size_;
uint32_t offset_;
uint8_t from_mmap_;
char padding_[3];
char data_[0];
} __attribute__((aligned (16)));
const uint32_t Header::SIZE = offsetof(Header, data_);
const size_t max_retry_size = 2 << 30; // 2G
void *ob_malloc_retry(size_t size)
{
void *ptr = nullptr;
if (OB_LIKELY(nmemb != 0) && OB_LIKELY(size != 0)) {
void *pheader = nullptr;
size_t all_size = HOOK_HEADER_SIZE + nmemb * size;
if (glibc_hook_opt != GHO_NOHOOK) {
do {
pheader = ob_malloc(all_size, mattr);
if (OB_UNLIKELY(nullptr == pheader)) {
this_routine::usleep(10000); // 10ms
}
} while (OB_UNLIKELY(nullptr == pheader) &&
OB_UNLIKELY(glibc_hook_opt == GHO_NONULL));
} else {
pheader = __libc_malloc(all_size);
do {
static ObMemAttr attr(OB_SERVER_TENANT_ID, "glibc_malloc", ObCtxIds::GLIBC);
ptr = ob_malloc(size, attr);
if (OB_ISNULL(ptr)) {
::usleep(10000); // 10ms
}
if (OB_LIKELY(pheader != nullptr)) {
MEMSET(pheader, 0, all_size);
HookHeader *header = new (pheader) HookHeader();
header->data_size_ = all_size - HOOK_HEADER_SIZE;
header->from_glibc_ = GHO_NOHOOK == glibc_hook_opt;
ptr = header->data_;
}
}
} while (OB_ISNULL(ptr) && !(size > max_retry_size || 0 == size));
return ptr;
}
void *malloc(size_t size)
static __thread bool in_hook = false;
void *ob_malloc_hook(size_t size, const void *)
{
void *ptr = nullptr;
if (OB_LIKELY(size != 0)) {
void *pheader = nullptr;
size_t all_size = HOOK_HEADER_SIZE + size;
if (glibc_hook_opt != GHO_NOHOOK) {
do {
pheader = ob_malloc(all_size, mattr);
if (OB_UNLIKELY(nullptr == pheader)) {
this_routine::usleep(10000); // 10ms
}
} while (OB_UNLIKELY(nullptr == pheader) &&
OB_UNLIKELY(glibc_hook_opt == GHO_NONULL));
} else {
pheader = __libc_malloc(all_size);
}
if (OB_LIKELY(pheader != nullptr)) {
HookHeader *header = new (pheader) HookHeader();
header->data_size_ = size;
header->from_glibc_ = GHO_NOHOOK == glibc_hook_opt;
ptr = header->data_;
size_t real_size = size + Header::SIZE;
void *tmp_ptr = nullptr;
bool from_mmap = false;
if (OB_UNLIKELY(in_hook)) {
if (MAP_FAILED == (tmp_ptr = ::mmap(nullptr, real_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))) {
tmp_ptr = nullptr;
}
from_mmap = true;
} else {
bool in_hook_bak = in_hook;
in_hook = true;
DEFER(in_hook = in_hook_bak);
tmp_ptr = ob_malloc_retry(real_size);
}
if (OB_LIKELY(tmp_ptr != nullptr)) {
auto *header = new (tmp_ptr) Header(size, from_mmap);
ptr = header->data_;
}
return ptr;
}
void free(void *ptr)
void ob_free_hook(void *ptr, const void *)
{
if (OB_LIKELY(ptr != nullptr)) {
HookHeader *header = reinterpret_cast<HookHeader*>((char*)ptr - HOOK_HEADER_SIZE);
if (OB_UNLIKELY(header->MAGIC_CODE_ != HOOK_MAGIC_CODE)) {
#ifndef NDEBUG
// debug mode
abort();
#else
_OB_LOG(ERROR,
"unexpected magic, memory broken or mismatched hook function is invoked!!!");
return;
#endif
}
auto *header = Header::ptr2header(ptr);
abort_unless(header->check_magic_code());
header->mark_unused();
void *orig_ptr = (char*)header - header->offset_;
// Temporary code, used to count the usage of the align interface
if (0xabcd1234 == *(int64_t*)&header->padding__[0]) {
ATOMIC_FAA(&oceanbase::lib::memalign_size, -header->data_size_);
}
if (!header->from_glibc_) {
ob_free(orig_ptr);
if (OB_UNLIKELY(header->from_mmap_)) {
::munmap(orig_ptr, header->data_size_ + Header::SIZE + header->offset_);
} else {
__libc_free(orig_ptr);
bool in_hook_bak = in_hook;
in_hook = true;
DEFER(in_hook = in_hook_bak);
ob_free(orig_ptr);
}
}
}
void *realloc(void *ptr, size_t size)
void *ob_realloc_hook(void *ptr, size_t size, const void *caller)
{
void *nptr = nullptr;
HookHeader *old_header = nullptr;
void *orig_ptr = nullptr;
if (ptr != nullptr) {
old_header = reinterpret_cast<HookHeader*>((char*)ptr - HOOK_HEADER_SIZE);
abort_unless(HOOK_MAGIC_CODE == old_header->MAGIC_CODE_);
orig_ptr = (char*)old_header - old_header->offset_;
}
if (nullptr == ptr ||
(old_header->from_glibc_ == (GHO_NOHOOK == glibc_hook_opt))) {
void *pheader = nullptr;
size_t all_size = size != 0 ? HOOK_HEADER_SIZE + size : 0;
if (glibc_hook_opt != GHO_NOHOOK) {
do {
pheader = ob_realloc(orig_ptr, all_size, mattr);
if (OB_UNLIKELY(nullptr == pheader)) {
this_routine::usleep(10000); // 10ms
}
} while (OB_UNLIKELY(nullptr == pheader) &&
OB_UNLIKELY(glibc_hook_opt == GHO_NONULL));
} else {
pheader = __libc_realloc(orig_ptr, all_size);
}
if (OB_LIKELY(pheader != nullptr)) {
HookHeader *new_header = new (pheader) HookHeader();
new_header->data_size_ = all_size - HOOK_HEADER_SIZE;
new_header->from_glibc_ = GHO_NOHOOK == glibc_hook_opt;
nptr = new_header->data_;
size_t real_size = size + Header::SIZE;
void *tmp_ptr = nullptr;
bool from_mmap = false;
if (OB_UNLIKELY(in_hook)) {
if (MAP_FAILED == (tmp_ptr = ::mmap(nullptr, real_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))) {
tmp_ptr = nullptr;
}
from_mmap = true;
} else {
// When ptr is not empty, and hook and non-hook need to be called separately
if (size != 0) {
nptr = malloc(size);
if (nptr != nullptr) {
memmove(nptr, ptr, MIN(old_header->data_size_, size));
}
bool in_hook_bak = in_hook;
in_hook = true;
DEFER(in_hook = in_hook_bak);
tmp_ptr = ob_malloc_retry(real_size);
}
if (OB_LIKELY(tmp_ptr != nullptr)) {
auto *header = new (tmp_ptr) Header(size, from_mmap);
nptr = header->data_;
if (ptr != nullptr) {
auto *old_header = Header::ptr2header(ptr);
abort_unless(old_header->check_magic_code());
memmove(nptr, ptr, MIN(old_header->data_size_, size));
ob_free_hook(old_header->data_, caller);
}
free(ptr);
}
return nptr;
}
void *memalign(size_t align, size_t size)
void *ob_memalign_hook(size_t alignment, size_t size, const void *)
{
void *ptr = nullptr;
if (OB_LIKELY(size != 0)) {
if (OB_LIKELY(size > 0)) {
// Make sure alignment is power of 2
{
size_t a = 8;
while (a < align)
while (a < alignment)
a <<= 1;
align = a;
alignment = a;
}
size_t real_size = 2 * MAX(alignment, Header::SIZE) + size;
void *tmp_ptr = nullptr;
size_t all_size = 2 * MAX(align, HOOK_HEADER_SIZE) + size;
if (glibc_hook_opt != GHO_NOHOOK) {
do {
tmp_ptr = ob_malloc(all_size, mattr);
if (OB_UNLIKELY(nullptr == tmp_ptr)) {
this_routine::usleep(10000); // 10ms
}
} while (OB_UNLIKELY(nullptr == tmp_ptr) &&
OB_UNLIKELY(glibc_hook_opt == GHO_NONULL));
bool from_mmap = false;
if (OB_UNLIKELY(in_hook)) {
if (MAP_FAILED == (tmp_ptr = ::mmap(nullptr, real_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))) {
tmp_ptr = nullptr;
}
from_mmap = true;
} else {
tmp_ptr = __libc_malloc(all_size);
bool in_hook_bak = in_hook;
in_hook = true;
DEFER(in_hook = in_hook_bak);
tmp_ptr = ob_malloc_retry(real_size);
}
if (OB_LIKELY(tmp_ptr != nullptr)) {
ATOMIC_FAA(&oceanbase::lib::memalign_size, size);
char *start = (char *)tmp_ptr + HOOK_HEADER_SIZE;
char *align_ptr = (char *)up_align(
reinterpret_cast<int64_t>(start), align);
char *pheader = align_ptr - HOOK_HEADER_SIZE;
char *start = (char *)tmp_ptr + Header::SIZE;
char *align_ptr = (char *)up_align(reinterpret_cast<int64_t>(start), alignment);
char *pheader = align_ptr - Header::SIZE;
size_t offset = pheader - (char*)tmp_ptr;
HookHeader *header = new (pheader) HookHeader();
*(int64_t*)&header->padding__[0] = 0xabcd1234;
header->data_size_ = size;
header->from_glibc_ = GHO_NOHOOK == glibc_hook_opt;
auto *header = new (pheader) Header(size, from_mmap);
header->offset_ = offset;
ptr = header->data_;
}
......@@ -201,36 +171,17 @@ void *memalign(size_t align, size_t size)
return ptr;
}
void *valloc(size_t size)
{
return memalign(sysconf(_SC_PAGESIZE), size);
}
int posix_memalign(void **memptr, size_t alignment, size_t size)
{
int err = 0;
if (OB_UNLIKELY(nullptr == memptr)) {
err = -EINVAL;
} else {
*memptr = nullptr;
void *ptr = memalign(alignment, size);
if (OB_UNLIKELY(nullptr == ptr)) {
err = -ENOMEM;
} else {
*memptr = ptr;
}
}
return err;
}
#if !defined(__MALLOC_HOOK_VOLATILE)
#define MALLOC_HOOK_MAYBE_VOLATILE /**/
#else
#define MALLOC_HOOK_MAYBE_VOLATILE __MALLOC_HOOK_VOLATILE
#endif
char *strdup(const char *s)
{
size_t len = strlen(s) + 1;
void *new_s = malloc(len);
return new_s != nullptr ? (char*)memcpy(new_s, s, len) : nullptr;
extern "C" {
__attribute__((visibility("default"))) void *(*MALLOC_HOOK_MAYBE_VOLATILE __malloc_hook)(size_t, const void *) = ob_malloc_hook;
__attribute__((visibility("default"))) void (*MALLOC_HOOK_MAYBE_VOLATILE __free_hook)(void *, const void *) = ob_free_hook;
__attribute__((visibility("default"))) void *(*MALLOC_HOOK_MAYBE_VOLATILE __realloc_hook)(void *, size_t, const void *) = ob_realloc_hook;
__attribute__((visibility("default"))) void *(*MALLOC_HOOK_MAYBE_VOLATILE __memalign_hook)(size_t, size_t, const void *) = ob_memalign_hook;
}
EXTERN_C_END
#endif
void init_malloc_hook() {}
......@@ -12,29 +12,6 @@
#ifndef MALLOC_HOOK_H
#define MALLOC_HOOK_H
#include <cstddef>
#include "lib/coro/co_var.h"
namespace oceanbase {
namespace lib {
extern int64_t memalign_size;
static const uint32_t HOOK_MAGIC_CODE = 0XA1B2C3D4;
struct HookHeader {
HookHeader() : MAGIC_CODE_(HOOK_MAGIC_CODE), from_glibc_(0), offset_(0)
{}
uint32_t MAGIC_CODE_;
uint32_t data_size_;
uint8_t from_glibc_;
uint64_t offset_;
char padding__[8];
char data_[0];
} __attribute__((aligned(16)));
static const uint32_t HOOK_HEADER_SIZE = offsetof(HookHeader, data_);
enum GLIBC_HOOK_OPT { GHO_NOHOOK, GHO_HOOK, GHO_NONULL };
extern RLOCAL(int, glibc_hook_opt);
} // namespace lib
} // namespace oceanbase
extern void init_malloc_hook();
#endif /* MALLOC_HOOK_H */
......@@ -13,9 +13,10 @@
#include "lib/allocator/ob_mem_leak_checker.h"
using namespace oceanbase::lib;
namespace oceanbase {
namespace common {
lib::ObSimpleRateLimiter ObMemLeakChecker::rl_ = {INT64_MAX};
namespace oceanbase
{
namespace common
{
} // end of namespace common
} // end of namespace oceanbase
......@@ -12,6 +12,7 @@
#ifndef __OB_MEM_LEAK_CHECKER_H__
#define __OB_MEM_LEAK_CHECKER_H__
#include "lib/utility/ob_defer.h"
#include "lib/hash/ob_hashmap.h"
#include "lib/alloc/alloc_struct.h"
#include "lib/utility/ob_simple_rate_limiter.h"
......@@ -51,7 +52,7 @@ class ObMemLeakChecker {
public:
typedef hash::ObHashMap<Info, std::pair<int64_t, int64_t>> mod_info_map_t;
using TCharArray = char[lib::AOBJECT_LABEL_SIZE + 1];
using TCharArray = char[2 * lib::AOBJECT_LABEL_SIZE + 1];
ObMemLeakChecker()
{
......@@ -100,10 +101,15 @@ public:
// One copy is encoded according to the same rules as AObject, used for memory compare to accelerate matching
void set_str(const char* str)
{
// disable leak check under current function
ct_ = NOCHECK;
CheckType tmp_ct = NOCHECK;
DEFER(ct_ = tmp_ct);
_OB_LOG(INFO, "leak mod to check: %s", str);
if (nullptr == str || 0 == STRLEN(str) || 0 == STRNCMP(str, "NONE", STRLEN("NONE"))) {
origin_str_[0] = '\0';
ct_ = NOCHECK;
tmp_ct = NOCHECK;
} else {
STRNCPY(origin_str_, str, sizeof(origin_str_));
origin_str_[sizeof(origin_str_) - 1] = '\0';
......@@ -111,12 +117,12 @@ public:
MEMCPY(cpy, origin_str_, sizeof(origin_str_));
char* end = (char*)memchr(cpy, '@', strlen(cpy));
if (end != nullptr) {
ct_ = CONTEXT_CHECK;
tmp_ct = CONTEXT_CHECK;
static_id_ = atoi(end + 1);
*end = '\0';
is_wildcard_ = 0 == STRCMP("*", cpy);
} else {
ct_ = LABEL_CHECK;
tmp_ct = LABEL_CHECK;
}
const int64_t mod_id = ObModSet::instance().get_mod_id(cpy);
if (is_valid_mod_id(mod_id)) {
......@@ -149,16 +155,11 @@ public:
malloc_info_.reuse();
}
void set_rate(int64_t rate)
{
_OB_LOG(INFO, "leak rate, current: %ld, new: %ld", rl_.rate(), rate);
rl_.set_rate(rate);
}
void on_alloc(lib::AObject& obj)
void on_alloc(lib::AObject &obj)
{
obj.on_leak_check_ = false;
if (is_label_check() && label_match(obj) && (OB_SUCCESS == rl_.try_acquire()) &&
if (is_label_check() &&
label_match(obj) &&
malloc_info_.size() < MAP_SIZE_LIMIT) {
Info info;
info.bytes_ = obj.alloc_bytes_;
......@@ -256,7 +257,7 @@ public:
private:
// Limit the memory used by hashmap
static constexpr int MEMORY_LIMIT = 128L << 20;
static constexpr int MEMORY_LIMIT = 1L << 30;
static constexpr int MAP_SIZE_LIMIT = MEMORY_LIMIT / sizeof(Info);
enum CheckType {
NOCHECK,
......@@ -274,16 +275,13 @@ private:
};
char data_[0];
};
TCharArray label_;
char label_[lib::AOBJECT_LABEL_SIZE + 1];
};
CheckType ct_;
int static_id_;
bool is_wildcard_;
int len_;
mod_alloc_info_t malloc_info_;
private:
static lib::ObSimpleRateLimiter rl_;
};
}; // end namespace common
}; // end namespace oceanbase
......
......@@ -158,11 +158,6 @@ void reset_mem_leak_checker_label(const char* str)
get_mem_leak_checker().reset();
}
void reset_mem_leak_checker_rate(int64_t rate)
{
get_mem_leak_checker().set_rate(rate);
}
const ObCtxInfo& get_global_ctx_info()
{
static ObCtxInfo info;
......
......@@ -24,7 +24,6 @@ extern const ObCtxInfo& get_global_ctx_info();
extern void print_malloc_stats(bool print_glibc_malloc_stats);
extern void ob_purge_memory_pool();
void reset_mem_leak_checker_label(const char* str);
void reset_mem_leak_checker_rate(int64_t rate);
extern ObMemLeakChecker& get_mem_leak_checker();
/// set the memory as read-only
......
......@@ -1813,21 +1813,6 @@ void ObLogger::check_reset_force_allows()
}
}
int64_t ObLogger::get_reimbursation_time()
{
int64_t ret_time = 0;
int64_t task_level = 0;
if (tl_type_ >= 0 && tl_type_ < 5) {
for (int64_t i = 0; i < 5; ++i) {
if (ATOMIC_LOAD(current_written_count_ + tl_type_) < ATOMIC_LOAD(current_written_count_ + i)) {
++task_level;
}
}
}
ret_time = POP_COMPENSATED_TIME[task_level]; // 0, 1, 2, 3, 4us
return ret_time;
}
int ObLogger::async_log_data_body(ObPLogItem& log_item, const char* info_string, const int64_t string_len)
{
int ret = OB_SUCCESS;
......@@ -2032,39 +2017,6 @@ void ObLogger::async_log_message(const char* mod_name, const int32_t level, cons
}
}
int64_t ObLogger::get_wait_us(const int32_t level)
{
int64_t ret_timeout_us = 0;
if (is_force_allows()) {
// if force allows, wait 100us
ret_timeout_us = 100; // 100us
} else {
switch (level) {
case OB_LOG_LEVEL_ERROR: {
ret_timeout_us = 100; // 100us
break;
}
case OB_LOG_LEVEL_WARN: {
ret_timeout_us = 10; // 10us
ret_timeout_us += 2 * get_reimbursation_time(); // double it
break;
}
case OB_LOG_LEVEL_INFO:
case OB_LOG_LEVEL_TRACE: {
ret_timeout_us = 2; // 2us
ret_timeout_us += get_reimbursation_time();
break;
}
default: {
ret_timeout_us = 0; // 0us
break;
// do nothing
}
}
}
return ret_timeout_us;
}
int ObLogger::alloc_log_item(const int32_t level, const int32_t size, ObPLogItem*& log_item)
{
UNUSED(level);
......@@ -2077,18 +2029,8 @@ int ObLogger::alloc_log_item(const int32_t level, const int32_t size, ObPLogItem
ret = OB_NOT_INIT;
LOG_STDERR("uninit error, ret=%d, level=%d\n", ret, level);
} else if (OB_UNLIKELY(nullptr == (buf = (char*)p_alloc->alloc(size)))) {
int64_t wait_us = get_wait_us(level);
const int64_t per_us = MIN(wait_us, 10);
while (wait_us > 0) {
if (nullptr != (buf = (char*)p_alloc->alloc(size))) {
break;
} else {
usleep(per_us);
wait_us -= per_us;
}
}
if (nullptr == buf) {
ret = OB_ALLOCATE_MEMORY_FAILED;
ret = OB_ALLOCATE_MEMORY_FAILED;
if (TC_REACH_TIME_INTERVAL(1 * 1000L * 1000L)) { // every sec
LOG_STDERR("alloc_log_item error, ret=%d level=%d\n", ret, level);
}
}
......
......@@ -729,9 +729,6 @@ public:
bool is_force_allows() const;
void check_reset_force_allows();
int64_t get_reimbursation_time();
int64_t get_wait_us(const int32_t level);
//@brief thread buffer for printing log
LogBuffer* get_thread_buffer();
......
......@@ -65,7 +65,7 @@ void ob_signal_handler(int sig, siginfo_t* si, void*)
void coredump_cb(int sig, siginfo_t* si)
{
send_request_and_wait(VERB_LEVEL_2, syscall(SYS_gettid) /*exclude_id*/);
#define MINICORE 1
#define MINICORE 0
#if MINICORE
int pid = 0;
if ((pid = fork()) != 0) {
......@@ -107,6 +107,7 @@ void coredump_cb(int sig, siginfo_t* si)
#if MINICORE
} else {
// child
prctl(PR_SET_NAME, "minicoredump");
int64_t total_size = 0;
if (lib::g_mem_cutter != nullptr) {
lib::g_mem_cutter->cut(total_size);
......
......@@ -43,12 +43,13 @@ private:
private:
pthread_key_t key_;
static __thread T* instance_;
static __thread T *instance_;
static __thread bool in_create_;
};
// NOTE: thread local diagnose information
// TODO: check if multi-query execute within one thread.
template <class T>
__thread T* ObDITls<T>::instance_ = NULL;
template <class T> __thread T *ObDITls<T>::instance_ = NULL;
template <class T> __thread bool ObDITls<T>::in_create_ = false;
template <class T>
void ObDITls<T>::destroy_thread_data_(void* ptr)
......@@ -57,6 +58,7 @@ void ObDITls<T>::destroy_thread_data_(void* ptr)
T* tls = (T*)ptr;
delete tls;
instance_ = NULL;
in_create_ = false;
}
}
......@@ -104,7 +106,11 @@ template <class T>
T* ObDITls<T>::get_instance()
{
if (OB_UNLIKELY(NULL == instance_)) {
instance_ = get_di_tls().new_instance();
if (OB_LIKELY(!in_create_)) {
in_create_ = true;
instance_ = get_di_tls().new_instance();
in_create_ = false;
}
}
return instance_;
}
......
......@@ -308,6 +308,7 @@ target_link_libraries(observer
oceanbase_static
-static-libgcc
-static-libstdc++
malloc_hook
${LGPL_DEPS}
)
execute_process(
......
......@@ -13,6 +13,7 @@
#define USING_LOG_PREFIX SERVER
#include "election/ob_election_async_log.h"
#include "lib/alloc/malloc_hook.h"
#include "lib/alloc/ob_malloc_allocator.h"
#include "lib/allocator/ob_malloc.h"
#include "lib/file/file_directory_utils.h"
......@@ -360,6 +361,7 @@ static void print_all_limits()
int main(int argc, char* argv[])
{
init_malloc_hook();
int64_t memory_used = get_virtual_memory_used();
/**
signal handler stack
......
......@@ -90,8 +90,6 @@ int ObDumpTaskGenerator::generate_task_from_file()
char str[lib::AOBJECT_LABEL_SIZE + 1];
snprintf(str, sizeof(str), "%.*s", (int32_t)node->children_[0]->str_len_, node->children_[0]->str_value_);
reset_mem_leak_checker_label(str);
} else if (SET_LEAK_RATE == node->value_) {
reset_mem_leak_checker_rate(node->children_[0]->value_);
} else if (MEMORY_LEAK == node->value_) {
dump_memory_leak();
} else {
......
......@@ -36,10 +36,9 @@ class ObDumpTaskGenerator {
CONTEXT = 1,
CHUNK_ALL = 2,
CHUNK_OF_TENANT_CTX = 3,
CHUNK = 4,
SET_LEAK_MOD = 5,
SET_LEAK_RATE = 6,
MEMORY_LEAK = 7,
CHUNK = 4,
SET_LEAK_MOD = 5,
MEMORY_LEAK = 7,
};
public:
......
......@@ -269,7 +269,7 @@ bool ObConfigMemoryLimitChecker::check(const ObConfigItem& t) const
bool is_valid = false;
int64_t value = ObConfigCapacityParser::get(t.str(), is_valid);
if (is_valid) {
is_valid = value >= lib::ObRunningModeConfig::instance().MINI_MEM_LOWER;
is_valid = 0 == value || value >= lib::ObRunningModeConfig::instance().MINI_MEM_LOWER;
}
return is_valid;
}
......
......@@ -2318,6 +2318,9 @@ int ObStaticEngineCG::generate_spec(ObLogUpdate& op, ObMultiPartUpdateSpec& spec
const TableColumns& table_columns = all_table_columns->at(i);
const ObTableAssignment& ta = tas->at(i);
OZ(convert_global_index_update_info(op, table_columns, subplan_roots, table_dml_info));
auto &dst_assign_cols = spec.table_dml_infos_.at(i).assign_columns_;
OX(dst_assign_cols.old_row_.set_allocator(&phy_plan_->get_allocator()));
OX(dst_assign_cols.new_row_.set_allocator(&phy_plan_->get_allocator()));
OZ(spec.add_table_dml_info(i, table_dml_info));
}
if (OB_FAIL(ret)) {
......
......@@ -256,7 +256,6 @@ static const NonReservedKeyword Mysql_none_reserved_keywords[] = {{"access", ACC
{"leaves", LEAVES},
{"leak", LEAK},
{"leak_mod", LEAK_MOD},
{"leak_rate", LEAK_RATE},
{"less", LESS},
{"level", LEVEL},
{"linestring", LINESTRING},
......
......@@ -232,7 +232,7 @@ END_P SET_VAR DELIMITER
KEY_BLOCK_SIZE KEY_VERSION KVCACHE
LAG LANGUAGE LAST LAST_VALUE LEAD LEADER LEAVES LESS LEAK LEAK_MOD LEAK_RATE LINESTRING LIST_
LAG LANGUAGE LAST LAST_VALUE LEAD LEADER LEAVES LESS LEAK LEAK_MOD LINESTRING LIST_
LISTAGG LOCAL LOCALITY LOCATION LOCKED LOCKS LOGFILE LOGONLY_REPLICA_NUM LOGS LOCK_ LOGICAL_READS
LEVEL LN LOG
......@@ -10752,13 +10752,6 @@ SET OPTION LEAK_MOD COMP_EQ STRING_VALUE
malloc_non_terminal_node($$, result->malloc_pool_, T_DUMP_MEMORY, 1, $$);
}
|
SET OPTION LEAK_RATE COMP_EQ INTNUM
{
malloc_non_terminal_node($$, result->malloc_pool_, T_TEMPORARY, 1, $5);
$$->value_ = 6;
malloc_non_terminal_node($$, result->malloc_pool_, T_DUMP_MEMORY, 1, $$);
}
|
DUMP MEMORY LEAK
{
malloc_terminal_node($$, result->malloc_pool_, T_TEMPORARY);
......@@ -12805,7 +12798,6 @@ ACCOUNT
| LEADER
| LEAK
| LEAK_MOD
| LEAK_RATE
| LEAVES
| LESS
| LEVEL
......
......@@ -77451,408 +77451,407 @@ void obsql_mysql_yyfree(void *ptr,void *yyscanner)
LESS = 862,
LEAK = 863,
LEAK_MOD = 864,
LEAK_RATE = 865,
LINESTRING = 866,
LIST_ = 867,
LISTAGG = 868,
LOCAL = 869,
LOCALITY = 870,
LOCATION = 871,
LOCKED = 872,
LOCKS = 873,
LOGFILE = 874,
LOGONLY_REPLICA_NUM = 875,
LOGS = 876,
LOCK_ = 877,
LOGICAL_READS = 878,
LEVEL = 879,
LN = 880,
LOG = 881,
MAJOR = 882,
MANUAL = 883,
MASTER = 884,
MASTER_AUTO_POSITION = 885,
MASTER_CONNECT_RETRY = 886,
MASTER_DELAY = 887,
MASTER_HEARTBEAT_PERIOD = 888,
MASTER_HOST = 889,
MASTER_LOG_FILE = 890,
MASTER_LOG_POS = 891,
MASTER_PASSWORD = 892,
MASTER_PORT = 893,
MASTER_RETRY_COUNT = 894,
MASTER_SERVER_ID = 895,
MASTER_SSL = 896,
MASTER_SSL_CA = 897,
MASTER_SSL_CAPATH = 898,
MASTER_SSL_CERT = 899,
MASTER_SSL_CIPHER = 900,
MASTER_SSL_CRL = 901,
MASTER_SSL_CRLPATH = 902,
MASTER_SSL_KEY = 903,
MASTER_USER = 904,
MAX = 905,
MAX_CONNECTIONS_PER_HOUR = 906,
MAX_CPU = 907,
MAX_DISK_SIZE = 908,
MAX_IOPS = 909,
MAX_MEMORY = 910,
MAX_QUERIES_PER_HOUR = 911,
MAX_ROWS = 912,
MAX_SESSION_NUM = 913,
MAX_SIZE = 914,
MAX_UPDATES_PER_HOUR = 915,
MAX_USER_CONNECTIONS = 916,
MEDIUM = 917,
MEMORY = 918,
MEMTABLE = 919,
MESSAGE_TEXT = 920,
META = 921,
MICROSECOND = 922,
MIGRATE = 923,
MIN = 924,
MIN_CPU = 925,
MIN_IOPS = 926,
MIN_MEMORY = 927,
MINOR = 928,
MIN_ROWS = 929,
MINUTE = 930,
MODE = 931,
MODIFY = 932,
MONTH = 933,
MOVE = 934,
MULTILINESTRING = 935,
MULTIPOINT = 936,
MULTIPOLYGON = 937,
MUTEX = 938,
MYSQL_ERRNO = 939,
MIGRATION = 940,
MAX_USED_PART_ID = 941,
MAXIMIZE = 942,
MATERIALIZED = 943,
MEMSTORE_PERCENT = 944,
NAME = 945,
NAMES = 946,
NATIONAL = 947,
NCHAR = 948,
NDB = 949,
NDBCLUSTER = 950,
NEW = 951,
NEXT = 952,
NO = 953,
NOAUDIT = 954,
NODEGROUP = 955,
NONE = 956,
NORMAL = 957,
NOW = 958,
NOWAIT = 959,
NO_WAIT = 960,
NULLS = 961,
NUMBER = 962,
NVARCHAR = 963,
NTILE = 964,
NTH_VALUE = 965,
NOARCHIVELOG = 966,
NETWORK = 967,
NOPARALLEL = 968,
OBSOLETE = 969,
OCCUR = 970,
OF = 971,
OFF = 972,
OFFSET = 973,
OLD_PASSWORD = 974,
ONE = 975,
ONE_SHOT = 976,
ONLY = 977,
OPEN = 978,
OPTIONS = 979,
ORIG_DEFAULT = 980,
OWNER = 981,
OLD_KEY = 982,
PACK_KEYS = 983,
PAGE = 984,
PARALLEL = 985,
PARAMETERS = 986,
PARSER = 987,
PARTIAL = 988,
PARTITION_ID = 989,
PARTITIONING = 990,
PARTITIONS = 991,
PASSWORD = 992,
PAUSE = 993,
PERCENT_RANK = 994,
PHASE = 995,
PLAN = 996,
PHYSICAL = 997,
PLANREGRESS = 998,
PLUGIN = 999,
PLUGIN_DIR = 1000,
PLUGINS = 1001,
POINT = 1002,
POLYGON = 1003,
PERFORMANCE = 1004,
PROTECTION = 1005,
PRIORITY = 1006,
PL = 1007,
POOL = 1008,
PORT = 1009,
POSITION = 1010,
PREPARE = 1011,
PRESERVE = 1012,
PREV = 1013,
PRIMARY_ZONE = 1014,
PRIVILEGES = 1015,
PROCESS = 1016,
PROCESSLIST = 1017,
PROFILE = 1018,
PROFILES = 1019,
PROXY = 1020,
PRECEDING = 1021,
PCTFREE = 1022,
P_ENTITY = 1023,
P_CHUNK = 1024,
PRIMARY_ROOTSERVICE_LIST = 1025,
PRIMARY_CLUSTER_ID = 1026,
PUBLIC = 1027,
PROGRESSIVE_MERGE_NUM = 1028,
PS = 1029,
QUARTER = 1030,
QUEUE_TIME = 1031,
QUICK = 1032,
REBUILD = 1033,
RECOVER = 1034,
RECYCLE = 1035,
REDO_BUFFER_SIZE = 1036,
REDOFILE = 1037,
REDUNDANT = 1038,
REFRESH = 1039,
REGION = 1040,
RELAY = 1041,
RELAYLOG = 1042,
RELAY_LOG_FILE = 1043,
RELAY_LOG_POS = 1044,
RELAY_THREAD = 1045,
RELOAD = 1046,
REMOVE = 1047,
REORGANIZE = 1048,
REPAIR = 1049,
REPEATABLE = 1050,
REPLICA = 1051,
REPLICA_NUM = 1052,
REPLICA_TYPE = 1053,
REPLICATION = 1054,
REPORT = 1055,
RESET = 1056,
RESOURCE = 1057,
RESOURCE_POOL_LIST = 1058,
RESPECT = 1059,
RESTART = 1060,
RESTORE = 1061,
RESUME = 1062,
RETURNED_SQLSTATE = 1063,
RETURNS = 1064,
REVERSE = 1065,
REWRITE_MERGE_VERSION = 1066,
ROLLBACK = 1067,
ROLLUP = 1068,
ROOT = 1069,
ROOTTABLE = 1070,
ROOTSERVICE = 1071,
ROOTSERVICE_LIST = 1072,
ROUTINE = 1073,
ROW = 1074,
ROLLING = 1075,
ROW_COUNT = 1076,
ROW_FORMAT = 1077,
ROWS = 1078,
RTREE = 1079,
RUN = 1080,
RECYCLEBIN = 1081,
ROTATE = 1082,
ROW_NUMBER = 1083,
RUDUNDANT = 1084,
RECURSIVE = 1085,
RANDOM = 1086,
REDO_TRANSPORT_OPTIONS = 1087,
REMOTE_OSS = 1088,
RT = 1089,
RANK = 1090,
READ_ONLY = 1091,
RECOVERY = 1092,
SAMPLE = 1093,
SAVEPOINT = 1094,
SCHEDULE = 1095,
SCHEMA_NAME = 1096,
SCOPE = 1097,
SECOND = 1098,
SECURITY = 1099,
SEED = 1100,
SERIAL = 1101,
SERIALIZABLE = 1102,
SERVER = 1103,
SERVER_IP = 1104,
SERVER_PORT = 1105,
SERVER_TYPE = 1106,
SESSION = 1107,
SESSION_USER = 1108,
SET_MASTER_CLUSTER = 1109,
SET_SLAVE_CLUSTER = 1110,
SET_TP = 1111,
SHARE = 1112,
SHUTDOWN = 1113,
SIGNED = 1114,
SIMPLE = 1115,
SLAVE = 1116,
SLOW = 1117,
SLOT_IDX = 1118,
SNAPSHOT = 1119,
SOCKET = 1120,
SOME = 1121,
SONAME = 1122,
SOUNDS = 1123,
SOURCE = 1124,
SPFILE = 1125,
SPLIT = 1126,
SQL_AFTER_GTIDS = 1127,
SQL_AFTER_MTS_GAPS = 1128,
SQL_BEFORE_GTIDS = 1129,
SQL_BUFFER_RESULT = 1130,
SQL_CACHE = 1131,
SQL_NO_CACHE = 1132,
SQL_ID = 1133,
SQL_THREAD = 1134,
SQL_TSI_DAY = 1135,
SQL_TSI_HOUR = 1136,
SQL_TSI_MINUTE = 1137,
SQL_TSI_MONTH = 1138,
SQL_TSI_QUARTER = 1139,
SQL_TSI_SECOND = 1140,
SQL_TSI_WEEK = 1141,
SQL_TSI_YEAR = 1142,
STANDBY = 1143,
STAT = 1144,
START = 1145,
STARTS = 1146,
STATS_AUTO_RECALC = 1147,
STATS_PERSISTENT = 1148,
STATS_SAMPLE_PAGES = 1149,
STATUS = 1150,
STATEMENTS = 1151,
STD = 1152,
STDDEV = 1153,
STDDEV_POP = 1154,
STDDEV_SAMP = 1155,
STRONG = 1156,
SYNCHRONIZATION = 1157,
STOP = 1158,
STORAGE = 1159,
STORAGE_FORMAT_VERSION = 1160,
STORAGE_FORMAT_WORK_VERSION = 1161,
STORING = 1162,
STRING = 1163,
SUBCLASS_ORIGIN = 1164,
SUBDATE = 1165,
SUBJECT = 1166,
SUBPARTITION = 1167,
SUBPARTITIONS = 1168,
SUBSTR = 1169,
SUBSTRING = 1170,
SUCCESSFUL = 1171,
SUM = 1172,
SUPER = 1173,
SUSPEND = 1174,
SWAPS = 1175,
SWITCH = 1176,
SWITCHES = 1177,
SWITCHOVER = 1178,
SYSTEM = 1179,
SYSTEM_USER = 1180,
SYSDATE = 1181,
SESSION_ALIAS = 1182,
SYNONYM = 1183,
SIZE = 1184,
TABLE_CHECKSUM = 1185,
TABLE_MODE = 1186,
TABLE_ID = 1187,
TABLE_NAME = 1188,
TABLEGROUPS = 1189,
TABLES = 1190,
TABLESPACE = 1191,
TABLET = 1192,
TABLET_MAX_SIZE = 1193,
TEMPLATE = 1194,
TEMPORARY = 1195,
TEMPTABLE = 1196,
TENANT = 1197,
TEXT = 1198,
THAN = 1199,
TIME = 1200,
TIMESTAMP = 1201,
TIMESTAMPADD = 1202,
TIMESTAMPDIFF = 1203,
TP_NO = 1204,
TP_NAME = 1205,
TRACE = 1206,
TRADITIONAL = 1207,
TRIGGERS = 1208,
TRIM = 1209,
TRUNCATE = 1210,
TYPE = 1211,
TYPES = 1212,
TASK = 1213,
TABLET_SIZE = 1214,
TABLEGROUP_ID = 1215,
TENANT_ID = 1216,
THROTTLE = 1217,
TIME_ZONE_INFO = 1218,
UNCOMMITTED = 1219,
UNDEFINED = 1220,
UNDO_BUFFER_SIZE = 1221,
UNDOFILE = 1222,
UNICODE = 1223,
UNINSTALL = 1224,
UNIT = 1225,
UNIT_NUM = 1226,
UNLOCKED = 1227,
UNTIL = 1228,
UNUSUAL = 1229,
UPGRADE = 1230,
USE_BLOOM_FILTER = 1231,
UNKNOWN = 1232,
USE_FRM = 1233,
USER = 1234,
USER_RESOURCES = 1235,
UNBOUNDED = 1236,
VALID = 1237,
VALUE = 1238,
VARIANCE = 1239,
VARIABLES = 1240,
VERBOSE = 1241,
VERIFY = 1242,
VIEW = 1243,
VISIBLE = 1244,
VIRTUAL_COLUMN_ID = 1245,
VALIDATE = 1246,
VAR_POP = 1247,
VAR_SAMP = 1248,
WAIT = 1249,
WARNINGS = 1250,
WEEK = 1251,
WEIGHT_STRING = 1252,
WHENEVER = 1253,
WITH_ROWID = 1254,
WORK = 1255,
WRAPPER = 1256,
WEAK = 1257,
X509 = 1258,
XA = 1259,
XML = 1260,
YEAR = 1261,
ZONE = 1262,
ZONE_LIST = 1263,
ZONE_TYPE = 1264,
COMP_NSEQ = 1265,
COMMA = 1266
LINESTRING = 865,
LIST_ = 866,
LISTAGG = 867,
LOCAL = 868,
LOCALITY = 869,
LOCATION = 870,
LOCKED = 871,
LOCKS = 872,
LOGFILE = 873,
LOGONLY_REPLICA_NUM = 874,
LOGS = 875,
LOCK_ = 876,
LOGICAL_READS = 877,
LEVEL = 878,
LN = 879,
LOG = 880,
MAJOR = 881,
MANUAL = 882,
MASTER = 883,
MASTER_AUTO_POSITION = 884,
MASTER_CONNECT_RETRY = 885,
MASTER_DELAY = 886,
MASTER_HEARTBEAT_PERIOD = 887,
MASTER_HOST = 888,
MASTER_LOG_FILE = 889,
MASTER_LOG_POS = 890,
MASTER_PASSWORD = 891,
MASTER_PORT = 892,
MASTER_RETRY_COUNT = 893,
MASTER_SERVER_ID = 894,
MASTER_SSL = 895,
MASTER_SSL_CA = 896,
MASTER_SSL_CAPATH = 897,
MASTER_SSL_CERT = 898,
MASTER_SSL_CIPHER = 899,
MASTER_SSL_CRL = 900,
MASTER_SSL_CRLPATH = 901,
MASTER_SSL_KEY = 902,
MASTER_USER = 903,
MAX = 904,
MAX_CONNECTIONS_PER_HOUR = 905,
MAX_CPU = 906,
MAX_DISK_SIZE = 907,
MAX_IOPS = 908,
MAX_MEMORY = 909,
MAX_QUERIES_PER_HOUR = 910,
MAX_ROWS = 911,
MAX_SESSION_NUM = 912,
MAX_SIZE = 913,
MAX_UPDATES_PER_HOUR = 914,
MAX_USER_CONNECTIONS = 915,
MEDIUM = 916,
MEMORY = 917,
MEMTABLE = 918,
MESSAGE_TEXT = 919,
META = 920,
MICROSECOND = 921,
MIGRATE = 922,
MIN = 923,
MIN_CPU = 924,
MIN_IOPS = 925,
MIN_MEMORY = 926,
MINOR = 927,
MIN_ROWS = 928,
MINUTE = 929,
MODE = 930,
MODIFY = 931,
MONTH = 932,
MOVE = 933,
MULTILINESTRING = 934,
MULTIPOINT = 935,
MULTIPOLYGON = 936,
MUTEX = 937,
MYSQL_ERRNO = 938,
MIGRATION = 939,
MAX_USED_PART_ID = 940,
MAXIMIZE = 941,
MATERIALIZED = 942,
MEMSTORE_PERCENT = 943,
NAME = 944,
NAMES = 945,
NATIONAL = 946,
NCHAR = 947,
NDB = 948,
NDBCLUSTER = 949,
NEW = 950,
NEXT = 951,
NO = 952,
NOAUDIT = 953,
NODEGROUP = 954,
NONE = 955,
NORMAL = 956,
NOW = 957,
NOWAIT = 958,
NO_WAIT = 959,
NULLS = 960,
NUMBER = 961,
NVARCHAR = 962,
NTILE = 963,
NTH_VALUE = 964,
NOARCHIVELOG = 965,
NETWORK = 966,
NOPARALLEL = 967,
OBSOLETE = 968,
OCCUR = 969,
OF = 970,
OFF = 971,
OFFSET = 972,
OLD_PASSWORD = 973,
ONE = 974,
ONE_SHOT = 975,
ONLY = 976,
OPEN = 977,
OPTIONS = 978,
ORIG_DEFAULT = 979,
OWNER = 980,
OLD_KEY = 981,
PACK_KEYS = 982,
PAGE = 983,
PARALLEL = 984,
PARAMETERS = 985,
PARSER = 986,
PARTIAL = 987,
PARTITION_ID = 988,
PARTITIONING = 989,
PARTITIONS = 990,
PASSWORD = 991,
PAUSE = 992,
PERCENT_RANK = 993,
PHASE = 994,
PLAN = 995,
PHYSICAL = 996,
PLANREGRESS = 997,
PLUGIN = 998,
PLUGIN_DIR = 999,
PLUGINS = 1000,
POINT = 1001,
POLYGON = 1002,
PERFORMANCE = 1003,
PROTECTION = 1004,
PRIORITY = 1005,
PL = 1006,
POOL = 1007,
PORT = 1008,
POSITION = 1009,
PREPARE = 1010,
PRESERVE = 1011,
PREV = 1012,
PRIMARY_ZONE = 1013,
PRIVILEGES = 1014,
PROCESS = 1015,
PROCESSLIST = 1016,
PROFILE = 1017,
PROFILES = 1018,
PROXY = 1019,
PRECEDING = 1020,
PCTFREE = 1021,
P_ENTITY = 1022,
P_CHUNK = 1023,
PRIMARY_ROOTSERVICE_LIST = 1024,
PRIMARY_CLUSTER_ID = 1025,
PUBLIC = 1026,
PROGRESSIVE_MERGE_NUM = 1027,
PS = 1028,
QUARTER = 1029,
QUEUE_TIME = 1030,
QUICK = 1031,
REBUILD = 1032,
RECOVER = 1033,
RECYCLE = 1034,
REDO_BUFFER_SIZE = 1035,
REDOFILE = 1036,
REDUNDANT = 1037,
REFRESH = 1038,
REGION = 1039,
RELAY = 1040,
RELAYLOG = 1041,
RELAY_LOG_FILE = 1042,
RELAY_LOG_POS = 1043,
RELAY_THREAD = 1044,
RELOAD = 1045,
REMOVE = 1046,
REORGANIZE = 1047,
REPAIR = 1048,
REPEATABLE = 1049,
REPLICA = 1050,
REPLICA_NUM = 1051,
REPLICA_TYPE = 1052,
REPLICATION = 1053,
REPORT = 1054,
RESET = 1055,
RESOURCE = 1056,
RESOURCE_POOL_LIST = 1057,
RESPECT = 1058,
RESTART = 1059,
RESTORE = 1060,
RESUME = 1061,
RETURNED_SQLSTATE = 1062,
RETURNS = 1063,
REVERSE = 1064,
REWRITE_MERGE_VERSION = 1065,
ROLLBACK = 1066,
ROLLUP = 1067,
ROOT = 1068,
ROOTTABLE = 1069,
ROOTSERVICE = 1070,
ROOTSERVICE_LIST = 1071,
ROUTINE = 1072,
ROW = 1073,
ROLLING = 1074,
ROW_COUNT = 1075,
ROW_FORMAT = 1076,
ROWS = 1077,
RTREE = 1078,
RUN = 1079,
RECYCLEBIN = 1080,
ROTATE = 1081,
ROW_NUMBER = 1082,
RUDUNDANT = 1083,
RECURSIVE = 1084,
RANDOM = 1085,
REDO_TRANSPORT_OPTIONS = 1086,
REMOTE_OSS = 1087,
RT = 1088,
RANK = 1089,
READ_ONLY = 1090,
RECOVERY = 1091,
SAMPLE = 1092,
SAVEPOINT = 1093,
SCHEDULE = 1094,
SCHEMA_NAME = 1095,
SCOPE = 1096,
SECOND = 1097,
SECURITY = 1098,
SEED = 1099,
SERIAL = 1100,
SERIALIZABLE = 1101,
SERVER = 1102,
SERVER_IP = 1103,
SERVER_PORT = 1104,
SERVER_TYPE = 1105,
SESSION = 1106,
SESSION_USER = 1107,
SET_MASTER_CLUSTER = 1108,
SET_SLAVE_CLUSTER = 1109,
SET_TP = 1110,
SHARE = 1111,
SHUTDOWN = 1112,
SIGNED = 1113,
SIMPLE = 1114,
SLAVE = 1115,
SLOW = 1116,
SLOT_IDX = 1117,
SNAPSHOT = 1118,
SOCKET = 1119,
SOME = 1120,
SONAME = 1121,
SOUNDS = 1122,
SOURCE = 1123,
SPFILE = 1124,
SPLIT = 1125,
SQL_AFTER_GTIDS = 1126,
SQL_AFTER_MTS_GAPS = 1127,
SQL_BEFORE_GTIDS = 1128,
SQL_BUFFER_RESULT = 1129,
SQL_CACHE = 1130,
SQL_NO_CACHE = 1131,
SQL_ID = 1132,
SQL_THREAD = 1133,
SQL_TSI_DAY = 1134,
SQL_TSI_HOUR = 1135,
SQL_TSI_MINUTE = 1136,
SQL_TSI_MONTH = 1137,
SQL_TSI_QUARTER = 1138,
SQL_TSI_SECOND = 1139,
SQL_TSI_WEEK = 1140,
SQL_TSI_YEAR = 1141,
STANDBY = 1142,
STAT = 1143,
START = 1144,
STARTS = 1145,
STATS_AUTO_RECALC = 1146,
STATS_PERSISTENT = 1147,
STATS_SAMPLE_PAGES = 1148,
STATUS = 1149,
STATEMENTS = 1150,
STD = 1151,
STDDEV = 1152,
STDDEV_POP = 1153,
STDDEV_SAMP = 1154,
STRONG = 1155,
SYNCHRONIZATION = 1156,
STOP = 1157,
STORAGE = 1158,
STORAGE_FORMAT_VERSION = 1159,
STORAGE_FORMAT_WORK_VERSION = 1160,
STORING = 1161,
STRING = 1162,
SUBCLASS_ORIGIN = 1163,
SUBDATE = 1164,
SUBJECT = 1165,
SUBPARTITION = 1166,
SUBPARTITIONS = 1167,
SUBSTR = 1168,
SUBSTRING = 1169,
SUCCESSFUL = 1170,
SUM = 1171,
SUPER = 1172,
SUSPEND = 1173,
SWAPS = 1174,
SWITCH = 1175,
SWITCHES = 1176,
SWITCHOVER = 1177,
SYSTEM = 1178,
SYSTEM_USER = 1179,
SYSDATE = 1180,
SESSION_ALIAS = 1181,
SYNONYM = 1182,
SIZE = 1183,
TABLE_CHECKSUM = 1184,
TABLE_MODE = 1185,
TABLE_ID = 1186,
TABLE_NAME = 1187,
TABLEGROUPS = 1188,
TABLES = 1189,
TABLESPACE = 1190,
TABLET = 1191,
TABLET_MAX_SIZE = 1192,
TEMPLATE = 1193,
TEMPORARY = 1194,
TEMPTABLE = 1195,
TENANT = 1196,
TEXT = 1197,
THAN = 1198,
TIME = 1199,
TIMESTAMP = 1200,
TIMESTAMPADD = 1201,
TIMESTAMPDIFF = 1202,
TP_NO = 1203,
TP_NAME = 1204,
TRACE = 1205,
TRADITIONAL = 1206,
TRIGGERS = 1207,
TRIM = 1208,
TRUNCATE = 1209,
TYPE = 1210,
TYPES = 1211,
TASK = 1212,
TABLET_SIZE = 1213,
TABLEGROUP_ID = 1214,
TENANT_ID = 1215,
THROTTLE = 1216,
TIME_ZONE_INFO = 1217,
UNCOMMITTED = 1218,
UNDEFINED = 1219,
UNDO_BUFFER_SIZE = 1220,
UNDOFILE = 1221,
UNICODE = 1222,
UNINSTALL = 1223,
UNIT = 1224,
UNIT_NUM = 1225,
UNLOCKED = 1226,
UNTIL = 1227,
UNUSUAL = 1228,
UPGRADE = 1229,
USE_BLOOM_FILTER = 1230,
UNKNOWN = 1231,
USE_FRM = 1232,
USER = 1233,
USER_RESOURCES = 1234,
UNBOUNDED = 1235,
VALID = 1236,
VALUE = 1237,
VARIANCE = 1238,
VARIABLES = 1239,
VERBOSE = 1240,
VERIFY = 1241,
VIEW = 1242,
VISIBLE = 1243,
VIRTUAL_COLUMN_ID = 1244,
VALIDATE = 1245,
VAR_POP = 1246,
VAR_SAMP = 1247,
WAIT = 1248,
WARNINGS = 1249,
WEEK = 1250,
WEIGHT_STRING = 1251,
WHENEVER = 1252,
WITH_ROWID = 1253,
WORK = 1254,
WRAPPER = 1255,
WEAK = 1256,
X509 = 1257,
XA = 1258,
XML = 1259,
YEAR = 1260,
ZONE = 1261,
ZONE_LIST = 1262,
ZONE_TYPE = 1263,
COMP_NSEQ = 1264,
COMMA = 1265
};
#endif
......@@ -77875,7 +77874,7 @@ typedef union YYSTYPE
/* Line 1676 of yacc.c */
#line 1074 "../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
#line 1073 "../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
......@@ -646,408 +646,407 @@
LESS = 862,
LEAK = 863,
LEAK_MOD = 864,
LEAK_RATE = 865,
LINESTRING = 866,
LIST_ = 867,
LISTAGG = 868,
LOCAL = 869,
LOCALITY = 870,
LOCATION = 871,
LOCKED = 872,
LOCKS = 873,
LOGFILE = 874,
LOGONLY_REPLICA_NUM = 875,
LOGS = 876,
LOCK_ = 877,
LOGICAL_READS = 878,
LEVEL = 879,
LN = 880,
LOG = 881,
MAJOR = 882,
MANUAL = 883,
MASTER = 884,
MASTER_AUTO_POSITION = 885,
MASTER_CONNECT_RETRY = 886,
MASTER_DELAY = 887,
MASTER_HEARTBEAT_PERIOD = 888,
MASTER_HOST = 889,
MASTER_LOG_FILE = 890,
MASTER_LOG_POS = 891,
MASTER_PASSWORD = 892,
MASTER_PORT = 893,
MASTER_RETRY_COUNT = 894,
MASTER_SERVER_ID = 895,
MASTER_SSL = 896,
MASTER_SSL_CA = 897,
MASTER_SSL_CAPATH = 898,
MASTER_SSL_CERT = 899,
MASTER_SSL_CIPHER = 900,
MASTER_SSL_CRL = 901,
MASTER_SSL_CRLPATH = 902,
MASTER_SSL_KEY = 903,
MASTER_USER = 904,
MAX = 905,
MAX_CONNECTIONS_PER_HOUR = 906,
MAX_CPU = 907,
MAX_DISK_SIZE = 908,
MAX_IOPS = 909,
MAX_MEMORY = 910,
MAX_QUERIES_PER_HOUR = 911,
MAX_ROWS = 912,
MAX_SESSION_NUM = 913,
MAX_SIZE = 914,
MAX_UPDATES_PER_HOUR = 915,
MAX_USER_CONNECTIONS = 916,
MEDIUM = 917,
MEMORY = 918,
MEMTABLE = 919,
MESSAGE_TEXT = 920,
META = 921,
MICROSECOND = 922,
MIGRATE = 923,
MIN = 924,
MIN_CPU = 925,
MIN_IOPS = 926,
MIN_MEMORY = 927,
MINOR = 928,
MIN_ROWS = 929,
MINUTE = 930,
MODE = 931,
MODIFY = 932,
MONTH = 933,
MOVE = 934,
MULTILINESTRING = 935,
MULTIPOINT = 936,
MULTIPOLYGON = 937,
MUTEX = 938,
MYSQL_ERRNO = 939,
MIGRATION = 940,
MAX_USED_PART_ID = 941,
MAXIMIZE = 942,
MATERIALIZED = 943,
MEMSTORE_PERCENT = 944,
NAME = 945,
NAMES = 946,
NATIONAL = 947,
NCHAR = 948,
NDB = 949,
NDBCLUSTER = 950,
NEW = 951,
NEXT = 952,
NO = 953,
NOAUDIT = 954,
NODEGROUP = 955,
NONE = 956,
NORMAL = 957,
NOW = 958,
NOWAIT = 959,
NO_WAIT = 960,
NULLS = 961,
NUMBER = 962,
NVARCHAR = 963,
NTILE = 964,
NTH_VALUE = 965,
NOARCHIVELOG = 966,
NETWORK = 967,
NOPARALLEL = 968,
OBSOLETE = 969,
OCCUR = 970,
OF = 971,
OFF = 972,
OFFSET = 973,
OLD_PASSWORD = 974,
ONE = 975,
ONE_SHOT = 976,
ONLY = 977,
OPEN = 978,
OPTIONS = 979,
ORIG_DEFAULT = 980,
OWNER = 981,
OLD_KEY = 982,
PACK_KEYS = 983,
PAGE = 984,
PARALLEL = 985,
PARAMETERS = 986,
PARSER = 987,
PARTIAL = 988,
PARTITION_ID = 989,
PARTITIONING = 990,
PARTITIONS = 991,
PASSWORD = 992,
PAUSE = 993,
PERCENT_RANK = 994,
PHASE = 995,
PLAN = 996,
PHYSICAL = 997,
PLANREGRESS = 998,
PLUGIN = 999,
PLUGIN_DIR = 1000,
PLUGINS = 1001,
POINT = 1002,
POLYGON = 1003,
PERFORMANCE = 1004,
PROTECTION = 1005,
PRIORITY = 1006,
PL = 1007,
POOL = 1008,
PORT = 1009,
POSITION = 1010,
PREPARE = 1011,
PRESERVE = 1012,
PREV = 1013,
PRIMARY_ZONE = 1014,
PRIVILEGES = 1015,
PROCESS = 1016,
PROCESSLIST = 1017,
PROFILE = 1018,
PROFILES = 1019,
PROXY = 1020,
PRECEDING = 1021,
PCTFREE = 1022,
P_ENTITY = 1023,
P_CHUNK = 1024,
PRIMARY_ROOTSERVICE_LIST = 1025,
PRIMARY_CLUSTER_ID = 1026,
PUBLIC = 1027,
PROGRESSIVE_MERGE_NUM = 1028,
PS = 1029,
QUARTER = 1030,
QUEUE_TIME = 1031,
QUICK = 1032,
REBUILD = 1033,
RECOVER = 1034,
RECYCLE = 1035,
REDO_BUFFER_SIZE = 1036,
REDOFILE = 1037,
REDUNDANT = 1038,
REFRESH = 1039,
REGION = 1040,
RELAY = 1041,
RELAYLOG = 1042,
RELAY_LOG_FILE = 1043,
RELAY_LOG_POS = 1044,
RELAY_THREAD = 1045,
RELOAD = 1046,
REMOVE = 1047,
REORGANIZE = 1048,
REPAIR = 1049,
REPEATABLE = 1050,
REPLICA = 1051,
REPLICA_NUM = 1052,
REPLICA_TYPE = 1053,
REPLICATION = 1054,
REPORT = 1055,
RESET = 1056,
RESOURCE = 1057,
RESOURCE_POOL_LIST = 1058,
RESPECT = 1059,
RESTART = 1060,
RESTORE = 1061,
RESUME = 1062,
RETURNED_SQLSTATE = 1063,
RETURNS = 1064,
REVERSE = 1065,
REWRITE_MERGE_VERSION = 1066,
ROLLBACK = 1067,
ROLLUP = 1068,
ROOT = 1069,
ROOTTABLE = 1070,
ROOTSERVICE = 1071,
ROOTSERVICE_LIST = 1072,
ROUTINE = 1073,
ROW = 1074,
ROLLING = 1075,
ROW_COUNT = 1076,
ROW_FORMAT = 1077,
ROWS = 1078,
RTREE = 1079,
RUN = 1080,
RECYCLEBIN = 1081,
ROTATE = 1082,
ROW_NUMBER = 1083,
RUDUNDANT = 1084,
RECURSIVE = 1085,
RANDOM = 1086,
REDO_TRANSPORT_OPTIONS = 1087,
REMOTE_OSS = 1088,
RT = 1089,
RANK = 1090,
READ_ONLY = 1091,
RECOVERY = 1092,
SAMPLE = 1093,
SAVEPOINT = 1094,
SCHEDULE = 1095,
SCHEMA_NAME = 1096,
SCOPE = 1097,
SECOND = 1098,
SECURITY = 1099,
SEED = 1100,
SERIAL = 1101,
SERIALIZABLE = 1102,
SERVER = 1103,
SERVER_IP = 1104,
SERVER_PORT = 1105,
SERVER_TYPE = 1106,
SESSION = 1107,
SESSION_USER = 1108,
SET_MASTER_CLUSTER = 1109,
SET_SLAVE_CLUSTER = 1110,
SET_TP = 1111,
SHARE = 1112,
SHUTDOWN = 1113,
SIGNED = 1114,
SIMPLE = 1115,
SLAVE = 1116,
SLOW = 1117,
SLOT_IDX = 1118,
SNAPSHOT = 1119,
SOCKET = 1120,
SOME = 1121,
SONAME = 1122,
SOUNDS = 1123,
SOURCE = 1124,
SPFILE = 1125,
SPLIT = 1126,
SQL_AFTER_GTIDS = 1127,
SQL_AFTER_MTS_GAPS = 1128,
SQL_BEFORE_GTIDS = 1129,
SQL_BUFFER_RESULT = 1130,
SQL_CACHE = 1131,
SQL_NO_CACHE = 1132,
SQL_ID = 1133,
SQL_THREAD = 1134,
SQL_TSI_DAY = 1135,
SQL_TSI_HOUR = 1136,
SQL_TSI_MINUTE = 1137,
SQL_TSI_MONTH = 1138,
SQL_TSI_QUARTER = 1139,
SQL_TSI_SECOND = 1140,
SQL_TSI_WEEK = 1141,
SQL_TSI_YEAR = 1142,
STANDBY = 1143,
STAT = 1144,
START = 1145,
STARTS = 1146,
STATS_AUTO_RECALC = 1147,
STATS_PERSISTENT = 1148,
STATS_SAMPLE_PAGES = 1149,
STATUS = 1150,
STATEMENTS = 1151,
STD = 1152,
STDDEV = 1153,
STDDEV_POP = 1154,
STDDEV_SAMP = 1155,
STRONG = 1156,
SYNCHRONIZATION = 1157,
STOP = 1158,
STORAGE = 1159,
STORAGE_FORMAT_VERSION = 1160,
STORAGE_FORMAT_WORK_VERSION = 1161,
STORING = 1162,
STRING = 1163,
SUBCLASS_ORIGIN = 1164,
SUBDATE = 1165,
SUBJECT = 1166,
SUBPARTITION = 1167,
SUBPARTITIONS = 1168,
SUBSTR = 1169,
SUBSTRING = 1170,
SUCCESSFUL = 1171,
SUM = 1172,
SUPER = 1173,
SUSPEND = 1174,
SWAPS = 1175,
SWITCH = 1176,
SWITCHES = 1177,
SWITCHOVER = 1178,
SYSTEM = 1179,
SYSTEM_USER = 1180,
SYSDATE = 1181,
SESSION_ALIAS = 1182,
SYNONYM = 1183,
SIZE = 1184,
TABLE_CHECKSUM = 1185,
TABLE_MODE = 1186,
TABLE_ID = 1187,
TABLE_NAME = 1188,
TABLEGROUPS = 1189,
TABLES = 1190,
TABLESPACE = 1191,
TABLET = 1192,
TABLET_MAX_SIZE = 1193,
TEMPLATE = 1194,
TEMPORARY = 1195,
TEMPTABLE = 1196,
TENANT = 1197,
TEXT = 1198,
THAN = 1199,
TIME = 1200,
TIMESTAMP = 1201,
TIMESTAMPADD = 1202,
TIMESTAMPDIFF = 1203,
TP_NO = 1204,
TP_NAME = 1205,
TRACE = 1206,
TRADITIONAL = 1207,
TRIGGERS = 1208,
TRIM = 1209,
TRUNCATE = 1210,
TYPE = 1211,
TYPES = 1212,
TASK = 1213,
TABLET_SIZE = 1214,
TABLEGROUP_ID = 1215,
TENANT_ID = 1216,
THROTTLE = 1217,
TIME_ZONE_INFO = 1218,
UNCOMMITTED = 1219,
UNDEFINED = 1220,
UNDO_BUFFER_SIZE = 1221,
UNDOFILE = 1222,
UNICODE = 1223,
UNINSTALL = 1224,
UNIT = 1225,
UNIT_NUM = 1226,
UNLOCKED = 1227,
UNTIL = 1228,
UNUSUAL = 1229,
UPGRADE = 1230,
USE_BLOOM_FILTER = 1231,
UNKNOWN = 1232,
USE_FRM = 1233,
USER = 1234,
USER_RESOURCES = 1235,
UNBOUNDED = 1236,
VALID = 1237,
VALUE = 1238,
VARIANCE = 1239,
VARIABLES = 1240,
VERBOSE = 1241,
VERIFY = 1242,
VIEW = 1243,
VISIBLE = 1244,
VIRTUAL_COLUMN_ID = 1245,
VALIDATE = 1246,
VAR_POP = 1247,
VAR_SAMP = 1248,
WAIT = 1249,
WARNINGS = 1250,
WEEK = 1251,
WEIGHT_STRING = 1252,
WHENEVER = 1253,
WITH_ROWID = 1254,
WORK = 1255,
WRAPPER = 1256,
WEAK = 1257,
X509 = 1258,
XA = 1259,
XML = 1260,
YEAR = 1261,
ZONE = 1262,
ZONE_LIST = 1263,
ZONE_TYPE = 1264,
COMP_NSEQ = 1265,
COMMA = 1266
LINESTRING = 865,
LIST_ = 866,
LISTAGG = 867,
LOCAL = 868,
LOCALITY = 869,
LOCATION = 870,
LOCKED = 871,
LOCKS = 872,
LOGFILE = 873,
LOGONLY_REPLICA_NUM = 874,
LOGS = 875,
LOCK_ = 876,
LOGICAL_READS = 877,
LEVEL = 878,
LN = 879,
LOG = 880,
MAJOR = 881,
MANUAL = 882,
MASTER = 883,
MASTER_AUTO_POSITION = 884,
MASTER_CONNECT_RETRY = 885,
MASTER_DELAY = 886,
MASTER_HEARTBEAT_PERIOD = 887,
MASTER_HOST = 888,
MASTER_LOG_FILE = 889,
MASTER_LOG_POS = 890,
MASTER_PASSWORD = 891,
MASTER_PORT = 892,
MASTER_RETRY_COUNT = 893,
MASTER_SERVER_ID = 894,
MASTER_SSL = 895,
MASTER_SSL_CA = 896,
MASTER_SSL_CAPATH = 897,
MASTER_SSL_CERT = 898,
MASTER_SSL_CIPHER = 899,
MASTER_SSL_CRL = 900,
MASTER_SSL_CRLPATH = 901,
MASTER_SSL_KEY = 902,
MASTER_USER = 903,
MAX = 904,
MAX_CONNECTIONS_PER_HOUR = 905,
MAX_CPU = 906,
MAX_DISK_SIZE = 907,
MAX_IOPS = 908,
MAX_MEMORY = 909,
MAX_QUERIES_PER_HOUR = 910,
MAX_ROWS = 911,
MAX_SESSION_NUM = 912,
MAX_SIZE = 913,
MAX_UPDATES_PER_HOUR = 914,
MAX_USER_CONNECTIONS = 915,
MEDIUM = 916,
MEMORY = 917,
MEMTABLE = 918,
MESSAGE_TEXT = 919,
META = 920,
MICROSECOND = 921,
MIGRATE = 922,
MIN = 923,
MIN_CPU = 924,
MIN_IOPS = 925,
MIN_MEMORY = 926,
MINOR = 927,
MIN_ROWS = 928,
MINUTE = 929,
MODE = 930,
MODIFY = 931,
MONTH = 932,
MOVE = 933,
MULTILINESTRING = 934,
MULTIPOINT = 935,
MULTIPOLYGON = 936,
MUTEX = 937,
MYSQL_ERRNO = 938,
MIGRATION = 939,
MAX_USED_PART_ID = 940,
MAXIMIZE = 941,
MATERIALIZED = 942,
MEMSTORE_PERCENT = 943,
NAME = 944,
NAMES = 945,
NATIONAL = 946,
NCHAR = 947,
NDB = 948,
NDBCLUSTER = 949,
NEW = 950,
NEXT = 951,
NO = 952,
NOAUDIT = 953,
NODEGROUP = 954,
NONE = 955,
NORMAL = 956,
NOW = 957,
NOWAIT = 958,
NO_WAIT = 959,
NULLS = 960,
NUMBER = 961,
NVARCHAR = 962,
NTILE = 963,
NTH_VALUE = 964,
NOARCHIVELOG = 965,
NETWORK = 966,
NOPARALLEL = 967,
OBSOLETE = 968,
OCCUR = 969,
OF = 970,
OFF = 971,
OFFSET = 972,
OLD_PASSWORD = 973,
ONE = 974,
ONE_SHOT = 975,
ONLY = 976,
OPEN = 977,
OPTIONS = 978,
ORIG_DEFAULT = 979,
OWNER = 980,
OLD_KEY = 981,
PACK_KEYS = 982,
PAGE = 983,
PARALLEL = 984,
PARAMETERS = 985,
PARSER = 986,
PARTIAL = 987,
PARTITION_ID = 988,
PARTITIONING = 989,
PARTITIONS = 990,
PASSWORD = 991,
PAUSE = 992,
PERCENT_RANK = 993,
PHASE = 994,
PLAN = 995,
PHYSICAL = 996,
PLANREGRESS = 997,
PLUGIN = 998,
PLUGIN_DIR = 999,
PLUGINS = 1000,
POINT = 1001,
POLYGON = 1002,
PERFORMANCE = 1003,
PROTECTION = 1004,
PRIORITY = 1005,
PL = 1006,
POOL = 1007,
PORT = 1008,
POSITION = 1009,
PREPARE = 1010,
PRESERVE = 1011,
PREV = 1012,
PRIMARY_ZONE = 1013,
PRIVILEGES = 1014,
PROCESS = 1015,
PROCESSLIST = 1016,
PROFILE = 1017,
PROFILES = 1018,
PROXY = 1019,
PRECEDING = 1020,
PCTFREE = 1021,
P_ENTITY = 1022,
P_CHUNK = 1023,
PRIMARY_ROOTSERVICE_LIST = 1024,
PRIMARY_CLUSTER_ID = 1025,
PUBLIC = 1026,
PROGRESSIVE_MERGE_NUM = 1027,
PS = 1028,
QUARTER = 1029,
QUEUE_TIME = 1030,
QUICK = 1031,
REBUILD = 1032,
RECOVER = 1033,
RECYCLE = 1034,
REDO_BUFFER_SIZE = 1035,
REDOFILE = 1036,
REDUNDANT = 1037,
REFRESH = 1038,
REGION = 1039,
RELAY = 1040,
RELAYLOG = 1041,
RELAY_LOG_FILE = 1042,
RELAY_LOG_POS = 1043,
RELAY_THREAD = 1044,
RELOAD = 1045,
REMOVE = 1046,
REORGANIZE = 1047,
REPAIR = 1048,
REPEATABLE = 1049,
REPLICA = 1050,
REPLICA_NUM = 1051,
REPLICA_TYPE = 1052,
REPLICATION = 1053,
REPORT = 1054,
RESET = 1055,
RESOURCE = 1056,
RESOURCE_POOL_LIST = 1057,
RESPECT = 1058,
RESTART = 1059,
RESTORE = 1060,
RESUME = 1061,
RETURNED_SQLSTATE = 1062,
RETURNS = 1063,
REVERSE = 1064,
REWRITE_MERGE_VERSION = 1065,
ROLLBACK = 1066,
ROLLUP = 1067,
ROOT = 1068,
ROOTTABLE = 1069,
ROOTSERVICE = 1070,
ROOTSERVICE_LIST = 1071,
ROUTINE = 1072,
ROW = 1073,
ROLLING = 1074,
ROW_COUNT = 1075,
ROW_FORMAT = 1076,
ROWS = 1077,
RTREE = 1078,
RUN = 1079,
RECYCLEBIN = 1080,
ROTATE = 1081,
ROW_NUMBER = 1082,
RUDUNDANT = 1083,
RECURSIVE = 1084,
RANDOM = 1085,
REDO_TRANSPORT_OPTIONS = 1086,
REMOTE_OSS = 1087,
RT = 1088,
RANK = 1089,
READ_ONLY = 1090,
RECOVERY = 1091,
SAMPLE = 1092,
SAVEPOINT = 1093,
SCHEDULE = 1094,
SCHEMA_NAME = 1095,
SCOPE = 1096,
SECOND = 1097,
SECURITY = 1098,
SEED = 1099,
SERIAL = 1100,
SERIALIZABLE = 1101,
SERVER = 1102,
SERVER_IP = 1103,
SERVER_PORT = 1104,
SERVER_TYPE = 1105,
SESSION = 1106,
SESSION_USER = 1107,
SET_MASTER_CLUSTER = 1108,
SET_SLAVE_CLUSTER = 1109,
SET_TP = 1110,
SHARE = 1111,
SHUTDOWN = 1112,
SIGNED = 1113,
SIMPLE = 1114,
SLAVE = 1115,
SLOW = 1116,
SLOT_IDX = 1117,
SNAPSHOT = 1118,
SOCKET = 1119,
SOME = 1120,
SONAME = 1121,
SOUNDS = 1122,
SOURCE = 1123,
SPFILE = 1124,
SPLIT = 1125,
SQL_AFTER_GTIDS = 1126,
SQL_AFTER_MTS_GAPS = 1127,
SQL_BEFORE_GTIDS = 1128,
SQL_BUFFER_RESULT = 1129,
SQL_CACHE = 1130,
SQL_NO_CACHE = 1131,
SQL_ID = 1132,
SQL_THREAD = 1133,
SQL_TSI_DAY = 1134,
SQL_TSI_HOUR = 1135,
SQL_TSI_MINUTE = 1136,
SQL_TSI_MONTH = 1137,
SQL_TSI_QUARTER = 1138,
SQL_TSI_SECOND = 1139,
SQL_TSI_WEEK = 1140,
SQL_TSI_YEAR = 1141,
STANDBY = 1142,
STAT = 1143,
START = 1144,
STARTS = 1145,
STATS_AUTO_RECALC = 1146,
STATS_PERSISTENT = 1147,
STATS_SAMPLE_PAGES = 1148,
STATUS = 1149,
STATEMENTS = 1150,
STD = 1151,
STDDEV = 1152,
STDDEV_POP = 1153,
STDDEV_SAMP = 1154,
STRONG = 1155,
SYNCHRONIZATION = 1156,
STOP = 1157,
STORAGE = 1158,
STORAGE_FORMAT_VERSION = 1159,
STORAGE_FORMAT_WORK_VERSION = 1160,
STORING = 1161,
STRING = 1162,
SUBCLASS_ORIGIN = 1163,
SUBDATE = 1164,
SUBJECT = 1165,
SUBPARTITION = 1166,
SUBPARTITIONS = 1167,
SUBSTR = 1168,
SUBSTRING = 1169,
SUCCESSFUL = 1170,
SUM = 1171,
SUPER = 1172,
SUSPEND = 1173,
SWAPS = 1174,
SWITCH = 1175,
SWITCHES = 1176,
SWITCHOVER = 1177,
SYSTEM = 1178,
SYSTEM_USER = 1179,
SYSDATE = 1180,
SESSION_ALIAS = 1181,
SYNONYM = 1182,
SIZE = 1183,
TABLE_CHECKSUM = 1184,
TABLE_MODE = 1185,
TABLE_ID = 1186,
TABLE_NAME = 1187,
TABLEGROUPS = 1188,
TABLES = 1189,
TABLESPACE = 1190,
TABLET = 1191,
TABLET_MAX_SIZE = 1192,
TEMPLATE = 1193,
TEMPORARY = 1194,
TEMPTABLE = 1195,
TENANT = 1196,
TEXT = 1197,
THAN = 1198,
TIME = 1199,
TIMESTAMP = 1200,
TIMESTAMPADD = 1201,
TIMESTAMPDIFF = 1202,
TP_NO = 1203,
TP_NAME = 1204,
TRACE = 1205,
TRADITIONAL = 1206,
TRIGGERS = 1207,
TRIM = 1208,
TRUNCATE = 1209,
TYPE = 1210,
TYPES = 1211,
TASK = 1212,
TABLET_SIZE = 1213,
TABLEGROUP_ID = 1214,
TENANT_ID = 1215,
THROTTLE = 1216,
TIME_ZONE_INFO = 1217,
UNCOMMITTED = 1218,
UNDEFINED = 1219,
UNDO_BUFFER_SIZE = 1220,
UNDOFILE = 1221,
UNICODE = 1222,
UNINSTALL = 1223,
UNIT = 1224,
UNIT_NUM = 1225,
UNLOCKED = 1226,
UNTIL = 1227,
UNUSUAL = 1228,
UPGRADE = 1229,
USE_BLOOM_FILTER = 1230,
UNKNOWN = 1231,
USE_FRM = 1232,
USER = 1233,
USER_RESOURCES = 1234,
UNBOUNDED = 1235,
VALID = 1236,
VALUE = 1237,
VARIANCE = 1238,
VARIABLES = 1239,
VERBOSE = 1240,
VERIFY = 1241,
VIEW = 1242,
VISIBLE = 1243,
VIRTUAL_COLUMN_ID = 1244,
VALIDATE = 1245,
VAR_POP = 1246,
VAR_SAMP = 1247,
WAIT = 1248,
WARNINGS = 1249,
WEEK = 1250,
WEIGHT_STRING = 1251,
WHENEVER = 1252,
WITH_ROWID = 1253,
WORK = 1254,
WRAPPER = 1255,
WEAK = 1256,
X509 = 1257,
XA = 1258,
XML = 1259,
YEAR = 1260,
ZONE = 1261,
ZONE_LIST = 1262,
ZONE_TYPE = 1263,
COMP_NSEQ = 1264,
COMMA = 1265
};
#endif
......@@ -1070,7 +1069,7 @@ typedef union YYSTYPE
/* Line 1676 of yacc.c */
#line 1074 "../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
#line 1073 "../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
......
......@@ -367,7 +367,7 @@ const char* get_type_name(int type)
case T_FUN_SYS_MAKETIME : return "T_FUN_SYS_MAKETIME";
case T_FUN_SYS_MONTH_NAME : return "T_FUN_SYS_MONTH_NAME";
case T_FUN_SYS_FORMAT : return "T_FUN_SYS_FORMAT";
// case T_FUN_SYS_COT : return "T_FUN_SYS_COT"; 710 has ben taken on master
case T_FUN_SYS_COT : return "T_FUN_SYS_COT";
case T_FUN_SYS_QUARTER : return "T_FUN_SYS_QUARTER";
case T_FUN_SYS_BIT_LENGTH : return "T_FUN_SYS_BIT_LENGTH";
case T_FUN_SYS_PI : return "T_FUN_SYS_PI";
......@@ -439,7 +439,6 @@ const char* get_type_name(int type)
case T_FUN_SYS_ACOS : return "T_FUN_SYS_ACOS";
case T_FUN_SYS_ATAN : return "T_FUN_SYS_ATAN";
case T_FUN_SYS_ATAN2 : return "T_FUN_SYS_ATAN2";
case T_FUN_SYS_COT : return "T_FUN_SYS_COT";
case T_FUN_SYS_REGEXP_COUNT : return "T_FUN_SYS_REGEXP_COUNT";
case T_FUN_NVL2 : return "T_FUN_NVL2";
case T_FUN_SYS_TO_BINARY_FLOAT : return "T_FUN_SYS_TO_BINARY_FLOAT";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册