Commit 384456fc authored by unknown's avatar unknown

BUG#9626 valgrind warnings

 - after review fixes


mysql-test/r/ndb_basic.result:
  Test using table with long name
mysql-test/t/ndb_basic.test:
  Test using table with long name
ndb/include/transporter/TransporterDefinitions.hpp:
  Define constant for max section size
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Add check for not sending too long table name to ndb kernel
parent 3bd46ad8
...@@ -667,3 +667,9 @@ counter datavalue ...@@ -667,3 +667,9 @@ counter datavalue
57 newval 57 newval
58 newval 58 newval
drop table t1; drop table t1;
create table atablewithareallylongandirritatingname (a int);
insert into atablewithareallylongandirritatingname values (2);
select * from atablewithareallylongandirritatingname;
a
2
drop table atablewithareallylongandirritatingname;
...@@ -605,3 +605,12 @@ insert into t1 (datavalue) select datavalue from t1 where counter < 100; ...@@ -605,3 +605,12 @@ insert into t1 (datavalue) select datavalue from t1 where counter < 100;
select * from t1 order by counter; select * from t1 order by counter;
drop table t1; drop table t1;
#
# Test long table name
#
create table atablewithareallylongandirritatingname (a int);
insert into atablewithareallylongandirritatingname values (2);
select * from atablewithareallylongandirritatingname;
drop table atablewithareallylongandirritatingname;
...@@ -45,8 +45,9 @@ enum SendStatus { ...@@ -45,8 +45,9 @@ enum SendStatus {
* Protocol6 Header + * Protocol6 Header +
* (optional signal id) + (optional checksum) + (signal data) * (optional signal id) + (optional checksum) + (signal data)
*/ */
const Uint32 MAX_SECTION_SIZE= 4096;
//const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)); //const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25));
const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)+(3*4)+4*4096); const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)+(3*4)+4*MAX_SECTION_SIZE);
/** /**
* TransporterConfiguration * TransporterConfiguration
......
...@@ -1088,6 +1088,7 @@ NdbDictInterface::getTable(int tableId, bool fullyQualifiedNames) ...@@ -1088,6 +1088,7 @@ NdbDictInterface::getTable(int tableId, bool fullyQualifiedNames)
Send GET_TABINFOREQ signal with the table name in the first Send GET_TABINFOREQ signal with the table name in the first
long section part long section part
*/ */
NdbTableImpl * NdbTableImpl *
NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames) NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames)
{ {
...@@ -1095,12 +1096,16 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames) ...@@ -1095,12 +1096,16 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames)
GetTabInfoReq* const req = CAST_PTR(GetTabInfoReq, tSignal.getDataPtrSend()); GetTabInfoReq* const req = CAST_PTR(GetTabInfoReq, tSignal.getDataPtrSend());
const Uint32 str_len= strlen(name) + 1; // NULL terminated const Uint32 str_len= strlen(name) + 1; // NULL terminated
const Uint32 str_len_words= (str_len + 3) / 4; // Size in words
/* Note! It might be a good idea to check that the length of if (str_len > MAX_SECTION_SIZE)
table name does not exceed the max size of a long signal */ {
m_error.code= 4307;
return 0;
}
m_namebuf.clear(); m_namebuf.clear();
m_namebuf.grow(str_len+(4-str_len%4)); // Round up to word size m_namebuf.grow(str_len_words*4); // Word size aligned number of bytes
m_namebuf.append(name, str_len); m_namebuf.append(name, str_len);
req->senderRef= m_reference; req->senderRef= m_reference;
...@@ -1114,7 +1119,7 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames) ...@@ -1114,7 +1119,7 @@ NdbDictInterface::getTable(const char * name, bool fullyQualifiedNames)
LinearSectionPtr ptr[1]; LinearSectionPtr ptr[1];
ptr[0].p= (Uint32*)m_namebuf.get_data(); ptr[0].p= (Uint32*)m_namebuf.get_data();
ptr[0].sz= (str_len + 3)/ 4; // Size in words ptr[0].sz= str_len_words;
return getTable(&tSignal, ptr, 1, fullyQualifiedNames); return getTable(&tSignal, ptr, 1, fullyQualifiedNames);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment