mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge 11.2 into 11.3
This commit is contained in:
@ -8033,28 +8033,33 @@ public:
|
||||
}
|
||||
|
||||
// Export as a qualified name string: 'db.name'
|
||||
size_t make_qname(char *dst, size_t dstlen) const
|
||||
size_t make_qname(char *dst, size_t dstlen, bool casedn_part1) const
|
||||
{
|
||||
return my_snprintf(dst, dstlen, "%.*s.%.*s",
|
||||
(int) m_name[0].length, m_name[0].str,
|
||||
(int) m_name[1].length, m_name[1].str);
|
||||
size_t res= my_snprintf(dst, dstlen, "%.*s.%.*s",
|
||||
(int) m_name[0].length, m_name[0].str,
|
||||
(int) m_name[1].length, m_name[1].str);
|
||||
if (casedn_part1 && dstlen > m_name[0].length)
|
||||
my_casedn_str(system_charset_info, dst + m_name[0].length + 1);
|
||||
return res;
|
||||
}
|
||||
|
||||
// Export as a qualified name string, allocate on mem_root.
|
||||
bool make_qname(MEM_ROOT *mem_root, LEX_CSTRING *dst) const
|
||||
LEX_CSTRING make_qname(MEM_ROOT *mem_root, bool casedn_part1) const
|
||||
{
|
||||
const uint dot= !!m_name[0].length;
|
||||
char *tmp;
|
||||
LEX_STRING dst;
|
||||
/* format: [pkg + dot] + name + '\0' */
|
||||
dst->length= m_name[0].length + dot + m_name[1].length;
|
||||
if (unlikely(!(dst->str= tmp= (char*) alloc_root(mem_root,
|
||||
dst->length + 1))))
|
||||
return true;
|
||||
snprintf(tmp, dst->length + 1, "%.*s%.*s%.*s",
|
||||
(int) m_name[0].length, (m_name[0].length ? m_name[0].str : ""),
|
||||
dot, ".",
|
||||
(int) m_name[1].length, m_name[1].str);
|
||||
return false;
|
||||
size_t dst_size= m_name[0].length + 1 /*dot*/ + m_name[1].length + 1/*\0*/;
|
||||
if (unlikely(!(dst.str= (char*) alloc_root(mem_root, dst_size))))
|
||||
return {NULL, 0};
|
||||
if (!m_name[0].length)
|
||||
{
|
||||
DBUG_ASSERT(!casedn_part1); // Should not be called this way
|
||||
dst.length= my_snprintf(dst.str, dst_size, "%.*s",
|
||||
(int) m_name[1].length, m_name[1].str);
|
||||
return {dst.str, dst.length};
|
||||
}
|
||||
dst.length= make_qname(dst.str, dst_size, casedn_part1);
|
||||
return {dst.str, dst.length};
|
||||
}
|
||||
};
|
||||
|
||||
@ -8105,14 +8110,14 @@ public:
|
||||
const LEX_CSTRING &name);
|
||||
|
||||
// Export db and name as a qualified name string: 'db.name'
|
||||
size_t make_qname(char *dst, size_t dstlen) const
|
||||
size_t make_qname(char *dst, size_t dstlen, bool casedn_name) const
|
||||
{
|
||||
return Identifier_chain2(m_db, m_name).make_qname(dst, dstlen);
|
||||
return Identifier_chain2(m_db, m_name).make_qname(dst, dstlen, casedn_name);
|
||||
}
|
||||
// Export db and name as a qualified name string, allocate on mem_root.
|
||||
bool make_qname(MEM_ROOT *mem_root, LEX_CSTRING *dst) const
|
||||
LEX_CSTRING make_qname(MEM_ROOT *mem_root, bool casedn_name) const
|
||||
{
|
||||
return Identifier_chain2(m_db, m_name).make_qname(mem_root, dst);
|
||||
return Identifier_chain2(m_db, m_name).make_qname(mem_root, casedn_name);
|
||||
}
|
||||
|
||||
bool make_package_routine_name(MEM_ROOT *mem_root,
|
||||
@ -8123,7 +8128,8 @@ public:
|
||||
size_t length= package.length + 1 + routine.length + 1;
|
||||
if (unlikely(!(tmp= (char *) alloc_root(mem_root, length))))
|
||||
return true;
|
||||
m_name.length= Identifier_chain2(package, routine).make_qname(tmp, length);
|
||||
m_name.length= Identifier_chain2(package, routine).make_qname(tmp, length,
|
||||
false);
|
||||
m_name.str= tmp;
|
||||
return false;
|
||||
}
|
||||
@ -8152,7 +8158,7 @@ public:
|
||||
{ }
|
||||
LEX_CSTRING lex_cstring() const override
|
||||
{
|
||||
size_t length= m_name->make_qname(err_buffer, sizeof(err_buffer));
|
||||
size_t length= m_name->make_qname(err_buffer, sizeof(err_buffer), false);
|
||||
return {err_buffer, length};
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user