Commit 87a43166 authored by heikki@hundin.mysql.fi's avatar heikki@hundin.mysql.fi
Browse files

opt_range.cc:

  Fix the crash in InnoDB when WHERE primarykey < x ORDER BY primarykey is used
parent 5fcc80ff
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -2623,13 +2623,19 @@ int QUICK_SELECT_DESC::get_next()
    }
    else
    {
      /* Heikki changed Sept 11, 2002: since InnoDB does not store the cursor
	 position if READ_KEY_EXACT is used to a primary key with all
	 key columns specified, we must use below HA_READ_KEY_OR_NEXT,
	 so that InnoDB stores the cursor position and is able to move
	 the cursor one step backward after the search. */

      DBUG_ASSERT(range->flag & NEAR_MAX || range_reads_after_key(range));
      /* Note: even if max_key is only a prefix, HA_READ_AFTER_KEY will
       * do the right thing - go past all keys which match the prefix */
      result=file->index_read(record, (byte*) range->max_key,
			      range->max_length,
			      ((range->flag & NEAR_MAX) ?
			       HA_READ_KEY_EXACT : HA_READ_AFTER_KEY));
			       HA_READ_KEY_OR_NEXT : HA_READ_AFTER_KEY));
      result = file->index_prev(record);
    }
    if (result)