Add const to alloc-related thd methods

Also update abi declarations. The abi itself is unchanged, since const
doesn't affect C-style exported name.
This commit is contained in:
Nikita Malyavin 2023-05-27 22:54:13 +03:00 committed by Sergei Golubchik
parent d7b0c6d8a8
commit 500787c72a
12 changed files with 159 additions and 148 deletions

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -314,22 +314,22 @@ struct st_mysql_const_lex_string
}; };
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(THD*, size_t); void *(*thd_alloc_func)(const THD*, size_t);
void *(*thd_calloc_func)(THD*, size_t); void *(*thd_calloc_func)(const THD*, size_t);
char *(*thd_strdup_func)(THD*, const char *); char *(*thd_strdup_func)(const THD*, const char *);
char *(*thd_strmake_func)(THD*, const char *, size_t); char *(*thd_strmake_func)(const THD*, const char *, size_t);
void *(*thd_memdup_func)(THD*, const void*, size_t); void *(*thd_memdup_func)(const THD*, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(THD*, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const THD*,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
void *thd_alloc(THD* thd, size_t size); void *thd_alloc(const THD* thd, size_t size);
void *thd_calloc(THD* thd, size_t size); void *thd_calloc(const THD* thd, size_t size);
char *thd_strdup(THD* thd, const char *str); char *thd_strdup(const THD* thd, const char *str);
char *thd_strmake(THD* thd, const char *str, size_t size); char *thd_strmake(const THD* thd, const char *str, size_t size);
void *thd_memdup(THD* thd, const void* str, size_t size); void *thd_memdup(const THD* thd, const void* str, size_t size);
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(THD* thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const THD* thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);
} }

View File

@ -50,12 +50,12 @@ struct st_mysql_const_lex_string
typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING; typedef struct st_mysql_const_lex_string MYSQL_CONST_LEX_STRING;
extern struct thd_alloc_service_st { extern struct thd_alloc_service_st {
void *(*thd_alloc_func)(MYSQL_THD, size_t); void *(*thd_alloc_func)(const MYSQL_THD, size_t);
void *(*thd_calloc_func)(MYSQL_THD, size_t); void *(*thd_calloc_func)(const MYSQL_THD, size_t);
char *(*thd_strdup_func)(MYSQL_THD, const char *); char *(*thd_strdup_func)(const MYSQL_THD, const char *);
char *(*thd_strmake_func)(MYSQL_THD, const char *, size_t); char *(*thd_strmake_func)(const MYSQL_THD, const char *, size_t);
void *(*thd_memdup_func)(MYSQL_THD, const void*, size_t); void *(*thd_memdup_func)(const MYSQL_THD, const void*, size_t);
MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(MYSQL_THD, MYSQL_CONST_LEX_STRING *(*thd_make_lex_string_func)(const MYSQL_THD,
MYSQL_CONST_LEX_STRING *, MYSQL_CONST_LEX_STRING *,
const char *, size_t, int); const char *, size_t, int);
} *thd_alloc_service; } *thd_alloc_service;
@ -92,23 +92,23 @@ extern struct thd_alloc_service_st {
@see alloc_root() @see alloc_root()
*/ */
void *thd_alloc(MYSQL_THD thd, size_t size); void *thd_alloc(const MYSQL_THD thd, size_t size);
/** /**
@see thd_alloc() @see thd_alloc()
*/ */
void *thd_calloc(MYSQL_THD thd, size_t size); void *thd_calloc(const MYSQL_THD thd, size_t size);
/** /**
@see thd_alloc() @see thd_alloc()
*/ */
char *thd_strdup(MYSQL_THD thd, const char *str); char *thd_strdup(const MYSQL_THD thd, const char *str);
/** /**
@see thd_alloc() @see thd_alloc()
*/ */
char *thd_strmake(MYSQL_THD thd, const char *str, size_t size); char *thd_strmake(const MYSQL_THD thd, const char *str, size_t size);
/** /**
@see thd_alloc() @see thd_alloc()
*/ */
void *thd_memdup(MYSQL_THD thd, const void* str, size_t size); void *thd_memdup(const MYSQL_THD thd, const void* str, size_t size);
/** /**
Create a LEX_STRING in this connection's local memory pool Create a LEX_STRING in this connection's local memory pool
@ -124,7 +124,7 @@ void *thd_memdup(MYSQL_THD thd, const void* str, size_t size);
@see thd_alloc() @see thd_alloc()
*/ */
MYSQL_CONST_LEX_STRING MYSQL_CONST_LEX_STRING
*thd_make_lex_string(MYSQL_THD thd, MYSQL_CONST_LEX_STRING *lex_str, *thd_make_lex_string(const MYSQL_THD thd, MYSQL_CONST_LEX_STRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string); int allocate_lex_string);

View File

@ -1138,31 +1138,31 @@ ret:
} }
extern "C" extern "C"
void *thd_alloc(MYSQL_THD thd, size_t size) void *thd_alloc(const MYSQL_THD thd, size_t size)
{ {
return thd->alloc(size); return thd->alloc(size);
} }
extern "C" extern "C"
void *thd_calloc(MYSQL_THD thd, size_t size) void *thd_calloc(const MYSQL_THD thd, size_t size)
{ {
return thd->calloc(size); return thd->calloc(size);
} }
extern "C" extern "C"
char *thd_strdup(MYSQL_THD thd, const char *str) char *thd_strdup(const MYSQL_THD thd, const char *str)
{ {
return thd->strdup(str); return thd->strdup(str);
} }
extern "C" extern "C"
char *thd_strmake(MYSQL_THD thd, const char *str, size_t size) char *thd_strmake(const MYSQL_THD thd, const char *str, size_t size)
{ {
return thd->strmake(str, size); return thd->strmake(str, size);
} }
extern "C" extern "C"
LEX_CSTRING *thd_make_lex_string(THD *thd, LEX_CSTRING *lex_str, LEX_CSTRING *thd_make_lex_string(const THD *thd, LEX_CSTRING *lex_str,
const char *str, size_t size, const char *str, size_t size,
int allocate_lex_string) int allocate_lex_string)
{ {
@ -1171,7 +1171,7 @@ LEX_CSTRING *thd_make_lex_string(THD *thd, LEX_CSTRING *lex_str,
} }
extern "C" extern "C"
void *thd_memdup(MYSQL_THD thd, const void* str, size_t size) void *thd_memdup(const MYSQL_THD thd, const void* str, size_t size)
{ {
return thd->memdup(str, size); return thd->memdup(str, size);
} }
@ -2345,7 +2345,7 @@ void THD::cleanup_after_query()
bool THD::convert_string(LEX_STRING *to, CHARSET_INFO *to_cs, bool THD::convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length, const char *from, size_t from_length,
CHARSET_INFO *from_cs) CHARSET_INFO *from_cs) const
{ {
DBUG_ENTER("THD::convert_string"); DBUG_ENTER("THD::convert_string");
size_t new_length= to_cs->mbmaxlen * from_length; size_t new_length= to_cs->mbmaxlen * from_length;
@ -2382,7 +2382,7 @@ bool THD::convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
*/ */
bool THD::reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *cs, bool THD::reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *cs,
const char *str, size_t length) const char *str, size_t length) const
{ {
/* /*
When reinterpreting from binary to tricky character sets like When reinterpreting from binary to tricky character sets like
@ -2424,7 +2424,7 @@ bool THD::reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *cs,
*/ */
bool THD::convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst, bool THD::convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length, CHARSET_INFO *srccs, const char *src, size_t src_length,
String_copier *status) String_copier *status) const
{ {
DBUG_ENTER("THD::convert_fix"); DBUG_ENTER("THD::convert_fix");
size_t dst_length= dstcs->mbmaxlen * src_length; size_t dst_length= dstcs->mbmaxlen * src_length;
@ -2442,7 +2442,7 @@ bool THD::convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
*/ */
bool THD::copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst, bool THD::copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length, CHARSET_INFO *srccs, const char *src, size_t src_length,
String_copier *status) String_copier *status) const
{ {
DBUG_ENTER("THD::copy_fix"); DBUG_ENTER("THD::copy_fix");
size_t dst_length= dstcs->mbmaxlen * src_length; size_t dst_length= dstcs->mbmaxlen * src_length;
@ -2474,7 +2474,7 @@ public:
bool THD::convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst, bool THD::convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, CHARSET_INFO *srccs,
const char *src, size_t src_length) const char *src, size_t src_length) const
{ {
String_copier_with_error status; String_copier_with_error status;
return convert_fix(dstcs, dst, srccs, src, src_length, &status) || return convert_fix(dstcs, dst, srccs, src, src_length, &status) ||
@ -2484,7 +2484,7 @@ bool THD::convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
bool THD::copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst, bool THD::copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, CHARSET_INFO *srccs,
const char *src, size_t src_length) const char *src, size_t src_length) const
{ {
String_copier_with_error status; String_copier_with_error status;
return copy_fix(dstcs, dst, srccs, src, src_length, &status) || return copy_fix(dstcs, dst, srccs, src, src_length, &status) ||
@ -2507,7 +2507,8 @@ bool THD::copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
!0 out of memory !0 out of memory
*/ */
bool THD::convert_string(String *s, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs) bool THD::convert_string(String *s, CHARSET_INFO *from_cs,
CHARSET_INFO *to_cs)
{ {
uint dummy_errors; uint dummy_errors;
if (unlikely(convert_buffer.copy(s->ptr(), s->length(), from_cs, to_cs, if (unlikely(convert_buffer.copy(s->ptr(), s->length(), from_cs, to_cs,
@ -2539,7 +2540,8 @@ bool THD::check_string_for_wellformedness(const char *str,
} }
bool THD::to_ident_sys_alloc(Lex_ident_sys_st *to, const Lex_ident_cli_st *ident) bool THD::to_ident_sys_alloc(Lex_ident_sys_st *to,
const Lex_ident_cli_st *ident) const
{ {
if (ident->is_quoted()) if (ident->is_quoted())
{ {

View File

@ -1221,21 +1221,21 @@ public:
inline bool is_conventional() const inline bool is_conventional() const
{ return state == STMT_CONVENTIONAL_EXECUTION; } { return state == STMT_CONVENTIONAL_EXECUTION; }
inline void* alloc(size_t size) { return alloc_root(mem_root,size); } inline void* alloc(size_t size) const { return alloc_root(mem_root,size); }
inline void* calloc(size_t size) inline void* calloc(size_t size) const
{ {
void *ptr; void *ptr;
if (likely((ptr=alloc_root(mem_root,size)))) if (likely((ptr=alloc_root(mem_root,size))))
bzero(ptr, size); bzero(ptr, size);
return ptr; return ptr;
} }
inline char *strdup(const char *str) inline char *strdup(const char *str) const
{ return strdup_root(mem_root,str); } { return strdup_root(mem_root,str); }
inline char *strmake(const char *str, size_t size) inline char *strmake(const char *str, size_t size) const
{ return strmake_root(mem_root,str,size); } { return strmake_root(mem_root,str,size); }
inline void *memdup(const void *str, size_t size) inline void *memdup(const void *str, size_t size) const
{ return memdup_root(mem_root,str,size); } { return memdup_root(mem_root,str,size); }
inline void *memdup_w_gap(const void *str, size_t size, size_t gap) inline void *memdup_w_gap(const void *str, size_t size, size_t gap) const
{ {
void *ptr; void *ptr;
if (likely((ptr= alloc_root(mem_root,size+gap)))) if (likely((ptr= alloc_root(mem_root,size+gap))))
@ -2695,7 +2695,7 @@ public:
Protocol_binary protocol_binary; // Binary protocol Protocol_binary protocol_binary; // Binary protocol
HASH user_vars; // hash for user variables HASH user_vars; // hash for user variables
String packet; // dynamic buffer for network I/O String packet; // dynamic buffer for network I/O
String convert_buffer; // buffer for charset conversions String convert_buffer; // buffer for charset conversions
struct my_rnd_struct rand; // used for authentication struct my_rnd_struct rand; // used for authentication
struct system_variables variables; // Changeable local variables struct system_variables variables; // Changeable local variables
struct system_status_var status_var; // Per thread statistic vars struct system_status_var status_var; // Per thread statistic vars
@ -4148,24 +4148,25 @@ public:
{ {
return !stmt_arena->is_stmt_prepare(); return !stmt_arena->is_stmt_prepare();
} }
inline void* trans_alloc(size_t size) inline void* trans_alloc(size_t size) const
{ {
return alloc_root(&transaction->mem_root,size); return alloc_root(&transaction->mem_root,size);
} }
LEX_CSTRING strmake_lex_cstring(const char *str, size_t length) LEX_CSTRING strmake_lex_cstring(const char *str, size_t length) const
{ {
const char *tmp= strmake_root(mem_root, str, length); const char *tmp= strmake_root(mem_root, str, length);
if (!tmp) if (!tmp)
return {0,0}; return {0,0};
return {tmp, length}; return {tmp, length};
} }
LEX_CSTRING strmake_lex_cstring(const LEX_CSTRING &from) LEX_CSTRING strmake_lex_cstring(const LEX_CSTRING &from) const
{ {
return strmake_lex_cstring(from.str, from.length); return strmake_lex_cstring(from.str, from.length);
} }
LEX_STRING *make_lex_string(LEX_STRING *lex_str, const char* str, size_t length) LEX_STRING *make_lex_string(LEX_STRING *lex_str, const char* str,
size_t length) const
{ {
if (!(lex_str->str= strmake_root(mem_root, str, length))) if (!(lex_str->str= strmake_root(mem_root, str, length)))
{ {
@ -4175,7 +4176,8 @@ public:
lex_str->length= length; lex_str->length= length;
return lex_str; return lex_str;
} }
LEX_CSTRING *make_lex_string(LEX_CSTRING *lex_str, const char* str, size_t length) LEX_CSTRING *make_lex_string(LEX_CSTRING *lex_str, const char* str,
size_t length) const
{ {
if (!(lex_str->str= strmake_root(mem_root, str, length))) if (!(lex_str->str= strmake_root(mem_root, str, length)))
{ {
@ -4186,7 +4188,8 @@ public:
return lex_str; return lex_str;
} }
// Remove double quotes: aaa""bbb -> aaa"bbb // Remove double quotes: aaa""bbb -> aaa"bbb
bool quote_unescape(LEX_CSTRING *dst, const LEX_CSTRING *src, char quote) bool quote_unescape(LEX_CSTRING *dst, const LEX_CSTRING *src,
char quote) const
{ {
const char *tmp= src->str; const char *tmp= src->str;
const char *tmpend= src->str + src->length; const char *tmpend= src->str + src->length;
@ -4206,7 +4209,7 @@ public:
return false; return false;
} }
LEX_CSTRING *make_clex_string(const char* str, size_t length) LEX_CSTRING *make_clex_string(const char* str, size_t length) const
{ {
LEX_CSTRING *lex_str; LEX_CSTRING *lex_str;
char *tmp; char *tmp;
@ -4221,13 +4224,13 @@ public:
lex_str->length= length; lex_str->length= length;
return lex_str; return lex_str;
} }
LEX_CSTRING *make_clex_string(const LEX_CSTRING from) LEX_CSTRING *make_clex_string(const LEX_CSTRING from) const
{ {
return make_clex_string(from.str, from.length); return make_clex_string(from.str, from.length);
} }
// Allocate LEX_STRING for character set conversion // Allocate LEX_STRING for character set conversion
bool alloc_lex_string(LEX_STRING *dst, size_t length) bool alloc_lex_string(LEX_STRING *dst, size_t length) const
{ {
if (likely((dst->str= (char*) alloc(length)))) if (likely((dst->str= (char*) alloc(length))))
return false; return false;
@ -4236,12 +4239,13 @@ public:
} }
bool convert_string(LEX_STRING *to, CHARSET_INFO *to_cs, bool convert_string(LEX_STRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length, const char *from, size_t from_length,
CHARSET_INFO *from_cs); CHARSET_INFO *from_cs) const;
bool reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *to_cs, bool reinterpret_string_from_binary(LEX_CSTRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length); const char *from, size_t from_length)
const;
bool convert_string(LEX_CSTRING *to, CHARSET_INFO *to_cs, bool convert_string(LEX_CSTRING *to, CHARSET_INFO *to_cs,
const char *from, size_t from_length, const char *from, size_t from_length,
CHARSET_INFO *from_cs) CHARSET_INFO *from_cs) const
{ {
LEX_STRING tmp; LEX_STRING tmp;
bool rc= convert_string(&tmp, to_cs, from, from_length, from_cs); bool rc= convert_string(&tmp, to_cs, from, from_length, from_cs);
@ -4251,7 +4255,7 @@ public:
} }
bool convert_string(LEX_CSTRING *to, CHARSET_INFO *tocs, bool convert_string(LEX_CSTRING *to, CHARSET_INFO *tocs,
const LEX_CSTRING *from, CHARSET_INFO *fromcs, const LEX_CSTRING *from, CHARSET_INFO *fromcs,
bool simple_copy_is_possible) bool simple_copy_is_possible) const
{ {
if (!simple_copy_is_possible) if (!simple_copy_is_possible)
return unlikely(convert_string(to, tocs, from->str, from->length, fromcs)); return unlikely(convert_string(to, tocs, from->str, from->length, fromcs));
@ -4267,7 +4271,7 @@ public:
*/ */
bool convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst, bool convert_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length, CHARSET_INFO *srccs, const char *src, size_t src_length,
String_copier *status); String_copier *status) const;
/* /*
Same as above, but additionally sends ER_INVALID_CHARACTER_STRING Same as above, but additionally sends ER_INVALID_CHARACTER_STRING
@ -4275,7 +4279,7 @@ public:
*/ */
bool convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst, bool convert_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, CHARSET_INFO *srccs,
const char *src, size_t src_length); const char *src, size_t src_length) const;
/* /*
If either "dstcs" or "srccs" is &my_charset_bin, If either "dstcs" or "srccs" is &my_charset_bin,
then performs native copying using copy_fix(). then performs native copying using copy_fix().
@ -4283,16 +4287,18 @@ public:
*/ */
bool copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst, bool copy_fix(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length, CHARSET_INFO *srccs, const char *src, size_t src_length,
String_copier *status); String_copier *status) const;
/* /*
Same as above, but additionally sends ER_INVALID_CHARACTER_STRING Same as above, but additionally sends ER_INVALID_CHARACTER_STRING
in case of bad byte sequences or Unicode conversion problems. in case of bad byte sequences or Unicode conversion problems.
*/ */
bool copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst, bool copy_with_error(CHARSET_INFO *dstcs, LEX_STRING *dst,
CHARSET_INFO *srccs, const char *src, size_t src_length); CHARSET_INFO *srccs, const char *src, size_t src_length)
const;
bool convert_string(String *s, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs); bool convert_string(String *s, CHARSET_INFO *from_cs,
CHARSET_INFO *to_cs);
/* /*
Check if the string is wellformed, raise an error if not wellformed. Check if the string is wellformed, raise an error if not wellformed.
@ -4303,7 +4309,8 @@ public:
size_t length, size_t length,
CHARSET_INFO *cs) const; CHARSET_INFO *cs) const;
bool to_ident_sys_alloc(Lex_ident_sys_st *to, const Lex_ident_cli_st *from); bool to_ident_sys_alloc(Lex_ident_sys_st *to,
const Lex_ident_cli_st *from) const;
/* /*
Create a string literal with optional client->connection conversion. Create a string literal with optional client->connection conversion.
@ -4313,7 +4320,8 @@ public:
*/ */
Item_basic_constant *make_string_literal(const char *str, size_t length, Item_basic_constant *make_string_literal(const char *str, size_t length,
my_repertoire_t repertoire); my_repertoire_t repertoire);
Item_basic_constant *make_string_literal(const Lex_string_with_metadata_st &str) Item_basic_constant *
make_string_literal(const Lex_string_with_metadata_st &str)
{ {
my_repertoire_t repertoire= str.repertoire(variables.character_set_client); my_repertoire_t repertoire= str.repertoire(variables.character_set_client);
return make_string_literal(str.str, str.length, repertoire); return make_string_literal(str.str, str.length, repertoire);

View File

@ -9683,18 +9683,18 @@ Item *LEX::create_item_qualified_asterisk(THD *thd,
} }
bool Lex_ident_sys_st::copy_ident_cli(THD *thd, const Lex_ident_cli_st *str) bool Lex_ident_sys_st::copy_ident_cli(const THD *thd, const Lex_ident_cli_st *str)
{ {
return thd->to_ident_sys_alloc(this, str); return thd->to_ident_sys_alloc(this, str);
} }
bool Lex_ident_sys_st::copy_keyword(THD *thd, const Lex_ident_cli_st *str) bool Lex_ident_sys_st::copy_keyword(const THD *thd, const Lex_ident_cli_st *str)
{ {
return thd->make_lex_string(static_cast<LEX_CSTRING*>(this), return thd->make_lex_string(static_cast<LEX_CSTRING*>(this),
str->str, str->length) == NULL; str->str, str->length) == NULL;
} }
bool Lex_ident_sys_st::copy_or_convert(THD *thd, bool Lex_ident_sys_st::copy_or_convert(const THD *thd,
const Lex_ident_cli_st *src, const Lex_ident_cli_st *src,
CHARSET_INFO *cs) CHARSET_INFO *cs)
{ {
@ -9704,7 +9704,7 @@ bool Lex_ident_sys_st::copy_or_convert(THD *thd,
} }
bool Lex_ident_sys_st::copy_sys(THD *thd, const LEX_CSTRING *src) bool Lex_ident_sys_st::copy_sys(const THD *thd, const LEX_CSTRING *src)
{ {
if (thd->check_string_for_wellformedness(src->str, src->length, if (thd->check_string_for_wellformedness(src->str, src->length,
system_charset_info)) system_charset_info))
@ -9713,7 +9713,7 @@ bool Lex_ident_sys_st::copy_sys(THD *thd, const LEX_CSTRING *src)
} }
bool Lex_ident_sys_st::convert(THD *thd, bool Lex_ident_sys_st::convert(const THD *thd,
const LEX_CSTRING *src, CHARSET_INFO *cs) const LEX_CSTRING *src, CHARSET_INFO *cs)
{ {
LEX_STRING tmp; LEX_STRING tmp;

View File

@ -148,11 +148,12 @@ public:
struct Lex_ident_sys_st: public LEX_CSTRING struct Lex_ident_sys_st: public LEX_CSTRING
{ {
public: public:
bool copy_ident_cli(THD *thd, const Lex_ident_cli_st *str); bool copy_ident_cli(const THD *thd, const Lex_ident_cli_st *str);
bool copy_keyword(THD *thd, const Lex_ident_cli_st *str); bool copy_keyword(const THD *thd, const Lex_ident_cli_st *str);
bool copy_sys(THD *thd, const LEX_CSTRING *str); bool copy_sys(const THD *thd, const LEX_CSTRING *str);
bool convert(THD *thd, const LEX_CSTRING *str, CHARSET_INFO *cs); bool convert(const THD *thd, const LEX_CSTRING *str, CHARSET_INFO *cs);
bool copy_or_convert(THD *thd, const Lex_ident_cli_st *str, CHARSET_INFO *cs); bool copy_or_convert(const THD *thd, const Lex_ident_cli_st *str,
CHARSET_INFO *cs);
bool is_null() const { return str == NULL; } bool is_null() const { return str == NULL; }
bool to_size_number(ulonglong *to) const; bool to_size_number(ulonglong *to) const;
void set_valid_utf8(const LEX_CSTRING *name) void set_valid_utf8(const LEX_CSTRING *name)
@ -167,7 +168,7 @@ public:
class Lex_ident_sys: public Lex_ident_sys_st class Lex_ident_sys: public Lex_ident_sys_st
{ {
public: public:
Lex_ident_sys(THD *thd, const Lex_ident_cli_st *str) Lex_ident_sys(const THD *thd, const Lex_ident_cli_st *str)
{ {
if (copy_ident_cli(thd, str)) if (copy_ident_cli(thd, str))
((LEX_CSTRING &) *this)= null_clex_str; ((LEX_CSTRING &) *this)= null_clex_str;