diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-04-27 20:41:31 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-04-27 20:41:31 +0300 |
commit | 4d59f45260547b3230f177498b6fa07a12647fdc (patch) | |
tree | c39c6757a7a7ddbc4849769b288c0131da74803d /sql/handler.cc | |
parent | acf6f92aa936fbfe7524617ae57d011ab8f1f96d (diff) | |
parent | 00377147e3029b982cbc29d3f4477362c6e6fdb4 (diff) | |
download | mariadb-git-4d59f45260547b3230f177498b6fa07a12647fdc.tar.gz |
Merge 10.2 into 10.3
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index 6329774668f..f39cb55c7f6 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2841,8 +2841,7 @@ int handler::ha_rnd_pos(uchar *buf, uchar *pos) DBUG_ENTER("handler::ha_rnd_pos"); DBUG_ASSERT(table_share->tmp_table != NO_TMP_TABLE || m_lock_type != F_UNLCK); - /* TODO: Find out how to solve ha_rnd_pos when finding duplicate update. */ - /* DBUG_ASSERT(inited == RND); */ + DBUG_ASSERT(inited == RND); TABLE_IO_WAIT(tracker, m_psi, PSI_TABLE_FETCH_ROW, MAX_KEY, 0, { result= rnd_pos(buf, pos); }) @@ -3521,6 +3520,10 @@ void handler::get_auto_increment(ulonglong offset, ulonglong increment, ulonglong nr; int error; MY_BITMAP *old_read_set; + bool rnd_inited= (inited == RND); + + if (rnd_inited && ha_rnd_end()) + return; old_read_set= table->prepare_for_keyread(table->s->next_number_index); @@ -3530,6 +3533,10 @@ void handler::get_auto_increment(ulonglong offset, ulonglong increment, DBUG_ASSERT(0); (void) extra(HA_EXTRA_NO_KEYREAD); *first_value= ULONGLONG_MAX; + if (rnd_inited && ha_rnd_init_with_error(0)) + { + //TODO: it would be nice to return here an error + } return; } @@ -3576,6 +3583,10 @@ void handler::get_auto_increment(ulonglong offset, ulonglong increment, ha_index_end(); table->restore_column_maps_after_keyread(old_read_set); *first_value= nr; + if (rnd_inited && ha_rnd_init_with_error(0)) + { + //TODO: it would be nice to return here an error + } return; } |