Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Metz
oceanbase
提交
f2f91f98
O
oceanbase
项目概览
Metz
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f2f91f98
编写于
7月 23, 2021
作者:
J
jg0
提交者:
wangzelin.wzl
7月 26, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
【CP】patch to opensource
上级
8160997f
变更
23
展开全部
隐藏空白更改
内联
并排
Showing
23 changed file
with
20232 addition
and
20377 deletion
+20232
-20377
deps/oblib/src/lib/CMakeLists.txt
deps/oblib/src/lib/CMakeLists.txt
+4
-1
deps/oblib/src/lib/alloc/malloc_hook.cpp
deps/oblib/src/lib/alloc/malloc_hook.cpp
+117
-166
deps/oblib/src/lib/alloc/malloc_hook.h
deps/oblib/src/lib/alloc/malloc_hook.h
+1
-24
deps/oblib/src/lib/allocator/ob_mem_leak_checker.cpp
deps/oblib/src/lib/allocator/ob_mem_leak_checker.cpp
+4
-3
deps/oblib/src/lib/allocator/ob_mem_leak_checker.h
deps/oblib/src/lib/allocator/ob_mem_leak_checker.h
+15
-17
deps/oblib/src/lib/allocator/ob_tc_malloc.cpp
deps/oblib/src/lib/allocator/ob_tc_malloc.cpp
+0
-5
deps/oblib/src/lib/allocator/ob_tc_malloc.h
deps/oblib/src/lib/allocator/ob_tc_malloc.h
+0
-1
deps/oblib/src/lib/oblog/ob_log.cpp
deps/oblib/src/lib/oblog/ob_log.cpp
+2
-60
deps/oblib/src/lib/oblog/ob_log.h
deps/oblib/src/lib/oblog/ob_log.h
+0
-3
deps/oblib/src/lib/signal/ob_signal_handlers.cpp
deps/oblib/src/lib/signal/ob_signal_handlers.cpp
+2
-1
deps/oblib/src/lib/stat/ob_di_tls.h
deps/oblib/src/lib/stat/ob_di_tls.h
+10
-4
src/observer/CMakeLists.txt
src/observer/CMakeLists.txt
+1
-0
src/observer/main.cpp
src/observer/main.cpp
+2
-0
src/observer/ob_dump_task_generator.cpp
src/observer/ob_dump_task_generator.cpp
+0
-2
src/observer/ob_dump_task_generator.h
src/observer/ob_dump_task_generator.h
+3
-4
src/share/config/ob_config_helper.cpp
src/share/config/ob_config_helper.cpp
+1
-1
src/sql/code_generator/ob_static_engine_cg.cpp
src/sql/code_generator/ob_static_engine_cg.cpp
+3
-0
src/sql/parser/non_reserved_keywords_mysql_mode.c
src/sql/parser/non_reserved_keywords_mysql_mode.c
+0
-1
src/sql/parser/sql_parser_mysql_mode.y
src/sql/parser/sql_parser_mysql_mode.y
+1
-9
src/sql/parser/sql_parser_mysql_mode_lex.c
src/sql/parser/sql_parser_mysql_mode_lex.c
+402
-403
src/sql/parser/sql_parser_mysql_mode_tab.c
src/sql/parser/sql_parser_mysql_mode_tab.c
+19261
-19267
src/sql/parser/sql_parser_mysql_mode_tab.h
src/sql/parser/sql_parser_mysql_mode_tab.h
+402
-403
src/sql/parser/type_name.c
src/sql/parser/type_name.c
+1
-2
未找到文件。
deps/oblib/src/lib/CMakeLists.txt
浏览文件 @
f2f91f98
...
...
@@ -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
)
deps/oblib/src/lib/alloc/malloc_hook.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
<
align
ment
)
a
<<=
1
;
align
=
a
;
align
ment
=
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
()
{}
deps/oblib/src/lib/alloc/malloc_hook.h
浏览文件 @
f2f91f98
...
...
@@ -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 */
deps/oblib/src/lib/allocator/ob_mem_leak_checker.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
deps/oblib/src/lib/allocator/ob_mem_leak_checker.h
浏览文件 @
f2f91f98
...
...
@@ -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
=
1
28L
<<
2
0
;
static
constexpr
int
MEMORY_LIMIT
=
1
L
<<
3
0
;
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
...
...
deps/oblib/src/lib/allocator/ob_tc_malloc.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
;
...
...
deps/oblib/src/lib/allocator/ob_tc_malloc.h
浏览文件 @
f2f91f98
...
...
@@ -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
...
...
deps/oblib/src/lib/oblog/ob_log.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
);
}
}
...
...
deps/oblib/src/lib/oblog/ob_log.h
浏览文件 @
f2f91f98
...
...
@@ -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
();
...
...
deps/oblib/src/lib/signal/ob_signal_handlers.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
);
...
...
deps/oblib/src/lib/stat/ob_di_tls.h
浏览文件 @
f2f91f98
...
...
@@ -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_
;
}
...
...
src/observer/CMakeLists.txt
浏览文件 @
f2f91f98
...
...
@@ -308,6 +308,7 @@ target_link_libraries(observer
oceanbase_static
-static-libgcc
-static-libstdc++
malloc_hook
${
LGPL_DEPS
}
)
execute_process
(
...
...
src/observer/main.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
...
...
src/observer/ob_dump_task_generator.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
{
...
...
src/observer/ob_dump_task_generator.h
浏览文件 @
f2f91f98
...
...
@@ -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:
...
...
src/share/config/ob_config_helper.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
;
}
...
...
src/sql/code_generator/ob_static_engine_cg.cpp
浏览文件 @
f2f91f98
...
...
@@ -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
))
{
...
...
src/sql/parser/non_reserved_keywords_mysql_mode.c
浏览文件 @
f2f91f98
...
...
@@ -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
},
...
...
src/sql/parser/sql_parser_mysql_mode.y
浏览文件 @
f2f91f98
...
...
@@ -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 L
EAK_RATE L
INESTRING 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
...
...
src/sql/parser/sql_parser_mysql_mode_lex.c
浏览文件 @
f2f91f98
...
...
@@ -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 107
4
"../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
#line 107
3
"../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
src/sql/parser/sql_parser_mysql_mode_tab.c
浏览文件 @
f2f91f98
此差异已折叠。
点击以展开。
src/sql/parser/sql_parser_mysql_mode_tab.h
浏览文件 @
f2f91f98
...
...
@@ -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 107
4
"../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
#line 107
3
"../../../src/sql/parser/sql_parser_mysql_mode_tab.h"
}
YYSTYPE
;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE
/* obsolescent; will be withdrawn */
...
...
src/sql/parser/type_name.c
浏览文件 @
f2f91f98
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录