Commit 22f8f391 authored by unknown's avatar unknown
Browse files

Bug #27320 ndb handler does not reset extra flags on reset()

- make sure all extra flags are reset

parent 49f2196d
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -3282,8 +3282,7 @@ int ha_ndbcluster::extra(enum ha_extra_function operation)
    break;
  case HA_EXTRA_RESET:                 /* Reset database to after open */
    DBUG_PRINT("info", ("HA_EXTRA_RESET"));
    DBUG_PRINT("info", ("Clearing condition stack"));
    cond_clear();
    reset();
    break;
  case HA_EXTRA_CACHE:                 /* Cash record in HA_rrnd() */
    DBUG_PRINT("info", ("HA_EXTRA_CACHE"));
@@ -3405,6 +3404,21 @@ int ha_ndbcluster::extra(enum ha_extra_function operation)
  DBUG_RETURN(0);
}


int ha_ndbcluster::reset()
{
  DBUG_ENTER("ha_ndbcluster::reset");
  cond_clear();

  /* reset flags set by extra calls */
  m_retrieve_all_fields= FALSE;
  m_retrieve_primary_key= FALSE;
  m_ignore_dup_key= FALSE;
  m_use_write= FALSE;
  DBUG_RETURN(0);
}


/* 
   Start of an insert, remember number of rows to be inserted, it will
   be used in write_row and get_autoincrement to send an optimal number
+1 −0
Original line number Diff line number Diff line
@@ -553,6 +553,7 @@ class ha_ndbcluster: public handler
  int info(uint);
  int extra(enum ha_extra_function operation);
  int extra_opt(enum ha_extra_function operation, ulong cache_size);
  int reset();
  int external_lock(THD *thd, int lock_type);
  void unlock_row();
  int start_stmt(THD *thd, thr_lock_type lock_type);