1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

Merge branch '10.11' into 11.0

This commit is contained in:
Oleksandr Byelkin
2023-08-08 21:03:46 +02:00
870 changed files with 11721 additions and 6311 deletions

View File

@@ -1155,24 +1155,30 @@ String_copier::well_formed_copy(CHARSET_INFO *to_cs,
characters with backslashes as necessary.
Does not add the enclosing quotes, this is left up to caller.
*/
#define APPEND(X) if (append(X)) return 1; else break
#define APPEND(...) if (append(__VA_ARGS__)) return 1;
bool String::append_for_single_quote(const char *st, size_t len)
{
const char *end= st+len;
int chlen;
for (; st < end; st++)
{
uchar c= *st;
switch (c)
switch (*st)
{
case '\\': APPEND(STRING_WITH_LEN("\\\\"));
case '\0': APPEND(STRING_WITH_LEN("\\0"));
case '\'': APPEND(STRING_WITH_LEN("\\'"));
case '\b': APPEND(STRING_WITH_LEN("\\b"));
case '\t': APPEND(STRING_WITH_LEN("\\t"));
case '\n': APPEND(STRING_WITH_LEN("\\n"));
case '\r': APPEND(STRING_WITH_LEN("\\r"));
case '\032': APPEND(STRING_WITH_LEN("\\Z"));
default: APPEND(c);
case '\\': APPEND(STRING_WITH_LEN("\\\\")); break;
case '\0': APPEND(STRING_WITH_LEN("\\0")); break;
case '\'': APPEND(STRING_WITH_LEN("\\'")); break;
case '\b': APPEND(STRING_WITH_LEN("\\b")); break;
case '\t': APPEND(STRING_WITH_LEN("\\t")); break;
case '\n': APPEND(STRING_WITH_LEN("\\n")); break;
case '\r': APPEND(STRING_WITH_LEN("\\r")); break;
case '\032': APPEND(STRING_WITH_LEN("\\Z")); break;
default: if ((chlen=charset()->charlen(st, end)) > 0)
{
APPEND(st, chlen);
st+= chlen-1;
}
else
APPEND(*st);
}
}
return 0;