[CP] fix core at pl parser vsnprintf
This commit is contained in:
@ -206,4 +206,23 @@ extern const NonReservedKeyword *mysql_pl_non_reserved_keyword_lookup(const char
|
|||||||
// e.g., (int64_t)3.00000000000000001 == 3.00000000000000001 is true;
|
// e.g., (int64_t)3.00000000000000001 == 3.00000000000000001 is true;
|
||||||
// oracle supports up to 40 decimal place precision.
|
// oracle supports up to 40 decimal place precision.
|
||||||
|
|
||||||
|
#define ESCAPE_PERCENT_CHARACTER(result, src, dst)\
|
||||||
|
do {\
|
||||||
|
if (OB_NOT_NULL(result) && OB_NOT_NULL(src)) {\
|
||||||
|
int64_t src_len = strlen(src);\
|
||||||
|
int64_t dst_len = 2 * src_len + 1;\
|
||||||
|
int64_t pos = 0;\
|
||||||
|
dst = (char *)parse_malloc(dst_len, result->mem_pool_);\
|
||||||
|
if (OB_LIKELY(NULL != dst)) {\
|
||||||
|
for (int64_t i = 0; i < src_len; i++) {\
|
||||||
|
if (src[i] == '%') {\
|
||||||
|
dst[pos++] = '%';\
|
||||||
|
}\
|
||||||
|
dst[pos++] = src[i];\
|
||||||
|
}\
|
||||||
|
dst[pos] = 0;\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#endif /* OCEANBASE_SRC_PL_PARSER_PL_PARSER_BASE_H_ */
|
#endif /* OCEANBASE_SRC_PL_PARSER_PL_PARSER_BASE_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user