diff options
author | unknown <tulin@dl145c.mysql.com> | 2005-05-17 10:17:53 +0200 |
---|---|---|
committer | unknown <tulin@dl145c.mysql.com> | 2005-05-17 10:17:53 +0200 |
commit | 598df75bc9d90e54cecca628720f0bf0afca10ec (patch) | |
tree | 320a07380be981cea236c080c4226cbe9ae60b4f /storage | |
parent | d7451f735ea3c85072c7ccc0d504098c3fe8ade1 (diff) | |
parent | 9b07cafe1e7a1230218c06f85b88f68b5741c9ef (diff) | |
download | mariadb-git-598df75bc9d90e54cecca628720f0bf0afca10ec.tar.gz |
merge
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/table.cc:
Auto merged
sql/unireg.cc:
Auto merged
storage/innobase/row/row0mysql.c:
Auto merged
storage/myisam/mi_create.c:
Auto merged
storage/myisam/mi_dynrec.c:
Auto merged
storage/myisam/mi_key.c:
Auto merged
storage/myisam/mi_locking.c:
Auto merged
storage/myisam/mi_static.c:
Auto merged
storage/myisam/mi_statrec.c:
Auto merged
storage/myisam/mi_write.c:
Auto merged
storage/myisam/myisamdef.h:
Auto merged
storage/ndb/src/cw/cpcd/APIService.cpp:
Auto merged
storage/ndb/src/cw/cpcd/APIService.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Auto merged
storage/ndb/test/ndbapi/testNodeRestart.cpp:
Auto merged
storage/ndb/test/ndbapi/testScan.cpp:
Auto merged
storage/ndb/test/run-test/main.cpp:
Auto merged
storage/ndb/test/run-test/run-test.hpp:
Auto merged
Diffstat (limited to 'storage')
-rw-r--r-- | storage/innobase/row/row0mysql.c | 12 | ||||
-rw-r--r-- | storage/myisam/mi_create.c | 7 | ||||
-rw-r--r-- | storage/myisam/mi_dynrec.c | 12 | ||||
-rw-r--r-- | storage/myisam/mi_key.c | 31 | ||||
-rw-r--r-- | storage/myisam/mi_locking.c | 45 | ||||
-rw-r--r-- | storage/myisam/mi_static.c | 7 | ||||
-rw-r--r-- | storage/myisam/mi_statrec.c | 3 | ||||
-rw-r--r-- | storage/myisam/mi_write.c | 3 | ||||
-rw-r--r-- | storage/myisam/myisamdef.h | 3 | ||||
-rw-r--r-- | storage/ndb/src/cw/cpcd/APIService.cpp | 15 | ||||
-rw-r--r-- | storage/ndb/src/cw/cpcd/APIService.hpp | 1 | ||||
-rw-r--r-- | storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 16 | ||||
-rw-r--r-- | storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp | 2 | ||||
-rw-r--r-- | storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp | 4 | ||||
-rw-r--r-- | storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp | 2 | ||||
-rw-r--r-- | storage/ndb/test/ndbapi/testScan.cpp | 1 |
16 files changed, 118 insertions, 46 deletions
diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index 7f78a5b723b..fd720046e31 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -1885,10 +1885,18 @@ row_create_table_for_mysql( trx_general_rollback_for_mysql(trx, FALSE, NULL); if (err == DB_OUT_OF_FILE_SPACE) { - fputs("InnoDB: Warning: cannot create table ", stderr); + ut_print_timestamp(stderr); + + fputs(" InnoDB: Warning: cannot create table ", + stderr); ut_print_name(stderr, trx, table->name); fputs(" because tablespace full\n", stderr); - row_drop_table_for_mysql(table->name, trx, FALSE); + + if (dict_table_get_low(table->name)) { + + row_drop_table_for_mysql(table->name, trx, + FALSE); + } } else if (err == DB_DUPLICATE_KEY) { ut_print_timestamp(stderr); diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c index 8635d6bcf36..12b03e65baa 100644 --- a/storage/myisam/mi_create.c +++ b/storage/myisam/mi_create.c @@ -191,11 +191,10 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, test(test_all_bits(options, HA_OPTION_CHECKSUM | HA_PACK_RECORD)); min_pack_length+=packed; - if (!ci->data_file_length) + if (!ci->data_file_length && ci->max_rows) { - if (ci->max_rows == 0 || pack_reclength == INT_MAX32) - ci->data_file_length= INT_MAX32-1; /* Should be enough */ - else if ((~(ulonglong) 0)/ci->max_rows < (ulonglong) pack_reclength) + if (pack_reclength == INT_MAX32 || + (~(ulonglong) 0)/ci->max_rows < (ulonglong) pack_reclength) ci->data_file_length= ~(ulonglong) 0; else ci->data_file_length=(ulonglong) ci->max_rows*pack_reclength; diff --git a/storage/myisam/mi_dynrec.c b/storage/myisam/mi_dynrec.c index 3a4dafade23..8de500a7351 100644 --- a/storage/myisam/mi_dynrec.c +++ b/storage/myisam/mi_dynrec.c @@ -149,7 +149,9 @@ static int write_dynamic_record(MI_INFO *info, const byte *record, { if (_mi_find_writepos(info,reclength,&filepos,&length)) goto err; - if (_mi_write_part_record(info,filepos,length,info->s->state.dellink, + if (_mi_write_part_record(info,filepos,length, + (info->append_insert_at_end ? + HA_OFFSET_ERROR : info->s->state.dellink), (byte**) &record,&reclength,&flag)) goto err; } while (reclength); @@ -171,7 +173,8 @@ static int _mi_find_writepos(MI_INFO *info, ulong tmp; DBUG_ENTER("_mi_find_writepos"); - if (info->s->state.dellink != HA_OFFSET_ERROR) + if (info->s->state.dellink != HA_OFFSET_ERROR && + !info->append_insert_at_end) { /* Deleted blocks exists; Get last used block */ *filepos=info->s->state.dellink; @@ -420,8 +423,9 @@ int _mi_write_part_record(MI_INFO *info, else if (length-long_block < *reclength+4) { /* To short block */ if (next_filepos == HA_OFFSET_ERROR) - next_filepos=info->s->state.dellink != HA_OFFSET_ERROR ? - info->s->state.dellink : info->state->data_file_length; + next_filepos= (info->s->state.dellink != HA_OFFSET_ERROR && + !info->append_insert_at_end ? + info->s->state.dellink : info->state->data_file_length); if (*flag == 0) /* First block */ { if (*reclength > MI_MAX_BLOCK_LENGTH) diff --git a/storage/myisam/mi_key.c b/storage/myisam/mi_key.c index d7d10e116aa..9fb673483ea 100644 --- a/storage/myisam/mi_key.c +++ b/storage/myisam/mi_key.c @@ -329,8 +329,25 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old, } /* _mi_pack_key */ - /* Put a key in record */ - /* Used when only-keyread is wanted */ + +/* + Store found key in record + + SYNOPSIS + _mi_put_key_in_record() + info MyISAM handler + keynr Key number that was used + record Store key here + + Last read key is in info->lastkey + + NOTES + Used when only-keyread is wanted + + RETURN + 0 ok + 1 error +*/ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr, byte *record) @@ -341,14 +358,8 @@ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr, byte *blob_ptr; DBUG_ENTER("_mi_put_key_in_record"); - if (info->s->base.blobs && info->s->keyinfo[keynr].flag & HA_VAR_LENGTH_KEY) - { - if (!(blob_ptr= - mi_alloc_rec_buff(info, info->s->keyinfo[keynr].keylength, - &info->rec_buff))) - goto err; - } - key=(byte*) info->lastkey; + blob_ptr= info->lastkey2; /* Place to put blob parts */ + key=(byte*) info->lastkey; /* KEy that was read */ key_end=key+info->lastkey_length; for (keyseg=info->s->keyinfo[keynr].seg ; keyseg->type ;keyseg++) { diff --git a/storage/myisam/mi_locking.c b/storage/myisam/mi_locking.c index 789d74680ef..8d48c5242e5 100644 --- a/storage/myisam/mi_locking.c +++ b/storage/myisam/mi_locking.c @@ -238,13 +238,24 @@ int mi_lock_database(MI_INFO *info, int lock_type) The following functions are called by thr_lock() in threaded applications ****************************************************************************/ -void mi_get_status(void* param) +/* + Create a copy of the current status for the table + + SYNOPSIS + mi_get_status() + param Pointer to Myisam handler + concurrent_insert Set to 1 if we are going to do concurrent inserts + (THR_WRITE_CONCURRENT_INSERT was used) +*/ + +void mi_get_status(void* param, int concurrent_insert) { MI_INFO *info=(MI_INFO*) param; DBUG_ENTER("mi_get_status"); - DBUG_PRINT("info",("key_file: %ld data_file: %ld", + DBUG_PRINT("info",("key_file: %ld data_file: %ld concurrent_insert: %d", (long) info->s->state.state.key_file_length, - (long) info->s->state.state.data_file_length)); + (long) info->s->state.state.data_file_length, + concurrent_insert)); #ifndef DBUG_OFF if (info->state->key_file_length > info->s->state.state.key_file_length || info->state->data_file_length > info->s->state.state.data_file_length) @@ -254,9 +265,11 @@ void mi_get_status(void* param) #endif info->save_state=info->s->state.state; info->state= &info->save_state; + info->append_insert_at_end= concurrent_insert; DBUG_VOID_RETURN; } + void mi_update_status(void* param) { MI_INFO *info=(MI_INFO*) param; @@ -281,6 +294,7 @@ void mi_update_status(void* param) info->s->state.state= *info->state; info->state= &info->s->state.state; } + info->append_insert_at_end= 0; /* We have to flush the write cache here as other threads may start @@ -307,20 +321,37 @@ void mi_copy_status(void* to,void *from) Check if should allow concurrent inserts IMPLEMENTATION - Don't allow concurrent inserts if we have a hole in the table. + Allow concurrent inserts if we don't have a hole in the table or + if there is no active write lock and there is active read locks and + myisam_concurrent_insert == 2. In this last case the new + row('s) are inserted at end of file instead of filling up the hole. + + The last case is to allow one to inserts into a heavily read-used table + even if there is holes. NOTES - Rtree indexes are disabled in mi_open() + If there is a an rtree indexes in the table, concurrent inserts are + disabled in mi_open() RETURN 0 ok to use concurrent inserts 1 not ok */ -my_bool mi_check_status(void* param) +my_bool mi_check_status(void *param) { MI_INFO *info=(MI_INFO*) param; - return (my_bool) (info->s->state.dellink != HA_OFFSET_ERROR); + /* + The test for w_locks == 1 is here because this thread has already done an + external lock (in other words: w_locks == 1 means no other threads has + a write lock) + */ + DBUG_PRINT("info",("dellink: %ld r_locks: %u w_locks: %u", + (long) info->s->state.dellink, (uint) info->s->r_locks, + (uint) info->s->w_locks)); + return (my_bool) !(info->s->state.dellink == HA_OFFSET_ERROR || + (myisam_concurrent_insert == 2 && info->s->r_locks && + info->s->w_locks == 1)); } diff --git a/storage/myisam/mi_static.c b/storage/myisam/mi_static.c index f41aeff8453..4c9d814f7d6 100644 --- a/storage/myisam/mi_static.c +++ b/storage/myisam/mi_static.c @@ -31,14 +31,13 @@ uchar NEAR myisam_pack_file_magic[]= my_string myisam_log_filename=(char*) "myisam.log"; File myisam_log_file= -1; uint myisam_quick_table_bits=9; -uint myisam_block_size=MI_KEY_BLOCK_LENGTH; /* Best by test */ +ulong myisam_block_size= MI_KEY_BLOCK_LENGTH; /* Best by test */ my_bool myisam_flush=0, myisam_delay_key_write=0, myisam_single_user=0; #if defined(THREAD) && !defined(DONT_USE_RW_LOCKS) -my_bool myisam_concurrent_insert=1; +ulong myisam_concurrent_insert= 2; #else -my_bool myisam_concurrent_insert=0; +ulong myisam_concurrent_insert= 0; #endif -my_off_t myisam_max_extra_temp_length= (my_off_t)MI_MAX_TEMP_LENGTH; my_off_t myisam_max_temp_length= MAX_FILE_SIZE; ulong myisam_bulk_insert_tree_size=8192*1024; ulong myisam_data_pointer_size=4; diff --git a/storage/myisam/mi_statrec.c b/storage/myisam/mi_statrec.c index 8f5cde45e24..42352f63c66 100644 --- a/storage/myisam/mi_statrec.c +++ b/storage/myisam/mi_statrec.c @@ -23,7 +23,8 @@ int _mi_write_static_record(MI_INFO *info, const byte *record) { uchar temp[8]; /* max pointer length */ - if (info->s->state.dellink != HA_OFFSET_ERROR) + if (info->s->state.dellink != HA_OFFSET_ERROR && + !info->append_insert_at_end) { my_off_t filepos=info->s->state.dellink; info->rec_cache.seek_not_done=1; /* We have done a seek */ diff --git a/storage/myisam/mi_write.c b/storage/myisam/mi_write.c index 5d7e245c58f..dd062b79769 100644 --- a/storage/myisam/mi_write.c +++ b/storage/myisam/mi_write.c @@ -67,7 +67,8 @@ int mi_write(MI_INFO *info, byte *record) MYF(MY_SEEK_NOT_DONE) | info->lock_wait)) goto err; #endif - filepos= ((share->state.dellink != HA_OFFSET_ERROR) ? + filepos= ((share->state.dellink != HA_OFFSET_ERROR && + !info->append_insert_at_end) ? share->state.dellink : info->state->data_file_length); diff --git a/storage/myisam/myisamdef.h b/storage/myisam/myisamdef.h index a2d3dedf6df..5688b377d3d 100644 --- a/storage/myisam/myisamdef.h +++ b/storage/myisam/myisamdef.h @@ -271,6 +271,7 @@ struct st_myisam_info { uint preload_buff_size; /* When preloading indexes */ myf lock_wait; /* is 0 or MY_DONT_WAIT */ my_bool was_locked; /* Was locked in panic */ + my_bool append_insert_at_end; /* Set if concurrent insert */ my_bool quick_mode; my_bool page_changed; /* If info->buff can't be used for rnext */ my_bool buff_used; /* If info->buff has to be reread for rnext */ @@ -702,7 +703,7 @@ int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def, const byte *record, my_off_t pos); int mi_unique_comp(MI_UNIQUEDEF *def, const byte *a, const byte *b, my_bool null_are_equal); -void mi_get_status(void* param); +void mi_get_status(void* param, int concurrent_insert); void mi_update_status(void* param); void mi_copy_status(void* to,void *from); my_bool mi_check_status(void* param); diff --git a/storage/ndb/src/cw/cpcd/APIService.cpp b/storage/ndb/src/cw/cpcd/APIService.cpp index b009f0c0fc4..e7a2092c15d 100644 --- a/storage/ndb/src/cw/cpcd/APIService.cpp +++ b/storage/ndb/src/cw/cpcd/APIService.cpp @@ -136,6 +136,8 @@ ParserRow<CPCDAPISession> commands[] = CPCD_ARG("id", Int, Mandatory, "Id of process"), CPCD_CMD("list processes", &CPCDAPISession::listProcesses, ""), + + CPCD_CMD("show version", &CPCDAPISession::showVersion, ""), CPCD_END() }; @@ -359,6 +361,7 @@ CPCDAPISession::listProcesses(Parser_t::Context & /* unused */, m_output->println("stdout: %s", p->m_stdout.c_str()); m_output->println("stderr: %s", p->m_stderr.c_str()); m_output->println("ulimit: %s", p->m_ulimit.c_str()); + m_output->println("shutdown: %s", p->m_shutdown_options.c_str()); switch(p->m_status){ case STOPPED: m_output->println("status: stopped"); @@ -384,4 +387,16 @@ CPCDAPISession::listProcesses(Parser_t::Context & /* unused */, m_cpcd.m_processes.unlock(); } +void +CPCDAPISession::showVersion(Parser_t::Context & /* unused */, + const class Properties & args){ + Uint32 id; + CPCD::RequestStatus rs; + + m_output->println("show version"); + m_output->println("compile time: %s %s", __DATE__, __TIME__); + + m_output->println(""); +} + template class Vector<ParserRow<CPCDAPISession> const*>; diff --git a/storage/ndb/src/cw/cpcd/APIService.hpp b/storage/ndb/src/cw/cpcd/APIService.hpp index ef988785f89..3586d64187e 100644 --- a/storage/ndb/src/cw/cpcd/APIService.hpp +++ b/storage/ndb/src/cw/cpcd/APIService.hpp @@ -49,6 +49,7 @@ public: void stopProcess(Parser_t::Context & ctx, const class Properties & args); void showProcess(Parser_t::Context & ctx, const class Properties & args); void listProcesses(Parser_t::Context & ctx, const class Properties & args); + void showVersion(Parser_t::Context & ctx, const class Properties & args); }; class CPCDAPIService : public SocketServer::Service { diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 0b68bc966d6..d51f9537154 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -1013,7 +1013,7 @@ void Dbdict::readSchemaConf(Signal* signal, ndbrequire(rr.firstPage == 0); SchemaFile * sf = &xsf->schemaPage[0]; Uint32 noOfPages; - if (sf->NdbVersion < NDB_SF_VERSION_5_0_5) { + if (sf->NdbVersion < NDB_SF_VERSION_5_0_6) { jam(); const Uint32 pageSize_old = 32 * 1024; noOfPages = pageSize_old / NDB_SF_PAGE_SIZE - 1; @@ -1032,8 +1032,8 @@ void Dbdict::readSchemaConf(Signal* signal, SchemaFile * sf0 = &xsf->schemaPage[0]; xsf->noOfPages = sf0->FileSize / NDB_SF_PAGE_SIZE; - if (sf0->NdbVersion < NDB_SF_VERSION_5_0_5 && - ! convertSchemaFileTo_5_0_5(xsf)) { + if (sf0->NdbVersion < NDB_SF_VERSION_5_0_6 && + ! convertSchemaFileTo_5_0_6(xsf)) { jam(); ndbrequire(! crashInd); ndbrequire(fsPtr.p->fsState == FsConnectRecord::READ_SCHEMA1); @@ -1113,7 +1113,7 @@ void Dbdict::closeReadSchemaConf(Signal* signal, }//Dbdict::closeReadSchemaConf() bool -Dbdict::convertSchemaFileTo_5_0_5(XSchemaFile * xsf) +Dbdict::convertSchemaFileTo_5_0_6(XSchemaFile * xsf) { const Uint32 pageSize_old = 32 * 1024; Uint32 page_old[pageSize_old >> 2]; @@ -2175,8 +2175,8 @@ void Dbdict::execSCHEMA_INFO(Signal* signal) releaseSections(signal); SchemaFile * sf0 = &xsf->schemaPage[0]; - if (sf0->NdbVersion < NDB_SF_VERSION_5_0_5) { - bool ok = convertSchemaFileTo_5_0_5(xsf); + if (sf0->NdbVersion < NDB_SF_VERSION_5_0_6) { + bool ok = convertSchemaFileTo_5_0_6(xsf); ndbrequire(ok); } @@ -11922,8 +11922,8 @@ Dbdict::initSchemaFile(XSchemaFile * xsf, Uint32 firstPage, Uint32 lastPage, memset(sf, 0, NDB_SF_PAGE_SIZE); Uint32 ndb_version = NDB_VERSION; - if (ndb_version < NDB_SF_VERSION_5_0_5) - ndb_version = NDB_SF_VERSION_5_0_5; + if (ndb_version < NDB_SF_VERSION_5_0_6) + ndb_version = NDB_SF_VERSION_5_0_6; memcpy(sf->Magic, NDB_SF_MAGIC, sizeof(sf->Magic)); sf->ByteOrder = 0x12345678; diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp index 54a67fc8452..68bb9b628d4 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp +++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp @@ -1703,7 +1703,7 @@ private: void readSchemaRef(Signal* signal, FsConnectRecordPtr fsPtr); void closeReadSchemaConf(Signal* signal, FsConnectRecordPtr fsPtr); - bool convertSchemaFileTo_5_0_5(XSchemaFile*); + bool convertSchemaFileTo_5_0_6(XSchemaFile*); /* ------------------------------------------------------------ */ // Get table definitions diff --git a/storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp b/storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp index 11bd0992711..0226991a073 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp +++ b/storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp @@ -35,7 +35,7 @@ #define NDB_SF_MAX_PAGES 160 // versions where format changed -#define NDB_SF_VERSION_5_0_5 MAKE_VERSION(5, 0, 5) +#define NDB_SF_VERSION_5_0_6 MAKE_VERSION(5, 0, 6) // One page in schema file. struct SchemaFile { @@ -71,7 +71,7 @@ struct SchemaFile { } }; - // pre-5.0.5 + // pre-5.0.6 struct TableEntry_old { Uint32 m_tableState; Uint32 m_tableVersion; diff --git a/storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp b/storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp index 254b38710c5..b9b144cd977 100644 --- a/storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp +++ b/storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp @@ -195,7 +195,7 @@ NDB_COMMAND(printSchemafile, } SchemaFile* sf = (SchemaFile *)&buf[0]; - if (sf->NdbVersion < NDB_SF_VERSION_5_0_5) + if (sf->NdbVersion < NDB_SF_VERSION_5_0_6) print_old(filename, sf); else print(filename, sf, sz); diff --git a/storage/ndb/test/ndbapi/testScan.cpp b/storage/ndb/test/ndbapi/testScan.cpp index 1fa1d4bd3ab..2802f1c950e 100644 --- a/storage/ndb/test/ndbapi/testScan.cpp +++ b/storage/ndb/test/ndbapi/testScan.cpp @@ -317,6 +317,7 @@ int runScanReadIndex(NDBT_Context* ctx, NDBT_Step* step){ g_info << i << ": "; bool sort = (rand() % 100) > 50 ? true : false; bool desc = (rand() % 100) > 50 ? true : false; + desc = false; // random causes too many deadlocks int scan_flags = (NdbScanOperation::SF_OrderBy & -(int)sort) | (NdbScanOperation::SF_Descending & -(int)desc); |