summaryrefslogtreecommitdiff
path: root/sql/mdl.h
diff options
context:
space:
mode:
authorGleb Shchepa <gleb.shchepa@oracle.com>2012-12-05 16:53:33 +0400
committerGleb Shchepa <gleb.shchepa@oracle.com>2012-12-05 16:53:33 +0400
commit70cb820e2d0bd0a1d1970a312591e87edf3b38ae (patch)
treedaaa220f642d071a134e6759f5581dd0e7c08506 /sql/mdl.h
parent195e731edb222ba778f1f6c194ab829af2419edd (diff)
downloadmariadb-git-70cb820e2d0bd0a1d1970a312591e87edf3b38ae.tar.gz
Bug #15948123: SERVER WORKS INCORRECT WITH LONG TABLE ALIASES
Code in MDL subsystem assumes that identifiers of objects can't be longer than NAME_LEN characters. This assumption was broken when one tried to construct MDL_key based on table alias, which can have arbitrary length. Since MDL_key's (and MDL locks) are not really used for table aliases this patch changes code to not initialize MDL_key object for table list element representing aliases.
Diffstat (limited to 'sql/mdl.h')
-rw-r--r--sql/mdl.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/mdl.h b/sql/mdl.h
index d30d30ac2fa..6d29ad968c6 100644
--- a/sql/mdl.h
+++ b/sql/mdl.h
@@ -246,6 +246,8 @@ public:
}
void mdl_key_init(const MDL_key *rhs)
{
+ DBUG_ASSERT(rhs->m_length <= NAME_LEN);
+ DBUG_ASSERT(rhs->m_db_name_length <= NAME_LEN);
memcpy(m_ptr, rhs->m_ptr, rhs->m_length);
m_length= rhs->m_length;
m_db_name_length= rhs->m_db_name_length;