Below is the list of changes that have just been committed into a local
5.1-ndb repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.1812 05/03/31 20:59:28 joreland@stripped +14 -0
wl1866 - ndb varsize
fix misc bugs
ndb/src/ndbapi/ndberror.c
1.35 05/03/31 20:59:24 joreland@stripped +1 -0
new error code
ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp
1.31 05/03/31 20:59:24 joreland@stripped +3 -2
use variable for pagePtr.i
ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp
1.17 05/03/31 20:59:24 joreland@stripped +6 -0
setup varsize parts in trigger code
ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp
1.32 05/03/31 20:59:24 joreland@stripped +54 -18
Fix varsize wrt charsets
ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp
1.7 05/03/31 20:59:24 joreland@stripped +1 -0
init physical_page in alloc_frag_pages
ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp
1.7 05/03/31 20:59:24 joreland@stripped +1 -1
don't init physical_page in initPage
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
1.26 05/03/31 20:59:24 joreland@stripped +4 -4
removed redundant var_sized_record
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
1.55 05/03/31 20:59:24 joreland@stripped +20 -10
removed redundant var_sized_record
fix checksym of varsize
ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
1.42 05/03/31 20:59:24 joreland@stripped +2 -1
removed redundant var_sized_record
ndb/src/kernel/blocks/dbtup/Dbtup.hpp
1.50 05/03/31 20:59:24 joreland@stripped +0 -2
removed redundant var_sized_record
ndb/src/kernel/blocks/dbdict/Dbdict.cpp
1.61 05/03/31 20:59:24 joreland@stripped +20 -4
Don't allow varsize bitfields
ndb/include/kernel/signaldata/CreateTable.hpp
1.5 05/03/31 20:59:24 joreland@stripped +2 -1
Don't allow varsize bitfields
mysql-test/t/ndb_autodiscover.test
1.17 05/03/31 20:59:24 joreland@stripped +1 -1
more removal of avg_row_length
mysql-test/r/ndb_autodiscover.result
1.23 05/03/31 20:59:24 joreland@stripped +2 -2
more removal of avg_row_length
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: joreland
# Host: eel.hemma.oreland.se
# Root: /home/jonas/src/mysql-5.1-ndb-dd
--- 1.22/mysql-test/r/ndb_autodiscover.result Tue Mar 29 12:08:41 2005
+++ 1.23/mysql-test/r/ndb_autodiscover.result Thu Mar 31 20:59:24 2005
@@ -144,8 +144,8 @@
flush tables;
show table status;
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t6 MyISAM 10 Fixed 1 260 # # # 0 NULL # # NULL # NULL #
-t7 ndbcluster 10 Fixed 1 276 # # # 0 NULL # # NULL # NULL #
+t6 MyISAM 10 Fixed 1 # # # # 0 NULL # # NULL # NULL #
+t7 ndbcluster 10 Fixed 1 # # # # 0 NULL # # NULL # NULL #
show status like 'handler_discover%';
Variable_name Value
Handler_discover 2
--- 1.16/mysql-test/t/ndb_autodiscover.test Tue Feb 22 08:13:28 2005
+++ 1.17/mysql-test/t/ndb_autodiscover.test Thu Mar 31 20:59:24 2005
@@ -176,7 +176,7 @@
flush tables;
system rm var/master-data/test/t7.frm ;
---replace_column 7 # 8 # 9 # 12 # 13 # 15 # 18 #
+--replace_column 6 # 7 # 8 # 9 # 12 # 13 # 15 # 18 #
show table status;
show status like 'handler_discover%';
--- 1.4/ndb/include/kernel/signaldata/CreateTable.hpp Fri Mar 4 13:48:44 2005
+++ 1.5/ndb/include/kernel/signaldata/CreateTable.hpp Thu Mar 31 20:59:24 2005
@@ -92,7 +92,8 @@
InvalidPrimaryKeySize = 739,
NullablePrimaryKey = 740,
InvalidCharset = 743,
- InvalidTablespace = 755
+ InvalidTablespace = 755,
+ VarsizeBitfieldNotSupported = 757
};
private:
--- 1.60/ndb/src/kernel/blocks/dbdict/Dbdict.cpp Wed Mar 16 16:02:14 2005
+++ 1.61/ndb/src/kernel/blocks/dbdict/Dbdict.cpp Thu Mar 31 20:59:24 2005
@@ -5104,6 +5104,15 @@
int b= AttributeDescriptor::getArrayType(desc);
Uint32 pos= 2*(a ? 1 : 0) + (b == NDB_ARRAYTYPE_VAR ? 1 : 0);
counts[pos+1]++;
+
+ if(b == NDB_ARRAYTYPE_VAR && sz == 0)
+ {
+ parseP->errorCode = CreateTableRef::VarsizeBitfieldNotSupported;
+ parseP->status = status;
+ parseP->errorKey = it.getKey();
+ parseP->errorLine = __LINE__;
+ return;
+ }
if(!it.next())
break;
@@ -5125,12 +5134,13 @@
tabRequire(keyLength > 0,
CreateTableRef::InvalidPrimaryKeySize);
- if(counts[2] || counts[3])
+ if(counts[3] || counts[4])
{
FilegroupPtr tablespacePtr;
if(!c_filegroup_hash.find(tablespacePtr, tablePtr.p->m_tablespace_id) ||
tablespacePtr.p->m_type != DictTabInfo::Tablespace)
{
+ ndbout_c("%d %d", counts[3], counts[4]);
tabRequire(false, CreateTableRef::InvalidTablespace);
}
}
@@ -5144,17 +5154,23 @@
* dd-fixsize
* dd-varsize
*/
- ndbout_c("reshuffle attributes");
+ printf("reshuffle attributes: ");
for(Uint32 i= 1; i<5; i++)
+ {
counts[i]+= counts[i-1];
-
+ printf("%d ", counts[i-1]);
+ }
+ printf(" - ");
+
for(list.first(attrPtr); !attrPtr.isNull(); list.next(attrPtr))
{
int a= AttributeDescriptor::getDiskBased(attrPtr.p->attributeDescriptor);
int b= AttributeDescriptor::getArrayType(attrPtr.p->attributeDescriptor);
Uint32 pos= 2*(a ? 1 : 0) + (b == NDB_ARRAYTYPE_VAR ? 1 : 0);
+ printf("%d ", counts[pos]);
attrPtr.p->attributeId = counts[pos]++;
}
+ ndbout_c("");
}
}//handleTabInfo()
@@ -12935,7 +12951,7 @@
case DictTabInfo::LogfileGroup:
ref = LGMAN_REF;
len = CreateFilegroupImplReq::LogfileGroupLength;
- req->logfile_group.buffer_size = 512*1024/32768; // 512k in pages
+ req->logfile_group.buffer_size = 8*1024*1024/32768; // 512k in pages
break;
default:
ndbrequire(false);
--- 1.49/ndb/src/kernel/blocks/dbtup/Dbtup.hpp Wed Mar 30 14:46:49 2005
+++ 1.50/ndb/src/kernel/blocks/dbtup/Dbtup.hpp Thu Mar 31 20:59:24 2005
@@ -719,8 +719,6 @@
Uint32 tabDescriptor;
bool checksumIndicator;
- bool var_sized_record; // Is there any varsize attributes (mm or dd)
-
Uint16 total_rec_size; // Max total size for entire tuple in words
/**
--- 1.41/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp Wed Mar 30 17:40:59 2005
+++ 1.42/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp Thu Mar 31 20:59:24 2005
@@ -173,7 +173,8 @@
disk_page_free(signal, regTabPtr, &disk, *(PagePtr*)&disk_page, gci);
}
- if (regTabPtr->var_sized_record) {
+ if (regTabPtr->m_attributes[MM].m_no_of_varsize)
+ {
ljam();
if(ptr->m_header_bits & Tuple_header::CHAINED_ROW)
--- 1.54/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp Wed Mar 30 17:40:59 2005
+++ 1.55/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp Thu Mar 31 20:59:24 2005
@@ -239,15 +239,15 @@
{
Uint32 checksum;
Uint32 i, rec_size, *tuple_header;
- bool var_sized;
-
- var_sized= regTabPtr->var_sized_record;
rec_size= regTabPtr->m_offsets[MM].m_fix_header_size;
tuple_header= (Uint32*)&tuple_ptr->m_header_bits;
checksum= 0;
// includes tupVersion
//printf("%p - ", tuple_ptr);
+ if (regTabPtr->m_attributes[MM].m_no_of_varsize)
+ rec_size += Tuple_header::HeaderSize;
+
for (i= 0; i < rec_size-1; i++) {
checksum ^= tuple_header[i];
//printf("%.8x ", tuple_header[i]);
@@ -1355,7 +1355,7 @@
if(regOperPtr.p->is_first_operation())
{
Uint32 frag_page_id;
- if (!regTabPtr->var_sized_record)
+ if (!regTabPtr->m_attributes[MM].m_no_of_varsize)
{
jam();
if ((ptr= alloc_fix_rec(regFragPtr,
@@ -1418,7 +1418,7 @@
setChecksum(req_struct->m_tuple_ptr, regTabPtr);
}
- if (!regTabPtr->var_sized_record || cmp[0] == cmp[1])
+ if (!regTabPtr->need_shrink() || cmp[0] == cmp[1])
return 0;
return handle_size_change_after_update(req_struct,
@@ -2441,11 +2441,10 @@
{
Uint32 bits= src->m_header_bits;
Tuple_header* ptr= req_struct->m_tuple_ptr;
- memcpy(ptr, src, 4*tabPtrP->m_offsets[MM].m_fix_header_size);
- ptr->m_header_bits= bits | Tuple_header::DISK_INLINE;
Uint16 dd_tot= tabPtrP->m_no_of_disk_attributes;
Uint16 mm_vars= tabPtrP->m_attributes[MM].m_no_of_varsize;
+ Uint32 fix_size= tabPtrP->m_offsets[MM].m_varpart_offset;
Uint32 *dst_ptr= ptr->get_var_part_ptr(tabPtrP);
const Uint32 *disk_ref= src->get_disk_ref_ptr(tabPtrP);
@@ -2455,6 +2454,7 @@
if(mm_vars)
{
+
Uint32 step; // in bytes
const Uint32 *src_data= src_ptr;
KeyReqStruct::Var_data* dst= &req_struct->m_var_data[MM];
@@ -2463,10 +2463,12 @@
src_data= get_ptr(&req_struct->m_varpart_page_ptr,
* (Var_part_ref*)src_ptr);
step= 4;
+ sizes[MM]= (2 + (mm_vars << 1) + ((Uint16*)src_data)[mm_vars] + 3) >> 2;
}
else
{
step= (2 + (mm_vars << 1) + ((Uint16*)src_ptr)[mm_vars]);
+ sizes[MM]= (step + 3) >> 2;
}
dst->m_data_ptr= (char*)(((Uint16*)dst_ptr)+mm_vars+1);
dst->m_offset_array_ptr= req_struct->var_pos_array;
@@ -2475,15 +2477,21 @@
dst_ptr= expand_var_part(dst, src_data, desc);
ndbassert(dst_ptr == ALIGN_WORD(dst->m_data_ptr + dst->m_max_var_offset));
+ ndbassert((UintPtr(src_ptr) & 3) == 0);
src_ptr = ALIGN_WORD(((char*)src_ptr)+step);
- sizes[MM]= 4*(Tuple_header::HeaderSize + tabPtrP->m_offsets[MM].m_varpart_offset) + ((Uint16*)src_data)[mm_vars] + (mm_vars * 2) + 2;
+
+ sizes[MM] += fix_size + Tuple_header::HeaderSize;
+ memcpy(ptr, src, 4*(fix_size + Tuple_header::HeaderSize));
}
else
{
sizes[MM]= 1;
dst_ptr -= Tuple_header::HeaderSize;
+ memcpy(ptr, src, 4*fix_size);
}
+ ptr->m_header_bits= bits | Tuple_header::DISK_INLINE;
+
sizes[DD]= 0;
if(dd_tot)
{
@@ -2595,7 +2603,7 @@
Dbtup::shrink_tuple(KeyReqStruct* req_struct, Uint32 sizes[2],
const Tablerec* tabPtrP)
{
- ndbassert(tabPtrP->var_sized_record);
+ ndbassert(tabPtrP->need_shrink());
Tuple_header* ptr= req_struct->m_tuple_ptr;
Uint16 dd_tot= tabPtrP->m_no_of_disk_attributes;
@@ -2622,7 +2630,9 @@
dst_data_ptr += len;
}
*dst_off_ptr= off;
- sizes[MM]= dst_data_ptr - ((char*)ptr);
+ assert(dst_data_ptr <= ((char*)ptr) + 8192);
+ assert((UintPtr(ptr) & 3) == 0);
+ sizes[MM]= (dst_data_ptr + 3 - ((char*)ptr)) >> 2;
}
if(dd_tot)
--- 1.25/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp Fri Mar 11 08:30:26 2005
+++ 1.26/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp Thu Mar 31 20:59:24 2005
@@ -345,12 +345,12 @@
case ZVAR_ARRAY:
{
ljam();
+ if(regTabPtr.p->m_attributes[MM].m_no_of_varsize == 0 &&
+ regTabPtr.p->m_attributes[DD].m_no_of_varsize == 0)
+ ndbout_c("varsize record");
+
fragOperPtr.p->m_var_attributes_size[ind] += bytes;
pos= regTabPtr.p->m_attributes[ind].m_no_of_varsize++;
-
- if(!regTabPtr.p->var_sized_record)
- ndbout_c("varsize record");
- regTabPtr.p->var_sized_record= true;
break;
}
case ZFIXED_ARRAY:
--- 1.6/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp Mon Feb 7 08:18:14 2005
+++ 1.7/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp Thu Mar 31 20:59:24 2005
@@ -125,7 +125,7 @@
ljam();
refresh_watch_dog();
ptrAss(pagePtr, page);
- pagePtr.p->physical_page_id= pagePtr.i;
+ pagePtr.p->physical_page_id= RNIL;
pagePtr.p->next_page = pagePtr.i + 1;
pagePtr.p->first_cluster_page = RNIL;
pagePtr.p->next_cluster_page = RNIL;
--- 1.6/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp Mon Feb 7 12:26:45 2005
+++ 1.7/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp Thu Mar 31 20:59:24 2005
@@ -371,6 +371,7 @@
loopPagePtr.p->page_state = ZEMPTY_MM;
loopPagePtr.p->frag_page_id = startRange +
(loopPagePtr.i - retPageRef);
+ loopPagePtr.p->physical_page_id = loopPagePtr.i;
loopPagePtr.p->next_page = loopPagePtr.i + 1;
}//for
loopPagePtr.i = (retPageRef + noOfPagesAllocated) - 1;
--- 1.31/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp Fri Mar 4 13:48:44 2005
+++ 1.32/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp Thu Mar 31 20:59:24 2005
@@ -349,7 +349,6 @@
Uint32 maxIndexBuf = indexBuf + (dstLen >> 2);
if (maxIndexBuf <= maxRead && ok) {
ljam();
- uchar* dstPtr = (uchar*)&outBuffer[indexBuf];
const char* ssrcPtr = (const char*)srcPtr;
int n = NdbSqlUtil::strnxfrm_bug7284(cs, dstPtr, dstLen, srcPtr + lb, len);
ndbrequire(n != -1);
@@ -473,6 +472,7 @@
Uint32 idx= req_struct->m_var_data[MM].m_var_len_offset;
var_index= AttributeOffset::getOffset(attr_des2);
+ Uint32 charsetFlag = AttributeOffset::getCharsetFlag(attr_des2);
var_attr_pos= req_struct->m_var_data[MM].m_offset_array_ptr[var_index];
vsize_in_bytes= req_struct->m_var_data[MM].m_offset_array_ptr[var_index+idx] - var_attr_pos;
attr_descriptor= req_struct->attr_descriptor;
@@ -483,21 +483,57 @@
new_index= index_buf + vsize_in_words;
ndbrequire(vsize_in_words <= max_var_size);
- if (new_index <= max_read) {
- ljam();
- ah_out->setDataSize(vsize_in_words);
- memcpy(out_buffer+index_buf,
- req_struct->m_var_data[MM].m_data_ptr+var_attr_pos,
- vsize_in_bytes);
- char* rest= (char*)(out_buffer+index_buf);
- memset(rest+vsize_in_bytes, 0, 4*vsize_in_words - vsize_in_bytes);
- req_struct->out_buf_index= new_index;
- return true;
- } else {
+ if (! charsetFlag || ! req_struct->xfrm_flag)
+ {
+ if (new_index <= max_read) {
+ ljam();
+ ah_out->setDataSize(vsize_in_words);
+ memcpy(out_buffer+index_buf,
+ req_struct->m_var_data[MM].m_data_ptr+var_attr_pos,
+ vsize_in_bytes);
+ char* rest= (char*)(out_buffer+index_buf);
+ memset(rest+vsize_in_bytes, 0, 4*vsize_in_words - vsize_in_bytes);
+ req_struct->out_buf_index= new_index;
+ return true;
+ }
+ }
+ else
+ {
ljam();
- terrorCode= ZTRY_TO_READ_TOO_MUCH_ERROR;
- return false;
+ Tablerec* regTabPtr = tabptr.p;
+ Uint32 srcBytes = vsize_in_bytes;
+ uchar* dstPtr = (uchar*)(out_buffer+index_buf);
+ const uchar* srcPtr = (uchar*)(req_struct->m_var_data[MM].m_data_ptr+var_attr_pos);
+ Uint32 i = AttributeOffset::getCharsetPos(attr_des2);
+ ndbrequire(i < regTabPtr->noOfCharsets);
+ CHARSET_INFO* cs = regTabPtr->charsetArray[i];
+ Uint32 typeId = AttributeDescriptor::getType(attr_descriptor);
+ Uint32 lb, len;
+ bool ok = NdbSqlUtil::get_var_length(typeId, srcPtr, srcBytes, lb, len);
+ Uint32 xmul = cs->strxfrm_multiply;
+ if (xmul == 0)
+ xmul = 1;
+ Uint32 dstLen = xmul * (srcBytes - lb);
+ Uint32 maxIndexBuf = index_buf + (dstLen >> 2);
+ if (maxIndexBuf <= max_read && ok) {
+ ljam();
+ const char* ssrcPtr = (const char*)srcPtr;
+ int n = NdbSqlUtil::strnxfrm_bug7284(cs, dstPtr, dstLen, srcPtr + lb, len);
+ ndbrequire(n != -1);
+ while ((n & 3) != 0) {
+ dstPtr[n++] = 0;
+ }
+ Uint32 dstWords = (n >> 2);
+ ah_out->setDataSize(dstWords);
+ Uint32 newIndexBuf = index_buf + dstWords;
+ ndbrequire(newIndexBuf <= max_read);
+ req_struct->out_buf_index = newIndexBuf;
+ return true;
+ }
}
+ ljam();
+ terrorCode= ZTRY_TO_READ_TOO_MUCH_ERROR;
+ return false;
}
bool
@@ -589,7 +625,6 @@
Uint32 maxIndexBuf = indexBuf + (dstLen >> 2);
if (maxIndexBuf <= maxRead && ok) {
ljam();
- uchar* dstPtr = (uchar*)&outBuffer[indexBuf];
const char* ssrcPtr = (const char*)srcPtr;
int n = NdbSqlUtil::strnxfrm_bug7284(cs, dstPtr, dstLen, srcPtr + lb, len);
ndbrequire(n != -1);
@@ -918,6 +953,7 @@
MEMCOPY_NO_WORDS(&tuple_header[updateOffset],
&inBuffer[indexBuf + 1],
noOfWords);
+
return true;
} else {
ljam();
@@ -996,8 +1032,8 @@
var_data_start= req_struct->m_var_data[MM].m_data_ptr;
vpos_array[var_index+idx]= var_attr_pos+size_in_bytes;
req_struct->in_buf_index= new_index;
-
- ndbrequire(var_attr_pos+vsize_in_words*4 <= check_offset);
+
+ ndbrequire(var_attr_pos+size_in_bytes <= check_offset);
memcpy(var_data_start+var_attr_pos, &in_buffer[index_buf + 1],
size_in_bytes);
return true;
@@ -1380,7 +1416,7 @@
vpos_array[var_index+idx]= var_attr_pos+size_in_bytes;
req_struct->in_buf_index= new_index;
- ndbrequire(var_attr_pos+vsize_in_words*4 <= check_offset);
+ ndbrequire(var_attr_pos+size_in_bytes <= check_offset);
memcpy(var_data_start+var_attr_pos, &in_buffer[index_buf + 1],
size_in_bytes);
return true;
--- 1.16/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp Wed Mar 30 18:01:23 2005
+++ 1.17/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp Thu Mar 31 20:59:24 2005
@@ -772,6 +772,9 @@
//--------------------------------------------------------------------
// Read Primary Key Values
//--------------------------------------------------------------------
+ if (regTabPtr->need_expand(false)) // no disk
+ prepare_read(req_struct, regTabPtr, false); // setup varsize
+
int ret = readAttributes(req_struct,
&tableDescriptor[regTabPtr->readKeyArray].tabDescr,
regTabPtr->noOfKeyAttr,
@@ -853,6 +856,9 @@
req_struct->m_tuple_ptr= (Tuple_header*)ptr;
}
+
+ if (regTabPtr->need_expand(false)) // no disk
+ prepare_read(req_struct, regTabPtr, false); // setup varsize
int ret = readAttributes(req_struct,
&readBuffer[0],
--- 1.30/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp Fri Feb 25 10:46:25 2005
+++ 1.31/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp Thu Mar 31 20:59:24 2005
@@ -819,9 +819,10 @@
{
Var_page* tmp_page_header;
Uint32 current_head= frag_ptr->free_var_page_array[index];
+ Uint32 pagePtrI = page_header->physical_page_id;
page_header->next_page= current_head;
ndbassert(index < MAX_FREE_LIST);
- frag_ptr->free_var_page_array[index]= page_header->physical_page_id;
+ frag_ptr->free_var_page_array[index]= pagePtrI;
page_header->prev_page= RNIL;
page_header->list_index= index;
if (current_head != RNIL) {
@@ -830,7 +831,7 @@
head_page_ptr.i= current_head;
ptrCheckGuard(head_page_ptr, cnoOfPage, page);
tmp_page_header= (Var_page*)head_page_ptr.p;
- tmp_page_header->prev_page= page_header->physical_page_id;
+ tmp_page_header->prev_page= pagePtrI;
}
}
--- 1.34/ndb/src/ndbapi/ndberror.c Wed Mar 23 07:45:05 2005
+++ 1.35/ndb/src/ndbapi/ndberror.c Thu Mar 31 20:59:24 2005
@@ -349,6 +349,7 @@
{ 745, SE, "Distribution key not supported for char attribute (use binary attribute)" },
{ 755, SE, "Invalid tablespace" },
{ 756, SE, "Index on disk column is not supported" },
+ { 757, SE, "Varsize bitfield not supported" },
{ 241, SE, "Invalid schema object version" },
{ 283, SE, "Table is being dropped" },
{ 284, SE, "Table not defined in transaction coordinator" },
| Thread |
|---|
| • bk commit into 5.1-ndb tree (joreland:1.1812) | jonas.oreland | 31 Mar |