From 03c68f402f3eb64041de8cb8d441e07ab440a48a Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 31 Aug 2023 12:06:46 +0200 Subject: [PATCH] ErrConvStringQ helper like ErrConvString, but puts the string in 'single quotes' --- sql/sql_error.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sql/sql_error.h b/sql/sql_error.h index 541b92b4531..bb518fae64a 100644 --- a/sql/sql_error.h +++ b/sql/sql_error.h @@ -857,6 +857,14 @@ public: len= err_conv(err_buffer, (uint) sizeof(err_buffer), str, (uint) len, cs); return {err_buffer, len}; } + LEX_CSTRING set_strq(const char *str, size_t len, CHARSET_INFO *cs) const + { + DBUG_ASSERT(len < UINT_MAX32); + len= err_conv(err_buffer+1, (uint) sizeof(err_buffer)-2, str, (uint) len, cs); + err_buffer[0]= err_buffer[len+1]= '\''; + err_buffer[len+2]= 0; + return {err_buffer, len+2}; + } LEX_CSTRING set_mysql_time(const MYSQL_TIME *ltime) const { int length= my_TIME_to_str(ltime, err_buffer, AUTO_SEC_PART_DIGITS); @@ -880,6 +888,7 @@ public: class ErrConvString : public ErrConv { +protected: const char *str; size_t len; CHARSET_INFO *cs; @@ -896,6 +905,16 @@ public: } }; +class ErrConvStringQ : public ErrConvString +{ +public: + using ErrConvString::ErrConvString; + LEX_CSTRING lex_cstring() const override + { + return set_strq(str, len, cs); + } +}; + class ErrConvInteger : public ErrConv, public Longlong_hybrid { public: