Commit 77a56a6a authored by unknown's avatar unknown
Browse files

Initialise "sorted" variable in constructor of QUICK_SELECT. The variable is...

Initialise "sorted" variable in constructor of QUICK_SELECT. The variable is set to 1 in test_if_skip_sort_order if we decide to optimize "order by" by uinsg index_read.


mysql-test/r/ndb_index_ordered.result:
  Another test to check the use of "sorted" in combination with reset_bounds()
mysql-test/t/ndb_index_ordered.test:
  Another test to check the use of "sorted" in combination with reset_bounds()
sql/ha_ndbcluster.cc:
  Check that sorted is set to 0 or 1.
sql/opt_range.cc:
  Initialise the sorted variable to zero QUICK_SELECT constructor.
parent a4475441
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -45,6 +45,16 @@ a b c
2	3	5
3	4	6
4	5	8
select a, b, c from t1 where a!=2 and c=6;
a	b	c
3	4	6
select a, b, c from t1 where a!=2 order by a;
a	b	c
1	2	3
3	4	6
4	5	8
5	6	2
6	7	2
update t1 set c = 3 where b = 3;
select * from t1 order by a;
a	b	c
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ select * from t1 where b <= 4 order by b;

# Test of reset_bounds
select tt1.* from t1 as tt1, t1 as tt2 use index(b) where tt1.b = tt2.b order by tt1.c;
select a, b, c from t1 where a!=2 and c=6;
select a, b, c from t1 where a!=2 order by a;

#
# Here we should add some "explain select" to verify that the ordered index is 
+3 −0
Original line number Diff line number Diff line
@@ -1351,6 +1351,9 @@ int ha_ndbcluster::ordered_index_scan(const key_range *start_key,
  DBUG_EXECUTE("enter", print_key(start_key, "start_key"););
  DBUG_EXECUTE("enter", print_key(end_key, "end_key"););

  // Check that sorted seems to be initialised
  DBUG_ASSERT(sorted == 0 || sorted == 1);
  
  if(m_active_cursor == 0)
  {
    restart= false;
+1 −1
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ SQL_SELECT::~SQL_SELECT()
#undef index					// Fix for Unixware 7

QUICK_SELECT::QUICK_SELECT(THD *thd, TABLE *table, uint key_nr, bool no_alloc)
  :dont_free(0),error(0),index(key_nr),max_used_key_length(0),
  :dont_free(0),sorted(0),error(0),index(key_nr),max_used_key_length(0),
   used_key_parts(0), head(table), it(ranges),range(0)
{
  if (!no_alloc)