ErrConvStringQ helper

like ErrConvString, but puts the string in 'single quotes'
This commit is contained in:
Sergei Golubchik 2023-08-31 12:06:46 +02:00
parent 3c9ecf4b76
commit 03c68f402f

View File

@ -857,6 +857,14 @@ public:
len= err_conv(err_buffer, (uint) sizeof(err_buffer), str, (uint) len, cs); len= err_conv(err_buffer, (uint) sizeof(err_buffer), str, (uint) len, cs);
return {err_buffer, len}; 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 LEX_CSTRING set_mysql_time(const MYSQL_TIME *ltime) const
{ {
int length= my_TIME_to_str(ltime, err_buffer, AUTO_SEC_PART_DIGITS); int length= my_TIME_to_str(ltime, err_buffer, AUTO_SEC_PART_DIGITS);
@ -880,6 +888,7 @@ public:
class ErrConvString : public ErrConv class ErrConvString : public ErrConv
{ {
protected:
const char *str; const char *str;
size_t len; size_t len;
CHARSET_INFO *cs; 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 class ErrConvInteger : public ErrConv, public Longlong_hybrid
{ {
public: public: