List:Commits« Previous MessageNext Message »
From:Sergey Petrunia Date:July 16 2006 7:12pm
Subject:bk commit into 5.1 tree (sergefp:1.2230) BUG#14940
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of psergey. When psergey does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2230 06/07/16 23:12:09 sergefp@stripped +73 -0
  BUG#14940 "MySQL choose wrong index"
  - Make the range-et-al optimizer produce E(#table records after table condition is applied),
  - Make the join optimizer use this value,
  - Make "rows" column in EXPLAIN output to always show E(#table records after table cond. is applied)
  - Add "in_rows" column to EXPLAIN EXTENDED to show E(#records to be scanned).
  - Adjust test results, add comments

  sql/table.h
    1.143 06/07/16 23:10:57 sergefp@stripped +17 -0
    BUG#14940: 
     - Added TABLE::quick_condition_rows 
     - Added comments to optimizer-related members of TABLE struct
       (to be merged with Timour's comments of those)

  sql/sql_select.h
    1.110 06/07/16 23:10:57 sergefp@stripped +16 -2
    BUG#14940: Added comments to optimizer-related members of JOIN_TAB and POSITION
    (to be merged with Timour's comments of those)

  sql/sql_select.cc
    1.418 06/07/16 23:10:57 sergefp@stripped +44 -5
    BUG#14940: 
    - Make the join optimizer to use TABLE::quick_condition_rows=
      = E(#table records after filtering with table condition) 
    - Add "in_rows" column to output of EXPLAIN EXTENDED
    - Make "rows" column in EXPLAIN output to always show E(#table records after filtering)

  sql/sql_class.cc
    1.272 06/07/16 23:10:57 sergefp@stripped +6 -0
    BUG#14940: Add "in_rows" column to output of EXPLAIN EXTENDED

  sql/opt_range.cc
    1.224 06/07/16 23:10:56 sergefp@stripped +46 -17
    BUG#14940: Make range/index_merge/group-min-max optimizer produce TABLE::quick_condition_rows -
      estimate of #records that will match the table condition.

  mysql-test/t/partition_pruning.test
    1.15 06/07/16 23:10:56 sergefp@stripped +16 -0
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/t/join.test
    1.34 06/07/16 23:10:56 sergefp@stripped +19 -0
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/t/index_merge_ror.test
    1.9 06/07/16 23:10:56 sergefp@stripped +0 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/t/group_min_max.test
    1.23 06/07/16 23:10:56 sergefp@stripped +10 -10
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/t/func_like.test
    1.17 06/07/16 23:10:56 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/t/ctype_cp1250_ch.test
    1.5 06/07/16 23:10:56 sergefp@stripped +3 -0
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/view.result
    1.167 06/07/16 23:10:56 sergefp@stripped +27 -27
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/variables.result
    1.86 06/07/16 23:10:56 sergefp@stripped +6 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/varbinary.result
    1.17 06/07/16 23:10:56 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/union.result
    1.86 06/07/16 23:10:55 sergefp@stripped +8 -8
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/type_blob.result
    1.53 06/07/16 23:10:55 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/subselect.result
    1.148 06/07/16 23:10:55 sergefp@stripped +191 -191
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/ssl_compress.result
    1.6 06/07/16 23:10:55 sergefp@stripped +5 -5
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/ssl.result
    1.6 06/07/16 23:10:55 sergefp@stripped +5 -5
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/select.result
    1.133 06/07/16 23:10:55 sergefp@stripped +5 -5
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/rpl_master_pos_wait.result
    1.7 06/07/16 23:10:55 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/rpl_get_lock.result
    1.14 06/07/16 23:10:55 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/row.result
    1.24 06/07/16 23:10:55 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/range.result
    1.46 06/07/16 23:10:55 sergefp@stripped +1 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/query_cache.result
    1.76 06/07/16 23:10:55 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/partition_pruning.result
    1.18 06/07/16 23:10:55 sergefp@stripped +46 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/order_by.result
    1.52 06/07/16 23:10:54 sergefp@stripped +1 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/olap.result
    1.33 06/07/16 23:10:54 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/null.result
    1.37 06/07/16 23:10:54 sergefp@stripped +6 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/negation_elimination.result
    1.7 06/07/16 23:10:54 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/ndb_gis.result
    1.12 06/07/16 23:10:54 sergefp@stripped +30 -30
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/myisam.result
    1.84 06/07/16 23:10:54 sergefp@stripped +1 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/key.result
    1.37 06/07/16 23:10:54 sergefp@stripped +1 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/join_outer.result
    1.50 06/07/16 23:10:54 sergefp@stripped +1 -1
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/join_nested.result
    1.24 06/07/16 23:10:54 sergefp@stripped +93 -93
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/join.result
    1.40 06/07/16 23:10:54 sergefp@stripped +12 -0
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/insert_update.result
    1.21 06/07/16 23:10:54 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/innodb_gis.result
    1.7 06/07/16 23:10:54 sergefp@stripped +15 -15
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/index_merge_ror.result
    1.9 06/07/16 23:10:54 sergefp@stripped +9 -9
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/index_merge.result
    1.20 06/07/16 23:10:54 sergefp@stripped +3 -3
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/having.result
    1.27 06/07/16 23:10:54 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/group_min_max.result
    1.25 06/07/16 23:10:53 sergefp@stripped +51 -31
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/group_by.result
    1.69 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/gis.result
    1.31 06/07/16 23:10:53 sergefp@stripped +23 -23
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_time.result
    1.60 06/07/16 23:10:53 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_test.result
    1.30 06/07/16 23:10:53 sergefp@stripped +12 -12
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_system.result
    1.25 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_str.result
    1.120 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_set.result
    1.16 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_regexp.result
    1.11 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_op.result
    1.12 06/07/16 23:10:53 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_math.result
    1.37 06/07/16 23:10:53 sergefp@stripped +26 -26
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_like.result
    1.18 06/07/16 23:10:53 sergefp@stripped +10 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_in.result
    1.29 06/07/16 23:10:53 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_if.result
    1.22 06/07/16 23:10:53 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_group.result
    1.51 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_gconcat.result
    1.58 06/07/16 23:10:52 sergefp@stripped +6 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_encrypt.result
    1.9 06/07/16 23:10:52 sergefp@stripped +8 -8
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_default.result
    1.6 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_crypt.result
    1.19 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/func_compress.result
    1.17 06/07/16 23:10:52 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/fulltext.result
    1.90 06/07/16 23:10:52 sergefp@stripped +4 -4
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/date_formats.result
    1.25 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/ctype_cp1250_ch.result
    1.5 06/07/16 23:10:52 sergefp@stripped +1 -0
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/ctype_collate.result
    1.33 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/compress.result
    1.7 06/07/16 23:10:52 sergefp@stripped +5 -5
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/cast.result
    1.44 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/case.result
    1.30 06/07/16 23:10:52 sergefp@stripped +6 -6
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/binlog_stm_blackhole.result
    1.14 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/bench_count_distinct.result
    1.8 06/07/16 23:10:52 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/bdb_gis.result
    1.8 06/07/16 23:10:51 sergefp@stripped +15 -15
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/auto_increment.result
    1.43 06/07/16 23:10:51 sergefp@stripped +2 -2
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

  mysql-test/r/archive_gis.result
    1.7 06/07/16 23:10:51 sergefp@stripped +15 -15
    BUG#14940: Adjust the test results:
    - "rows" column in EXPLAIN output now always mean E(#rows after table condition was applied)
      (differences in output checked, s/EXPLAIN/EXPLAIN EXTENDED/ for cases where the old value is needed.  
    - EXPLAIN EXTENDED now has new "in_rows" column.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	sergefp
# Host:	pslp.mylan
# Root:	/home/psergey/mysql-5.1-bug14940-r3

--- 1.223/sql/opt_range.cc	2006-06-30 16:10:24 +04:00
+++ 1.224/sql/opt_range.cc	2006-07-16 23:10:56 +04:00
@@ -478,7 +478,8 @@
 static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond);
 
 static bool is_key_scan_ror(PARAM *param, uint keynr, uint8 nparts);
-static ha_rows check_quick_select(PARAM *param,uint index,SEL_ARG *key_tree);
+static ha_rows check_quick_select(PARAM *param,uint index,SEL_ARG *key_tree, 
+                                  bool update_tbl_stats);
 static ha_rows check_quick_keys(PARAM *param,uint index,SEL_ARG *key_tree,
 				char *min_key,uint min_key_flag,
 				char *max_key, uint max_key_flag);
@@ -488,6 +489,7 @@
                                      MEM_ROOT *alloc = NULL);
 static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
                                        bool index_read_must_be_used,
+                                       bool update_tbl_stats,
                                        double read_time);
 static
 TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree,
@@ -1856,6 +1858,8 @@
     In the table struct the following information is updated:
       quick_keys - Which keys can be used
       quick_rows - How many rows the key matches
+      quick_condition_rows - Estimate on number of rows that will satisfy the 
+                             entire condition.
 
   TODO
    Check if this function really needs to modify keys_to_use, and change the
@@ -2015,10 +2019,15 @@
       Notice that it can be constructed no matter if there is a range tree.
     */
     group_trp= get_best_group_min_max(&param, tree);
-    if (group_trp && group_trp->read_cost < best_read_time)
+    if (group_trp)
     {
-      best_trp= group_trp;
-      best_read_time= best_trp->read_cost;
+      param.table->quick_condition_rows= min(group_trp->records,
+                                             head->file->stats.records);
+      if (group_trp->read_cost < best_read_time)
+      {
+        best_trp= group_trp;
+        best_read_time= best_trp->read_cost;
+      }
     }
 
     if (tree)
@@ -2034,7 +2043,7 @@
         bool can_build_covering= FALSE;
 
         /* Get best 'range' plan and prepare data for making other plans */
-        if ((range_trp= get_key_scans_params(&param, tree, FALSE,
+        if ((range_trp= get_key_scans_params(&param, tree, FALSE, TRUE,
                                              best_read_time)))
         {
           best_trp= range_trp;
@@ -2077,13 +2086,16 @@
         SEL_IMERGE *imerge;
         TABLE_READ_PLAN *best_conj_trp= NULL, *new_conj_trp;
         LINT_INIT(new_conj_trp); /* no empty index_merge lists possible */
-
         DBUG_PRINT("info",("No range reads possible,"
                            " trying to construct index_merge"));
         List_iterator_fast<SEL_IMERGE> it(tree->merges);
         while ((imerge= it++))
         {
           new_conj_trp= get_best_disjunct_quick(&param, imerge, best_read_time);
+          if (new_conj_trp)
+            param.table->quick_condition_rows= 
+              min(param.table->quick_condition_rows, new_conj_trp->records);
+
           if (!best_conj_trp || (new_conj_trp && new_conj_trp->read_cost <
                                  best_conj_trp->read_cost))
             best_conj_trp= new_conj_trp;
@@ -3381,7 +3393,7 @@
   {
     DBUG_EXECUTE("info", print_sel_tree(param, *ptree, &(*ptree)->keys_map,
                                         "tree in SEL_IMERGE"););
-    if (!(*cur_child= get_key_scans_params(param, *ptree, TRUE, read_time)))
+    if (!(*cur_child= get_key_scans_params(param, *ptree, TRUE, FALSE, read_time)))
     {
       /*
         One of index scans in this index_merge is more expensive than entire
@@ -4282,6 +4294,8 @@
     ha_rows best_rows = double2rows(intersect_best->out_rows);
     if (!best_rows)
       best_rows= 1;
+    if (best_rows < param->table->quick_condition_rows)
+       param->table->quick_condition_rows= best_rows;
     trp->records= best_rows;
     trp->index_scan_costs= intersect_best->index_scan_costs;
     trp->cpk_scan= cpk_scan_used? cpk_scan: NULL;
@@ -4432,6 +4446,8 @@
   trp->read_cost= total_cost;
   trp->records= records;
   trp->cpk_scan= NULL;
+  if (records < param->table->quick_condition_rows)
+     param->table->quick_condition_rows= records;
 
   DBUG_PRINT("info",
              ("Returning covering ROR-intersect plan: cost %g, records %lu",
@@ -4456,7 +4472,8 @@
 */
 
 static TRP_RANGE *get_key_scans_params(PARAM *param, SEL_TREE *tree,
-                                       bool index_read_must_be_used,
+                                       bool index_read_must_be_used, 
+                                       bool update_tbl_stats,
                                        double read_time)
 {
   int idx;
@@ -4491,7 +4508,7 @@
       bool read_index_only= index_read_must_be_used ? TRUE :
                             (bool) param->table->used_keys.is_set(keynr);
 
-      found_records= check_quick_select(param, idx, *key);
+      found_records= check_quick_select(param, idx, *key, update_tbl_stats);
       if (param->is_ror_scan)
       {
         tree->n_ror_scans++;
@@ -6637,9 +6654,12 @@
   SYNOPSIS
     check_quick_select
       param  Parameter from test_quick_select
-      idx    Number of index to use in PARAM::key SEL_TREE::key
-      tree   Transformed selection condition, tree->key[idx] holds intervals
-             tree to be used for scanning.
+      idx               Number of index to use in tree->keys
+      tree              Transformed selection condition, tree->keys[idx]
+                        holds the range tree to be used for scanning.
+      update_tbl_stats  If true, update table->quick_keys with information
+                        about range scan we've evaluated.
+
   NOTES
     param->is_ror_scan is set to reflect if the key scan is a ROR (see
     is_key_scan_ror function for more info)
@@ -6653,7 +6673,7 @@
 */
 
 static ha_rows
-check_quick_select(PARAM *param,uint idx,SEL_ARG *tree)
+check_quick_select(PARAM *param,uint idx,SEL_ARG *tree, bool update_tbl_stats)
 {
   ha_rows records;
   bool    cpk_scan;
@@ -6694,10 +6714,19 @@
   records=check_quick_keys(param,idx,tree,param->min_key,0,param->max_key,0);
   if (records != HA_POS_ERROR)
   {
-    param->table->quick_keys.set_bit(key);
+    if (update_tbl_stats)
+    {
+      param->table->quick_keys.set_bit(key);
+      param->table->quick_key_parts[key]=param->max_key_part+1;
+      param->table->quick_n_ranges[key]= param->n_ranges;
+      param->table->quick_condition_rows=
+        min(param->table->quick_condition_rows, records);
+    }
+    /*
+      Need to save quick_rows in any case as it is used when calculating
+      cost of ROR intersection:
+    */
     param->table->quick_rows[key]=records;
-    param->table->quick_key_parts[key]=param->max_key_part+1;
-    param->table->quick_n_ranges[key]= param->n_ranges;
     if (cpk_scan)
       param->is_ror_scan= TRUE;
   }
@@ -8847,7 +8876,7 @@
                                            &cur_param_idx);
       /* Check if this range tree can be used for prefix retrieval. */
       cur_quick_prefix_records= check_quick_select(param, cur_param_idx,
-                                                    cur_index_tree);
+                                                    cur_index_tree, TRUE);
     }
     cost_group_min_max(table, cur_index_info, used_key_parts,
                        cur_group_key_parts, tree, cur_index_tree,

--- 1.271/sql/sql_class.cc	2006-06-30 16:08:17 +04:00
+++ 1.272/sql/sql_class.cc	2006-07-16 23:10:57 +04:00
@@ -850,6 +850,12 @@
   field_list.push_back(item=new Item_empty_string("ref",
 						  NAME_LEN*MAX_REF_PARTS, cs));
   item->maybe_null=1;
+  if (lex->describe & DESCRIBE_EXTENDED)
+  {
+    field_list.push_back(item= new Item_return_int("in_rows", 10,
+                                                   MYSQL_TYPE_LONGLONG));
+    item->maybe_null=1;
+  }
   field_list.push_back(item= new Item_return_int("rows", 10,
                                                  MYSQL_TYPE_LONGLONG));
   item->maybe_null= 1;

--- 1.417/sql/sql_select.cc	2006-06-30 16:10:24 +04:00
+++ 1.418/sql/sql_select.cc	2006-07-16 23:10:57 +04:00
@@ -2074,6 +2074,7 @@
     s->key_dependent= 0;
     if (tables->schema_table)
       table->file->stats.records= 2;
+    table->quick_condition_rows= table->file->records();
 
     s->on_expr_ref= &tables->on_expr;
     if (*s->on_expr_ref)
@@ -3754,15 +3755,22 @@
   {                                             // Check full join
     ha_rows rnd_records= s->found_records;
     /*
-      If there is a restriction on the table, assume that 25% of the
-      rows can be skipped on next part.
-      This is to force tables that this table depends on before this
-      table
+      If there is a restriction on the table (i.e. ref analyzer found at 
+      least one "table.keyXpartY= ..."), assume that 25% of the rows can be
+      skipped on next part.
+      This is to force tables that this table depends on before this table
     */
     if (found_constraint)
       rnd_records-= rnd_records/4;
 
     /*
+      If applicable, get a more accurate estimate. Don't use the two
+      heuristics at once.
+    */
+    if (s->table->quick_condition_rows != s->found_records)
+      rnd_records= s->table->quick_condition_rows;
+
+    /*
       Range optimizer never proposes a RANGE if it isn't better
       than FULL: so if RANGE is present, it's always preferred to FULL.
       Here we estimate its cost.
@@ -3773,6 +3781,10 @@
         For each record we:
         - read record range through 'quick'
         - skip rows which does not satisfy WHERE constraints
+        TODO: 
+        We take into account possible use of join cache for ALL/index
+        access (see first else-branch below), but we don't take it into 
+        account here for range/index_merge access. Find out why this is so.
       */
       tmp= record_count *
         (s->quick->read_time +
@@ -4342,6 +4354,8 @@
     return;
 
   DBUG_ENTER("best_extension_by_limited_search");
+  DBUG_EXECUTE("opt", print_plan(join, idx, read_time, record_count, idx,
+                                 "SOFAR:"););
 
   /* 
      'join' is a partial plan with lower cost than the best plan so far,
@@ -14065,6 +14079,8 @@
       item_list.push_back(item_null);
     if (join->thd->lex->describe & DESCRIBE_PARTITIONS)
       item_list.push_back(item_null);
+    if (join->thd->lex->describe & DESCRIBE_EXTENDED)
+      item_list.push_back(item_null);
   
     item_list.push_back(new Item_string(message,strlen(message),cs));
     if (result->send_data(item_list))
@@ -14110,6 +14126,9 @@
       }
       item_list.push_back(new Item_string(table_name_buffer, len, cs));
     }
+    /* partitions */
+    if (join->thd->lex->describe & DESCRIBE_PARTITIONS)
+      item_list.push_back(item_null);
     /* type */
     item_list.push_back(new Item_string(join_type_str[JT_ALL],
 					  strlen(join_type_str[JT_ALL]),
@@ -14122,6 +14141,9 @@
     item_list.push_back(item_null);
     /* ref */
     item_list.push_back(item_null);
+    /* in_rows */
+    if (join->thd->lex->describe & DESCRIBE_EXTENDED)
+      item_list.push_back(item_null);
     /* rows */
     item_list.push_back(item_null);
     /* extra */
@@ -14277,10 +14299,27 @@
 	item_list.push_back(item_null);
 	item_list.push_back(item_null);
       }
+      
+      /* Add "in_rows" field to item_list. */
+      if (join->thd->lex->describe & DESCRIBE_EXTENDED)
+      {
+        ha_rows examined_rows;
+        if (tab->select && tab->select->quick)
+          examined_rows= tab->select->quick->records;
+        else if (tab->type == JT_NEXT || tab->type == JT_ALL)
+          examined_rows= tab->table->file->records();
+        else
+          examined_rows=(ha_rows)join->best_positions[i].records_read; 
+   
+        item_list.push_back(new Item_int((longlong) (ulonglong) examined_rows, 
+                                         21));
+      }
+
       /* Add "rows" field to item_list. */
       item_list.push_back(new Item_int((longlong) (ulonglong)
-				       join->best_positions[i]. records_read,
+				       join->best_positions[i].records_read,
 				       21));
+
       /* Build "Extra" field and add it to item_list. */
       my_bool key_read=table->key_read;
       if ((tab->type == JT_NEXT || tab->type == JT_CONST) &&

--- 1.109/sql/sql_select.h	2006-06-30 16:10:24 +04:00
+++ 1.110/sql/sql_select.h	2006-07-16 23:10:57 +04:00
@@ -128,7 +128,21 @@
   key_map	checked_keys;			/* Keys checked in find_best */
   key_map	needed_reg;
   key_map       keys;                           /* all keys with can be used */
-  ha_rows	records,found_records,read_time;
+
+  /* Either #rows in the table or 1 for const table.  */
+  ha_rows	records;
+  /*
+    Number of records that will be scanned (yes scanned, not returned) by the
+    best 'independent' access method, i.e. table scan or QUICK_*_SELECT)
+  */
+  ha_rows       found_records;
+  /*
+    Cost of accessing the table using "ALL" or range/index_merge access
+    method (but not 'index' for some reason), i.e. this matches method which
+    E(#records) is in found_records.
+  */
+  ha_rows       read_time;
+  
   table_map	dependent,key_dependent;
   uint		use_quick,index;
   uint		status;				// Save status for cache
@@ -160,7 +174,7 @@
 typedef struct st_position			/* Used in find_best */
 {
   double records_read;
-  double read_time;
+  double read_time; /* Total cost of accessing this table for the complete join */
   JOIN_TAB *table;
   KEYUSE *key;
 } POSITION;

--- 1.142/sql/table.h	2006-06-04 20:23:57 +04:00
+++ 1.143/sql/table.h	2006-07-16 23:10:57 +04:00
@@ -264,10 +264,27 @@
   MY_BITMAP     *read_set, *write_set;          /* Active column sets */
   query_id_t	query_id;
 
+  /* 
+    For each key that has quick_keys.is_set(key) == TRUE: estimate of #records
+    and max #key parts that range access would use.
+  */
   ha_rows	quick_rows[MAX_KEY];
+
+  /* Bitmaps of key parts that =const for the entire join. */
   key_part_map  const_key_parts[MAX_KEY];
+
   uint		quick_key_parts[MAX_KEY];
   uint		quick_n_ranges[MAX_KEY];
+
+  /* 
+    Estimate of number of records that satisfy SARGable part of the table
+    ondition, or table->file->records if no SARGable condition could be
+    constructed.
+    This value is used by join optimizer as an estimate of number of records
+    that will pass the table condition (condition on this table fields and 
+    constants).
+  */
+  ha_rows       quick_condition_rows;
 
   /*
     If this table has TIMESTAMP field with auto-set property (pointed by

--- 1.32/mysql-test/r/olap.result	2005-09-15 22:21:28 +04:00
+++ 1.33/mysql-test/r/olap.result	2006-07-16 23:10:54 +04:00
@@ -87,8 +87,8 @@
 TV	NULL	NULL	600
 NULL	NULL	NULL	7785
 explain extended select product, country_id , year, sum(profit) from t1 group by product, country_id, year with rollup;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	15	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	15	15	Using filesort
 Warnings:
 Note	1003	select `test`.`t1`.`product` AS `product`,`test`.`t1`.`country_id` AS `country_id`,`test`.`t1`.`year` AS `year`,sum(`test`.`t1`.`profit`) AS `sum(profit)` from `test`.`t1` group by `test`.`t1`.`product`,`test`.`t1`.`country_id`,`test`.`t1`.`year` with rollup
 select product, country_id , sum(profit) from t1 group by product desc, country_id with rollup;

--- 1.85/mysql-test/r/union.result	2006-06-20 14:20:28 +04:00
+++ 1.86/mysql-test/r/union.result	2006-07-16 23:10:55 +04:00
@@ -83,10 +83,10 @@
 (select a,b from t1 limit 2)  union all (select a,b from t2 order by a limit 1) order by t1.b;
 ERROR 42000: Table 't1' from one of the SELECTs cannot be used in global ORDER clause
 explain extended (select a,b from t1 limit 2)  union all (select a,b from t2 order by a limit 1) order by b desc;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	
-2	UNION	t2	ALL	NULL	NULL	NULL	NULL	4	Using filesort
-NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	4	
+2	UNION	t2	ALL	NULL	NULL	NULL	NULL	4	4	Using filesort
+NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	Using filesort
 Warnings:
 Note	1003	(select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` limit 2) union all (select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`a` limit 1) order by `b` desc
 (select sql_calc_found_rows  a,b from t1 limit 2)  union all (select a,b from t2 order by a) limit 2;
@@ -475,10 +475,10 @@
 insert into t1 (b) values (1),(2),(2),(3);
 insert into t2 (b) values (10),(11),(12),(13);
 explain extended (select * from t1 where a=1) union (select * from t2 where a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	const	PRIMARY	PRIMARY	4	const	1	
-2	UNION	t2	const	PRIMARY	PRIMARY	4	const	1	
-NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	const	PRIMARY	PRIMARY	4	const	1	1	
+2	UNION	t2	const	PRIMARY	PRIMARY	4	const	1	1	
+NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1003	(select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (`test`.`t1`.`a` = 1)) union (select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`a` = 1))
 (select * from t1 where a=5) union (select * from t2 where a=1);

--- 1.32/mysql-test/r/ctype_collate.result	2006-02-22 12:09:47 +03:00
+++ 1.33/mysql-test/r/ctype_collate.result	2006-07-16 23:10:52 +04:00
@@ -516,8 +516,8 @@
 charset('a')	collation('a')	coercibility('a')	'a'='A'
 latin1	latin1_swedish_ci	4	1
 explain extended SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select charset(_latin1'a') AS `charset('a')`,collation(_latin1'a') AS `collation('a')`,coercibility(_latin1'a') AS `coercibility('a')`,(_latin1'a' = _latin1'A') AS `'a'='A'`
 SET CHARACTER SET koi8r;

--- 1.4/mysql-test/r/ctype_cp1250_ch.result	2006-05-12 20:26:40 +04:00
+++ 1.5/mysql-test/r/ctype_cp1250_ch.result	2006-07-16 23:10:52 +04:00
@@ -1,3 +1,4 @@
+drop table if exists t1;
 SHOW COLLATION LIKE 'cp1250_czech_cs';
 Collation	Charset	Id	Default	Compiled	Sortlen
 cp1250_czech_cs	cp1250	34		Yes	2

--- 1.4/mysql-test/t/ctype_cp1250_ch.test	2005-10-25 13:47:52 +04:00
+++ 1.5/mysql-test/t/ctype_cp1250_ch.test	2006-07-16 23:10:56 +04:00
@@ -1,4 +1,7 @@
 -- source include/have_cp1250_ch.inc
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
 
 SHOW COLLATION LIKE 'cp1250_czech_cs';
 

--- 1.5/mysql-test/r/func_default.result	2005-06-14 16:50:19 +04:00
+++ 1.6/mysql-test/r/func_default.result	2006-07-16 23:10:52 +04:00
@@ -5,8 +5,8 @@
 default(str)	default(strnull)	default(intg)	default(rel)
 def	NULL	10	3.14
 explain extended select default(str), default(strnull), default(intg), default(rel) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	1	
 Warnings:
 Note	1003	select default(`test`.`t1`.`str`) AS `default(str)`,default(`test`.`t1`.`strnull`) AS `default(strnull)`,default(`test`.`t1`.`intg`) AS `default(intg)`,default(`test`.`t1`.`rel`) AS `default(rel)` from `test`.`t1`
 select * from t1 where str <> default(str);

--- 1.23/mysql-test/r/row.result	2005-08-18 13:07:10 +04:00
+++ 1.24/mysql-test/r/row.result	2006-07-16 23:10:55 +04:00
@@ -46,8 +46,8 @@
 row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,row(3,NULL)))
 NULL
 explain extended select row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,row(3,NULL)));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select ((1,2,(3,4)) in ((3,2,(3,4)),(1,2,(3,NULL)))) AS `row(1,2,row(3,4)) IN (row(3,2,row(3,4)), row(1,2,row(3,NULL)))`
 SELECT (1,2,3)=(0,NULL,3);

--- 1.147/mysql-test/r/subselect.result	2006-05-30 15:24:22 +04:00
+++ 1.148/mysql-test/r/subselect.result	2006-07-16 23:10:55 +04:00
@@ -3,8 +3,8 @@
 (select 2)
 2
 explain extended select (select 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1249	Select 2 was reduced during optimization
 Note	1003	select 2 AS `(select 2)`
@@ -13,10 +13,10 @@
 1
 2
 explain extended SELECT (SELECT 1) UNION SELECT (SELECT 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-NULL	UNION RESULT	<union1,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+NULL	UNION RESULT	<union1,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1249	Select 2 was reduced during optimization
 Note	1249	Select 4 was reduced during optimization
@@ -25,11 +25,11 @@
 (SELECT (SELECT 0 UNION SELECT 0))
 0
 explain extended SELECT (SELECT (SELECT 0 UNION SELECT 0));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-3	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-4	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-NULL	UNION RESULT	<union3,4>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+3	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+4	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+NULL	UNION RESULT	<union3,4>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1249	Select 2 was reduced during optimization
 Note	1003	select (select 0 AS `0` union select 0 AS `0`) AS `(SELECT (SELECT 0 UNION SELECT 0))`
@@ -43,10 +43,10 @@
 SELECT (SELECT a) as a;
 ERROR 42S22: Reference 'a' not supported (forward reference in item list)
 EXPLAIN EXTENDED SELECT 1 FROM (SELECT 1 as a) as b  HAVING (SELECT a)=1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived2>	system	NULL	NULL	NULL	NULL	1	
-3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-2	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived2>	system	NULL	NULL	NULL	NULL	1	1	
+3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+2	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1276	Field or reference 'a' of SELECT #3 was resolved in SELECT #1
 Note	1276	Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
@@ -181,12 +181,12 @@
 4	8
 3	8
 explain extended (select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1)) union (select * from t4 where t4.b=(select max(t2.a)*4 from t2) order by a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
-2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	Using filesort
-3	UNION	t4	ALL	NULL	NULL	NULL	NULL	3	Using where
-4	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	
-NULL	UNION RESULT	<union1,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using filesort
+3	UNION	t4	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+4	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	2	
+NULL	UNION RESULT	<union1,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1003	(select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` = (select `test`.`t3`.`a` AS `a` from `test`.`t3` order by 1 desc limit 1))) union (select `test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t4` where (`test`.`t4`.`b` = (select (max(`test`.`t2`.`a`) * 4) AS `max(t2.a)*4` from `test`.`t2`)) order by `a`)
 select (select a from t3 where a<t2.a*4 order by 1 desc limit 1), a from t2;
@@ -199,10 +199,10 @@
 7	2
 explain extended select (select t3.a from t3 where a<8 order by 1 desc limit 1), a from 
 (select * from t2 where a>1) as tt;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived3>	system	NULL	NULL	NULL	NULL	1	
-3	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
-2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived3>	system	NULL	NULL	NULL	NULL	1	1	
+3	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where; Using filesort
 Warnings:
 Note	1003	select (select `test`.`t3`.`a` AS `a` from `test`.`t3` where (`test`.`t3`.`a` < 8) order by 1 desc limit 1) AS `(select t3.a from t3 where a<8 order by 1 desc limit 1)`,`tt`.`a` AS `a` from (select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`a` > 1)) `tt`
 select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3) order by 1 desc limit 1);
@@ -219,10 +219,10 @@
 8	4.5000
 9	7.5000
 explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t4	ALL	NULL	NULL	NULL	NULL	3	
-2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	
-3	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t4	ALL	NULL	NULL	NULL	NULL	3	3	
+2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	2	
+3	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1276	Field or reference 't4.a' of SELECT #3 was resolved in SELECT #1
 Note	1003	select `test`.`t4`.`b` AS `b`,(select avg((`test`.`t2`.`a` + (select min(`test`.`t3`.`a`) AS `min(t3.a)` from `test`.`t3` where (`test`.`t3`.`a` >= `test`.`t4`.`a`)))) AS `avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a))` from `test`.`t2`) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
@@ -267,9 +267,9 @@
 6
 7
 explain extended select * from t3 where a >= any (select b from t2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>((`test`.`t3`.`a` >= (select min(`test`.`t2`.`b`) from `test`.`t2`)))
 select * from t3 where a >= all (select b from t2);
@@ -307,11 +307,11 @@
 NULL	1
 2	2
 explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	
-2	DEPENDENT SUBQUERY	t1	system	NULL	NULL	NULL	NULL	1	
-3	DEPENDENT UNION	t5	ALL	NULL	NULL	NULL	NULL	2	Using where
-NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	2	
+2	DEPENDENT SUBQUERY	t1	system	NULL	NULL	NULL	NULL	1	1	
+3	DEPENDENT UNION	t5	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1276	Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1
 Note	1276	Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1
@@ -328,9 +328,9 @@
 1	2
 2	2
 explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t6	ALL	NULL	NULL	NULL	NULL	4	Using where
-2	DEPENDENT SUBQUERY	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.clinic_uq	1	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t6	ALL	NULL	NULL	NULL	NULL	4	4	Using where
+2	DEPENDENT SUBQUERY	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.clinic_uq	1	1	Using index
 Warnings:
 Note	1276	Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1
 Note	1003	select `test`.`t6`.`patient_uq` AS `patient_uq`,`test`.`t6`.`clinic_uq` AS `clinic_uq` from `test`.`t6` where exists(select 1 AS `Not_used` from `test`.`t7` where (`test`.`t7`.`uq` = `test`.`t6`.`clinic_uq`))
@@ -362,11 +362,11 @@
 INSERT INTO t8 (pseudo,email) VALUES ('joce1','test1');
 INSERT INTO t8 (pseudo,email) VALUES ('2joce1','2test1');
 EXPLAIN EXTENDED SELECT pseudo,(SELECT email FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce')) FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t8	ref	PRIMARY	PRIMARY	37	const	1	Using where; Using index
-4	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37		1	Using where; Using index
-2	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37	const	1	Using where
-3	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37		1	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t8	ref	PRIMARY	PRIMARY	37	const	1	1	Using where; Using index
+4	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37		1	1	Using where; Using index
+2	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37	const	1	1	Using where
+3	SUBQUERY	t8	ref	PRIMARY	PRIMARY	37		1	1	Using where; Using index
 Warnings:
 Note	1003	select `test`.`t8`.`pseudo` AS `pseudo`,(select `test`.`t8`.`email` AS `email` from `test`.`t8` where (`test`.`t8`.`pseudo` = (select `test`.`t8`.`pseudo` AS `pseudo` from `test`.`t8` where (`test`.`t8`.`pseudo` = _latin1'joce')))) AS `(SELECT email FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce'))` from `test`.`t8` where (`test`.`t8`.`pseudo` = (select `test`.`t8`.`pseudo` AS `pseudo` from `test`.`t8` where (`test`.`t8`.`pseudo` = _latin1'joce')))
 SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROM
@@ -391,14 +391,14 @@
 INSERT INTO t1 (topic,date,pseudo) VALUES
 ('43506','2002-10-02','joce'),('40143','2002-08-03','joce');
 EXPLAIN EXTENDED SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	NULL	PRIMARY	43	NULL	2	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	NULL	PRIMARY	43	NULL	2	2	Using where; Using index
 Warnings:
 Note	1003	select distinct `test`.`t1`.`date` AS `date` from `test`.`t1` where (`test`.`t1`.`date` = 20020803)
 EXPLAIN EXTENDED SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-2	SUBQUERY	t1	index	NULL	PRIMARY	43	NULL	2	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+2	SUBQUERY	t1	index	NULL	PRIMARY	43	NULL	2	2	Using where; Using index
 Warnings:
 Note	1003	select (select distinct `test`.`t1`.`date` AS `date` from `test`.`t1` where (`test`.`t1`.`date` = 20020803)) AS `(SELECT DISTINCT date FROM t1 WHERE date='2002-08-03')`
 SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
@@ -415,11 +415,11 @@
 SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1) UNION SELECT 1;
 ERROR 21000: Subquery returns more than 1 row
 EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	topic	3	NULL	2	Using index
-2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	topic	3	NULL	2	2	Using index
+2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1003	select 1 AS `1` from `test`.`t1`
 drop table t1;
@@ -538,14 +538,14 @@
 EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1');
 ERROR 21000: Subquery returns more than 1 row
 EXPLAIN EXTENDED SELECT MAX(numreponse) FROM t1 WHERE numeropost='1';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 Warnings:
 Note	1003	select max(`test`.`t1`.`numreponse`) AS `MAX(numreponse)` from `test`.`t1` where (`test`.`t1`.`numeropost` = _latin1'1')
 EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM t1 WHERE numeropost='1');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	const	PRIMARY,numreponse	PRIMARY	7	const,const	1	Using index
-2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	const	PRIMARY,numreponse	PRIMARY	7	const,const	1	1	Using index
+2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 Warnings:
 Note	1003	select `test`.`t1`.`numreponse` AS `numreponse` from `test`.`t1` where ((`test`.`t1`.`numeropost` = _latin1'1'))
 drop table t1;
@@ -719,8 +719,8 @@
 id
 1
 EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	ref	id	id	5	const	1	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	ref	id	id	5	const	1	1	Using where; Using index
 Warnings:
 Note	1249	Select 2 was reduced during optimization
 Note	1003	select `test`.`t2`.`id` AS `id` from `test`.`t2` where (`test`.`t2`.`id` = 1)
@@ -731,18 +731,18 @@
 id
 2
 EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	ref	id	id	5	const	1	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	ref	id	id	5	const	1	1	Using where; Using index
 Warnings:
 Note	1249	Select 3 was reduced during optimization
 Note	1249	Select 2 was reduced during optimization
 Note	1003	select `test`.`t2`.`id` AS `id` from `test`.`t2` where (`test`.`t2`.`id` = (1 + 1))
 EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	id	5	NULL	2	Using where; Using index
-2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-3	DEPENDENT UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	id	5	NULL	2	2	Using where; Using index
+2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+3	DEPENDENT UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1003	select `test`.`t2`.`id` AS `id` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`id`,<exists>(select 1 AS `1` having (<cache>(`test`.`t2`.`id`) = <ref_null_helper>(1)) union select 3 AS `3` having (<cache>(`test`.`t2`.`id`) = <ref_null_helper>(3))))
 SELECT * FROM t2 WHERE id IN (SELECT 5 UNION SELECT 3);
@@ -865,8 +865,8 @@
 10.5 > ANY (SELECT * from t1)
 1
 explain extended select (select a+1) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1276	Field or reference 'a' of SELECT #2 was resolved in SELECT #1
 Note	1249	Select 2 was reduced during optimization
@@ -888,9 +888,9 @@
 3	1
 4	0
 explain extended SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	Using index
-2	DEPENDENT SUBQUERY	t2	index_subquery	a	a	5	func	2	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	4	Using index
+2	DEPENDENT SUBQUERY	t2	index_subquery	a	a	5	func	2	2	Using index
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in t2 on a checking NULL))) AS `t1.a in (select t2.a from t2)` from `test`.`t1`
 CREATE TABLE t3 (a int(11) default '0');
@@ -902,10 +902,10 @@
 3	1
 4	0
 explain extended SELECT t1.a, t1.a in (select t2.a from t2,t3 where t3.a=t2.a) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	Using index
-2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	Using where; Using index
-2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	4	Using index
+2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	2	Using where; Using index
+2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 AS `Not_used` from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
 drop table t1,t2,t3;
@@ -1015,21 +1015,21 @@
 drop table t1;
 CREATE TABLE t1 (a int(1));
 EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
-2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
+2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select sql_no_cache (select sql_no_cache rand() AS `RAND()` from `test`.`t1`) AS `(SELECT RAND() FROM t1)` from `test`.`t1`
 EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
-2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
+2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select sql_no_cache (select sql_no_cache encrypt(_latin1'test') AS `ENCRYPT('test')` from `test`.`t1`) AS `(SELECT ENCRYPT('test') FROM t1)` from `test`.`t1`
 EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
-2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
+2	UNCACHEABLE SUBQUERY	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select sql_no_cache (select sql_no_cache benchmark(1,1) AS `BENCHMARK(1,1)` from `test`.`t1`) AS `(SELECT BENCHMARK(1,1) FROM t1)` from `test`.`t1`
 drop table t1;
@@ -1121,10 +1121,10 @@
 insert into t1 values (1), (2), (3);
 explain extended select a,(select (select rand() from t1 limit 1)  from t1 limit 1)
 from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
-2	UNCACHEABLE SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	
-3	UNCACHEABLE SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
+2	UNCACHEABLE SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
+3	UNCACHEABLE SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select sql_no_cache `test`.`t1`.`a` AS `a`,(select sql_no_cache (select sql_no_cache rand() AS `rand()` from `test`.`t1` limit 1) AS `(select rand() from t1 limit 1)` from `test`.`t1` limit 1) AS `(select (select rand() from t1 limit 1)  from t1 limit 1)` from `test`.`t1`
 drop table t1;
@@ -1176,9 +1176,9 @@
 0 IN (SELECT 1 FROM t1 a)
 0
 EXPLAIN EXTENDED SELECT 0 IN (SELECT 1 FROM t1 a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 Warnings:
 Note	1003	select <in_optimizer>(0,<exists>(select 1 AS `Not_used` from `test`.`t1` `a`)) AS `0 IN (SELECT 1 FROM t1 a)`
 INSERT INTO t1 (pseudo) VALUES ('test1');
@@ -1186,9 +1186,9 @@
 0 IN (SELECT 1 FROM t1 a)
 0
 EXPLAIN EXTENDED SELECT 0 IN (SELECT 1 FROM t1 a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
-2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+2	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 Warnings:
 Note	1003	select <in_optimizer>(0,<exists>(select 1 AS `Not_used` from `test`.`t1` `a`)) AS `0 IN (SELECT 1 FROM t1 a)`
 drop table t1;
@@ -1231,9 +1231,9 @@
 create table t1 (id int not null auto_increment primary key, salary int, key(salary));
 insert into t1 (salary) values (100),(1000),(10000),(10),(500),(5000),(50000);
 explain extended SELECT id FROM t1 where salary = (SELECT MAX(salary) FROM t1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ref	salary	salary	5	const	1	Using where
-2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ref	salary	salary	5	const	1	1	Using where
+2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 Warnings:
 Note	1003	select `test`.`t1`.`id` AS `id` from `test`.`t1` where (`test`.`t1`.`salary` = (select max(`test`.`t1`.`salary`) AS `MAX(salary)` from `test`.`t1`))
 drop table t1;
@@ -1293,9 +1293,9 @@
 3
 4
 explain extended select * from t2 where t2.a in (select a from t1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	1	Using index
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(<primary_index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on PRIMARY)))
 select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
@@ -1303,9 +1303,9 @@
 2
 4
 explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	Using index; Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	1	Using index; Using where
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(<primary_index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on PRIMARY where (`test`.`t1`.`b` <> 30))))
 select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
@@ -1313,10 +1313,10 @@
 2
 3
 explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	eq_ref	PRIMARY	PRIMARY	4	func	1	Using where
-2	DEPENDENT SUBQUERY	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	eq_ref	PRIMARY	PRIMARY	4	func	1	1	Using where
+2	DEPENDENT SUBQUERY	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	1	Using where; Using index
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(select 1 AS `Not_used` from `test`.`t1` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t1`.`b`) and (<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`))))
 drop table t1, t2, t3;
@@ -1332,9 +1332,9 @@
 3
 4
 explain extended select * from t2 where t2.a in (select a from t1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	a	5	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	a	5	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	1001	Using index
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on a)))
 select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
@@ -1342,9 +1342,9 @@
 2
 4
 explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	a	5	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	Using index; Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	a	5	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	1001	Using index; Using where
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on a where (`test`.`t1`.`b` <> 30))))
 select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
@@ -1352,10 +1352,10 @@
 2
 3
 explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	a	5	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	ref	a	a	5	func	1001	Using where; Using index
-2	DEPENDENT SUBQUERY	t3	index	a	a	5	NULL	3	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	a	5	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	ref	a	a	5	func	1001	1001	Using where; Using index
+2	DEPENDENT SUBQUERY	t3	index	a	a	5	NULL	3	3	Using where; Using index
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(select 1 AS `Not_used` from `test`.`t1` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t1`.`b`) and (<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`))))
 insert into t1 values (3,31);
@@ -1369,9 +1369,9 @@
 2
 4
 explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t2	index	NULL	a	5	NULL	4	Using where; Using index
-2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	Using index; Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t2	index	NULL	a	5	NULL	4	4	Using where; Using index
+2	DEPENDENT SUBQUERY	t1	index_subquery	a	a	5	func	1001	1001	Using index; Using where
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on a where (`test`.`t1`.`b` <> 30))))
 drop table t1, t2, t3;
@@ -1427,8 +1427,8 @@
 s1
 tttt
 explain extended (select * from t1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	1	
 Warnings:
 Note	1003	(select `test`.`t1`.`s1` AS `s1` from `test`.`t1`)
 (select * from t1);
@@ -1460,27 +1460,27 @@
 a2	1
 a3	1
 explain extended select s1, s1 NOT IN (SELECT s1 FROM t2) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	s1	6	NULL	3	Using index
-2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	s1	6	NULL	3	3	Using index
+2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	2	Using index
 Warnings:
 Note	1003	select `test`.`t1`.`s1` AS `s1`,not(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL)))) AS `s1 NOT IN (SELECT s1 FROM t2)` from `test`.`t1`
 explain extended select s1, s1 = ANY (SELECT s1 FROM t2) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	s1	6	NULL	3	Using index
-2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	s1	6	NULL	3	3	Using index
+2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	2	Using index
 Warnings:
 Note	1003	select `test`.`t1`.`s1` AS `s1`,<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL))) AS `s1 = ANY (SELECT s1 FROM t2)` from `test`.`t1`
 explain extended select s1, s1 <> ALL (SELECT s1 FROM t2) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	s1	6	NULL	3	Using index
-2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	s1	6	NULL	3	3	Using index
+2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	2	Using index
 Warnings:
 Note	1003	select `test`.`t1`.`s1` AS `s1`,not(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL)))) AS `s1 <> ALL (SELECT s1 FROM t2)` from `test`.`t1`
 explain extended select s1, s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2') from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	index	NULL	s1	6	NULL	3	Using index
-2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	Using index; Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	index	NULL	s1	6	NULL	3	3	Using index
+2	DEPENDENT SUBQUERY	t2	index_subquery	s1	s1	6	func	2	2	Using index; Using where
 Warnings:
 Note	1003	select `test`.`t1`.`s1` AS `s1`,not(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL where (`test`.`t2`.`s1` < _latin1'a2'))))) AS `s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')` from `test`.`t1`
 drop table t1,t2;
@@ -1493,17 +1493,17 @@
 7
 3
 explain extended select * from t3 where a >= all (select b from t2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>((`test`.`t3`.`a` < (select max(`test`.`t2`.`b`) from `test`.`t2`)))
 select * from t3 where a >= some (select b from t2);
 a
 explain extended select * from t3 where a >= some (select b from t2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>((`test`.`t3`.`a` >= (select min(`test`.`t2`.`b`) from `test`.`t2`)))
 select * from t3 where a >= all (select b from t2 group by 1);
@@ -1512,49 +1512,49 @@
 7
 3
 explain extended select * from t3 where a >= all (select b from t2 group by 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>((`test`.`t3`.`a` < <max>(select `test`.`t2`.`b` AS `b` from `test`.`t2` group by 1)))
 select * from t3 where a >= some (select b from t2 group by 1);
 a
 explain extended select * from t3 where a >= some (select b from t2 group by 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <nop>((`test`.`t3`.`a` >= <min>(select `test`.`t2`.`b` AS `b` from `test`.`t2` group by 1)))
 select * from t3 where NULL >= any (select b from t2);
 a
 explain extended select * from t3 where NULL >= any (select b from t2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3`
 select * from t3 where NULL >= any (select b from t2 group by 1);
 a
 explain extended select * from t3 where NULL >= any (select b from t2 group by 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3`
 select * from t3 where NULL >= some (select b from t2);
 a
 explain extended select * from t3 where NULL >= some (select b from t2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3`
 select * from t3 where NULL >= some (select b from t2 group by 1);
 a
 explain extended select * from t3 where NULL >= some (select b from t2 group by 1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
-2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+2	SUBQUERY	t2	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3`
 insert into t2 values (2,2), (2,1), (3,3), (3,1);
@@ -1563,9 +1563,9 @@
 6
 7
 explain extended select * from t3 where a > all (select max(b) from t2 group by a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	Using where
-2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	4	Using temporary; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	4	4	Using temporary; Using filesort
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a` from `test`.`t3` where <not>((`test`.`t3`.`a` <= <max>(select max(`test`.`t2`.`b`) AS `max(b)` from `test`.`t2` group by `test`.`t2`.`a`)))
 drop table t2, t3;
@@ -1612,11 +1612,11 @@
 s1
 e
 explain extended select * from t1 where 'f' > any (select s1 from t1 union select s1 from t1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	1	
-2	SUBQUERY	t1	system	NULL	NULL	NULL	NULL	1	
-3	UNION	t1	system	NULL	NULL	NULL	NULL	1	
-NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	1	1	
+2	SUBQUERY	t1	system	NULL	NULL	NULL	NULL	1	1	
+3	UNION	t1	system	NULL	NULL	NULL	NULL	1	1	
+NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL	
 Warnings:
 Note	1003	select `test`.`t1`.`s1` AS `s1` from `test`.`t1`
 drop table t1;
@@ -1733,15 +1733,15 @@
 11	text11
 12	text12
 explain extended select * from t1 where id not in (select id from t1 where id < 8);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	12	Using where
-2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	Using index; Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	12	12	Using where
+2	DEPENDENT SUBQUERY	t1	unique_subquery	PRIMARY	PRIMARY	4	func	1	1	Using index; Using where
 Warnings:
 Note	1003	select `test`.`t1`.`id` AS `id`,`test`.`t1`.`text` AS `text` from `test`.`t1` where not(<in_optimizer>(`test`.`t1`.`id`,<exists>(<primary_index_lookup>(<cache>(`test`.`t1`.`id`) in t1 on PRIMARY where (`test`.`t1`.`id` < 8)))))
 explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	tt	ALL	NULL	NULL	NULL	NULL	12	Using where
-2	DEPENDENT SUBQUERY	t1	eq_ref	PRIMARY	PRIMARY	4	test.tt.id	1	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	tt	ALL	NULL	NULL	NULL	NULL	12	12	Using where
+2	DEPENDENT SUBQUERY	t1	eq_ref	PRIMARY	PRIMARY	4	test.tt.id	1	1	Using where; Using index
 Warnings:
 Note	1276	Field or reference 'tt.id' of SELECT #2 was resolved in SELECT #1
 Note	1003	select `test`.`tt`.`id` AS `id`,`test`.`tt`.`text` AS `text` from `test`.`t1` `tt` where not(exists(select `test`.`t1`.`id` AS `id` from `test`.`t1` where ((`test`.`t1`.`id` < 8) and (`test`.`t1`.`id` = `test`.`tt`.`id`)) having (`test`.`t1`.`id` is not null)))
@@ -1765,10 +1765,10 @@
 1000	text1000	NULL	NULL	1000	text1000
 1001	text1001	NULL	NULL	1000	text1000
 explain extended select * from t1 a left join t2 b on (a.id=b.id or b.id is null) join t1 c on (if(isnull(b.id), 1000, b.id)=c.id);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	a	ALL	NULL	NULL	NULL	NULL	14	
-1	SIMPLE	b	eq_ref	PRIMARY	PRIMARY	4	test.a.id	2	
-1	SIMPLE	c	eq_ref	PRIMARY	PRIMARY	4	func	1	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	a	ALL	NULL	NULL	NULL	NULL	14	14	
+1	SIMPLE	b	eq_ref	PRIMARY	PRIMARY	4	test.a.id	2	2	
+1	SIMPLE	c	eq_ref	PRIMARY	PRIMARY	4	func	1	1	Using where
 Warnings:
 Note	1003	select `test`.`a`.`id` AS `id`,`test`.`a`.`text` AS `text`,`test`.`b`.`id` AS `id`,`test`.`b`.`text` AS `text`,`test`.`c`.`id` AS `id`,`test`.`c`.`text` AS `text` from `test`.`t1` `a` left join `test`.`t2` `b` on(((`test`.`b`.`id` = `test`.`a`.`id`) or isnull(`test`.`b`.`id`))) join `test`.`t1` `c` where (if(isnull(`test`.`b`.`id`),1000,`test`.`b`.`id`) = `test`.`c`.`id`)
 drop table t1,t2;
@@ -2275,9 +2275,9 @@
 1	2
 3	4
 explain extended select * from t1 up where exists (select * from t1 where t1.a=up.a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	up	ALL	NULL	NULL	NULL	NULL	2	Using where
-2	DEPENDENT SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	up	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+2	DEPENDENT SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	2	2	Using where
 Warnings:
 Note	1276	Field or reference 'up.a' of SELECT #2 was resolved in SELECT #1
 Note	1003	select `test`.`up`.`a` AS `a`,`test`.`up`.`b` AS `b` from `test`.`t1` `up` where exists(select 1 AS `Not_used` from `test`.`t1` where (`test`.`t1`.`a` = `test`.`up`.`a`))
@@ -2813,21 +2813,21 @@
 10	5	NULL
 10	10	NULL
 explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	
-2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	8	
+2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	9	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where ((`test`.`t2`.`flag` = _latin1'0') and ((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)) and ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`))) having (<is_not_null_test>(`test`.`t2`.`one`) and <is_not_null_test>(`test`.`t2`.`two`)))) AS `test` from `test`.`t1`
 explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	Using where
-2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	8	Using where
+2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	9	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where ((`test`.`t2`.`flag` = _latin1'N') and (<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) and (<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`))))
 explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	
-2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	Using where; Using temporary; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	8	8	
+2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	9	Using where; Using temporary; Using filesort
 Warnings:
 Note	1003	select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where (`test`.`t2`.`flag` = _latin1'0') group by `test`.`t2`.`one`,`test`.`t2`.`two` having (((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)) and ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`)) and <is_not_null_test>(`test`.`t2`.`one`) and <is_not_null_test>(`test`.`t2`.`two`)))) AS `test` from `test`.`t1`
 DROP TABLE t1,t2;

--- 1.166/mysql-test/r/view.result	2006-06-16 02:49:44 +04:00
+++ 1.167/mysql-test/r/view.result	2006-07-16 23:10:56 +04:00
@@ -48,8 +48,8 @@
 select v1.b from v1;
 ERROR 42S22: Unknown column 'v1.b' in 'field list'
 explain extended select c from v1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select (`test`.`t1`.`b` + 1) AS `c` from `test`.`t1`
 create algorithm=temptable view v2 (c) as select b+1 from t1;
@@ -64,9 +64,9 @@
 6
 11
 explain extended select c from v2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	
-2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	5	
+2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select `v2`.`c` AS `c` from `test`.`v2`
 create view v3 (c) as select a+1 from v1;
@@ -82,8 +82,8 @@
 7
 12
 explain extended select c from v3;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select ((`test`.`t1`.`b` + 1) + 1) AS `c` from `test`.`t1`
 create algorithm=temptable view v4 (c) as select c+1 from v2;
@@ -95,10 +95,10 @@
 7
 12
 explain extended select c from v4;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	
-2	DERIVED	<derived3>	ALL	NULL	NULL	NULL	NULL	5	
-3	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	5	
+2	DERIVED	<derived3>	ALL	NULL	NULL	NULL	NULL	5	5	
+3	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select `v4`.`c` AS `c` from `test`.`v4`
 create view v5 (c) as select c+1 from v2;
@@ -110,9 +110,9 @@
 7
 12
 explain extended select c from v5;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived3>	ALL	NULL	NULL	NULL	NULL	5	
-3	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived3>	ALL	NULL	NULL	NULL	NULL	5	5	
+3	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select (`v2`.`c` + 1) AS `c` from `test`.`v2`
 create algorithm=temptable view v6 (c) as select c+1 from v1;
@@ -124,9 +124,9 @@
 7
 12
 explain extended select c from v6;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	
-2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	5	5	
+2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select `v6`.`c` AS `c` from `test`.`v6`
 show tables;
@@ -375,8 +375,8 @@
 20
 30
 explain extended select * from v1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	5	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`b` AS `c` from `test`.`t1` where (`test`.`t1`.`a` < 3)
 update v1 set c=c+1;
@@ -1390,10 +1390,10 @@
 2	2	NULL
 4	NULL	NULL
 explain extended select * from t3 left join v3 on (t3.a = v3.a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
-1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
+1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
 create view v1 (a) as select a from t1;
@@ -1405,10 +1405,10 @@
 2	2	NULL
 4	NULL	NULL
 explain extended select * from t3 left join v4 on (t3.a = v4.a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	
-1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
-1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	3	
+1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	3	
+1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join (`test`.`t2`) on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
 prepare stmt1 from "select * from t3 left join v4 on (t3.a = v4.a);";

--- 1.6/mysql-test/r/archive_gis.result	2006-05-17 17:04:46 +04:00
+++ 1.7/mysql-test/r/archive_gis.result	2006-07-16 23:10:51 +04:00
@@ -233,8 +233,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point ORDER by fid;
@@ -250,8 +250,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
@@ -285,8 +285,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
@@ -315,8 +315,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
@@ -354,8 +354,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
@@ -382,8 +382,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -401,9 +401,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;

--- 1.7/mysql-test/r/bdb_gis.result	2006-05-17 17:04:47 +04:00
+++ 1.8/mysql-test/r/bdb_gis.result	2006-07-16 23:10:51 +04:00
@@ -233,8 +233,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point ORDER by fid;
@@ -250,8 +250,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
@@ -285,8 +285,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
@@ -315,8 +315,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
@@ -354,8 +354,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
@@ -382,8 +382,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -401,9 +401,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;

--- 1.13/mysql-test/r/binlog_stm_blackhole.result	2006-05-17 17:04:50 +04:00
+++ 1.14/mysql-test/r/binlog_stm_blackhole.result	2006-07-16 23:10:52 +04:00
@@ -70,8 +70,8 @@
 Only MyISAM tables	support collections
 Full-text indexes	are called collections
 explain extended select * from t1 where MATCH(a,b) AGAINST ("collections");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	fulltext	a	a	0		1	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	fulltext	a	a	0		1	1	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (match `test`.`t1`.`a`,`test`.`t1`.`b` against (_latin1'collections'))
 select * from t1 where MATCH(a,b) AGAINST ("indexes");

--- 1.6/mysql-test/r/innodb_gis.result	2006-05-17 17:05:06 +04:00
+++ 1.7/mysql-test/r/innodb_gis.result	2006-07-16 23:10:54 +04:00
@@ -233,8 +233,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point ORDER by fid;
@@ -250,8 +250,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
@@ -285,8 +285,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
@@ -315,8 +315,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
@@ -354,8 +354,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
@@ -382,8 +382,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -401,9 +401,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;

--- 1.11/mysql-test/r/ndb_gis.result	2006-05-17 17:05:24 +04:00
+++ 1.12/mysql-test/r/ndb_gis.result	2006-07-16 23:10:54 +04:00
@@ -233,8 +233,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point ORDER by fid;
@@ -250,8 +250,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
@@ -285,8 +285,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
@@ -315,8 +315,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
@@ -354,8 +354,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
@@ -382,8 +382,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -401,9 +401,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
@@ -695,8 +695,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point ORDER by fid;
@@ -712,8 +712,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
@@ -747,8 +747,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
@@ -777,8 +777,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
@@ -816,8 +816,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
@@ -844,8 +844,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -863,9 +863,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;

--- 1.24/mysql-test/r/date_formats.result	2006-05-11 12:16:45 +04:00
+++ 1.25/mysql-test/r/date_formats.result	2006-07-16 23:10:52 +04:00
@@ -434,8 +434,8 @@
 Warnings:
 Error	1411	Incorrect datetime value: '15-01-2001 12:59:59' for function str_to_time
 explain extended select makedate(1997,1), addtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),subtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002"),timediff("01.01.97 11:59:59.000001 PM","31.12.95 11:59:59.000002 PM"),cast(str_to_date("15-01-2001 12:59:59", "%d-%m-%Y %H:%i:%S") as TIME), maketime(23,11,12),microsecond("1997-12-31 23:59:59.000001");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select makedate(1997,1) AS `makedate(1997,1)`,addtime(_latin1'31.12.97 11.59.59.999999 PM',_latin1'1 1.1.1.000002') AS `addtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002")`,subtime(_latin1'31.12.97 11.59.59.999999 PM',_latin1'1 1.1.1.000002') AS `subtime("31.12.97 11.59.59.999999 PM", "1 1.1.1.000002")`,timediff(_latin1'01.01.97 11:59:59.000001 PM',_latin1'31.12.95 11:59:59.000002 PM') AS `timediff("01.01.97 11:59:59.000001 PM","31.12.95 11:59:59.000002 PM")`,cast(str_to_date(_latin1'15-01-2001 12:59:59',_latin1'%d-%m-%Y %H:%i:%S') as time) AS `cast(str_to_date("15-01-2001 12:59:59", "%d-%m-%Y %H:%i:%S") as TIME)`,maketime(23,11,12) AS `maketime(23,11,12)`,microsecond(_latin1'1997-12-31 23:59:59.000001') AS `microsecond("1997-12-31 23:59:59.000001")`
 create table t1 (d date);

--- 1.23/mysql-test/r/join_nested.result	2006-03-30 04:45:23 +04:00
+++ 1.24/mysql-test/r/join_nested.result	2006-07-16 23:10:54 +04:00
@@ -71,10 +71,10 @@
 (t3, t4)
 ON t2.b=t4.b
 WHERE t3.a=1 OR t3.c IS NULL;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where ((`test`.`t3`.`a` = 1) or isnull(`test`.`t3`.`c`))
 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
@@ -147,11 +147,11 @@
 (t3, t4, t5)
 ON t2.b=t4.b
 WHERE t3.a>1 OR t3.c IS NULL;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4` join `test`.`t5`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where ((`test`.`t3`.`a` > 1) or isnull(`test`.`t3`.`c`))
 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
@@ -177,11 +177,11 @@
 ON t2.b=t4.b
 WHERE (t3.a>1 OR t3.c IS NULL) AND 
 (t5.a<3 OR t5.c IS NULL);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4` join `test`.`t5`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where (((`test`.`t3`.`a` > 1) or isnull(`test`.`t3`.`c`)) and ((`test`.`t5`.`a` < 3) or isnull(`test`.`t5`.`c`)))
 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
@@ -227,10 +227,10 @@
 LEFT JOIN 
 t8
 ON t7.b=t8.b AND t6.b < 10;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
 SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
@@ -542,16 +542,16 @@
 WHERE t0.a=1 AND
 t0.b=t1.b AND          
 (t2.a >= 4 OR t2.c IS NULL);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.
 `c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
 SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@@ -637,17 +637,17 @@
 (t8.a < 1 OR t8.c IS NULL) AND
 (t8.b=t9.b OR t8.c IS NULL) AND
 (t9.a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
 .`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
 SELECT t9.a,t9.b
@@ -834,11 +834,11 @@
 t2
 ON t3.a=1 AND t2.b=t4.b
 WHERE t1.a <= 2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
 CREATE INDEX idx_b ON t2(b);
@@ -848,11 +848,11 @@
 LEFT JOIN              
 (t1,t2)
 ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
-1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	
+1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	2	
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`))) where 1
 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
@@ -904,17 +904,17 @@
 (t8.a < 1 OR t8.c IS NULL) AND
 (t8.b=t9.b OR t8.c IS NULL) AND
 (t9.a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
 .`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
 CREATE INDEX idx_b ON t4(b);
@@ -954,17 +954,17 @@
 (t8.a < 1 OR t8.c IS NULL) AND
 (t8.b=t9.b OR t8.c IS NULL) AND
 (t9.a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
-1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	2	Using where
+1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
 .`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
 CREATE INDEX idx_b ON t8(b);
@@ -1003,17 +1003,17 @@
 (t8.a < 1 OR t8.c IS NULL) AND
 (t8.b=t9.b OR t8.c IS NULL) AND
 (t9.a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
-1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	Using where
-1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	2	Using where
+1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	2	Using where
+1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
 .`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
 CREATE INDEX idx_b ON t1(b);
@@ -1053,17 +1053,17 @@
 (t8.a < 1 OR t8.c IS NULL) AND
 (t8.b=t9.b OR t8.c IS NULL) AND
 (t9.a=1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ref	idx_a	idx_a	5	const	1	Using where
-1	SIMPLE	t1	ref	idx_b	idx_b	5	test.t0.b	2	Using where
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
-1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
-1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
-1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	Using where
-1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t0	ref	idx_a	idx_a	5	const	1	1	Using where
+1	SIMPLE	t1	ref	idx_b	idx_b	5	test.t0.b	2	2	Using where
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	2	Using where
+1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	2	Using where
+1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	3	Using where
+1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	2	Using where
+1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	3	Using where
 Warnings:
 Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`
 .`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
 SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,

--- 1.42/mysql-test/r/auto_increment.result	2006-06-18 14:20:26 +04:00
+++ 1.43/mysql-test/r/auto_increment.result	2006-07-16 23:10:51 +04:00
@@ -140,8 +140,8 @@
 last_insert_id()
 255
 explain extended select last_insert_id();
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache last_insert_id() AS `last_insert_id()`
 insert into t1 set i = 254;

--- 1.29/mysql-test/r/case.result	2006-05-18 01:57:33 +04:00
+++ 1.30/mysql-test/r/case.result	2006-07-16 23:10:52 +04:00
@@ -24,8 +24,8 @@
 CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END
 one
 explain extended select CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (case 1 when 1 then _latin1'one' when 2 then _latin1'two' else _latin1'more' end) AS `CASE 1 when 1 then "one" WHEN 2 then "two" ELSE "more" END`
 select CASE 2.0 when 1 then "one" WHEN 2.0 then "two" ELSE "more" END;
@@ -63,8 +63,8 @@
 2	1
 3	1
 explain extended select case a when 1 then 2 when 2 then 3 else 0 end as fcase, count(*) from t1 group by fcase;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using temporary; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	4	Using temporary; Using filesort
 Warnings:
 Note	1003	select (case `test`.`t1`.`a` when 1 then 2 when 2 then 3 else 0 end) AS `fcase`,count(0) AS `count(*)` from `test`.`t1` group by (case `test`.`t1`.`a` when 1 then 2 when 2 then 3 else 0 end)
 select case a when 1 then "one" when 2 then "two" else "nothing" end as fcase, count(*) from t1 group by fcase;
@@ -144,8 +144,8 @@
 COALESCE(1), COALESCE(1.0),COALESCE('a'),
 COALESCE(1,1.0), COALESCE(1,'1'),COALESCE(1.1,'1'),
 COALESCE('a' COLLATE latin1_bin,'b');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select coalesce(1) AS `COALESCE(1)`,coalesce(1.0) AS `COALESCE(1.0)`,coalesce(_latin1'a') AS `COALESCE('a')`,coalesce(1,1.0) AS `COALESCE(1,1.0)`,coalesce(1,_latin1'1') AS `COALESCE(1,'1')`,coalesce(1.1,_latin1'1') AS `COALESCE(1.1,'1')`,coalesce((_latin1'a' collate latin1_bin),_latin1'b') AS `COALESCE('a' COLLATE latin1_bin,'b')`
 SHOW CREATE TABLE t1;

--- 1.89/mysql-test/r/fulltext.result	2006-03-22 18:48:29 +03:00
+++ 1.90/mysql-test/r/fulltext.result	2006-07-16 23:10:52 +04:00
@@ -14,8 +14,8 @@
 Only MyISAM tables	support collections
 Full-text indexes	are called collections
 explain extended select * from t1 where MATCH(a,b) AGAINST ("collections");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	fulltext	a	a	0		1	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	fulltext	a	a	0		1	1	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (match `test`.`t1`.`a`,`test`.`t1`.`b` against (_latin1'collections'))
 select * from t1 where MATCH(a,b) AGAINST ("indexes");
@@ -84,8 +84,8 @@
 a	b
 MySQL has now support	for full-text search
 explain extended select * from t1 where MATCH(a,b) AGAINST("support -collections" IN BOOLEAN MODE);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	fulltext	a	a	0		1	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	fulltext	a	a	0		1	1	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (match `test`.`t1`.`a`,`test`.`t1`.`b` against (_latin1'support -collections' in boolean mode))
 select * from t1 where MATCH(a,b) AGAINST("support  collections" IN BOOLEAN MODE);

--- 1.50/mysql-test/r/func_group.result	2006-06-18 14:20:26 +04:00
+++ 1.51/mysql-test/r/func_group.result	2006-07-16 23:10:52 +04:00
@@ -287,8 +287,8 @@
 2	1	1	1.00000	0.00000	1	1	1	1	1
 3	1	1	1.00000	0.00000	1	1	1	1	1
 explain extended select SQL_BIG_RESULT a,count(b), sum(b), avg(b), std(b), min(b), max(b), bit_and(b), bit_or(b), bit_xor(b) from t1 group by a;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	5	Using filesort
 Warnings:
 Note	1003	select sql_big_result `test`.`t1`.`a` AS `a`,count(`test`.`t1`.`b`) AS `count(b)`,sum(`test`.`t1`.`b`) AS `sum(b)`,avg(`test`.`t1`.`b`) AS `avg(b)`,std(`test`.`t1`.`b`) AS `std(b)`,min(`test`.`t1`.`b`) AS `min(b)`,max(`test`.`t1`.`b`) AS `max(b)`,bit_and(`test`.`t1`.`b`) AS `bit_and(b)`,bit_or(`test`.`t1`.`b`) AS `bit_or(b)`,bit_xor(`test`.`t1`.`b`) AS `bit_xor(b)` from `test`.`t1` group by `test`.`t1`.`a`
 drop table t1;

--- 1.28/mysql-test/r/func_in.result	2006-06-20 00:52:25 +04:00
+++ 1.29/mysql-test/r/func_in.result	2006-07-16 23:10:53 +04:00
@@ -143,8 +143,8 @@
 a	b	c
 a	c	c
 explain extended select * from t1 where 'a' in (a,b,c collate latin1_bin);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	2	Using where
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (_latin1'a' in (`test`.`t1`.`a`,`test`.`t1`.`b`,(`test`.`t1`.`c` collate latin1_bin)))
 drop table t1;

--- 1.17/mysql-test/r/func_like.result	2005-09-07 15:32:07 +04:00
+++ 1.18/mysql-test/r/func_like.result	2006-07-16 23:10:53 +04:00
@@ -1,12 +1,16 @@
 drop table if exists t1;
 create table t1 (a varchar(10), key(a));
 insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test");
-explain select * from t1 where a like 'abc%';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	a	a	13	NULL	5	Using where; Using index
-explain select * from t1 where a like concat('abc','%');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	a	a	13	NULL	5	Using where; Using index
+explain extended select * from t1 where a like 'abc%';
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	a	a	13	NULL	5	1	Using where; Using index
+Warnings:
+Note	1003	select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` like _latin1'abc%')
+explain extended select * from t1 where a like concat('abc','%');
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	a	a	13	NULL	5	1	Using where; Using index
+Warnings:
+Note	1003	select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` like concat(_latin1'abc',_latin1'%'))
 select * from t1 where a like "abc%";
 a
 abc

--- 1.36/mysql-test/r/func_math.result	2006-03-07 22:00:40 +03:00
+++ 1.37/mysql-test/r/func_math.result	2006-07-16 23:10:53 +04:00
@@ -3,32 +3,32 @@
 floor(5.5)	floor(-5.5)
 5	-6
 explain extended select floor(5.5),floor(-5.5);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select floor(5.5) AS `floor(5.5)`,floor(-(5.5)) AS `floor(-5.5)`
 select ceiling(5.5),ceiling(-5.5);
 ceiling(5.5)	ceiling(-5.5)
 6	-5
 explain extended select ceiling(5.5),ceiling(-5.5);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select ceiling(5.5) AS `ceiling(5.5)`,ceiling(-(5.5)) AS `ceiling(-5.5)`
 select truncate(52.64,1),truncate(52.64,2),truncate(52.64,-1),truncate(52.64,-2), truncate(-52.64,1),truncate(-52.64,-1);
 truncate(52.64,1)	truncate(52.64,2)	truncate(52.64,-1)	truncate(52.64,-2)	truncate(-52.64,1)	truncate(-52.64,-1)
 52.6	52.64	50	0	-52.6	-50
 explain extended select truncate(52.64,1),truncate(52.64,2),truncate(52.64,-1),truncate(52.64,-2), truncate(-52.64,1),truncate(-52.64,-1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select truncate(52.64,1) AS `truncate(52.64,1)`,truncate(52.64,2) AS `truncate(52.64,2)`,truncate(52.64,-(1)) AS `truncate(52.64,-1)`,truncate(52.64,-(2)) AS `truncate(52.64,-2)`,truncate(-(52.64),1) AS `truncate(-52.64,1)`,truncate(-(52.64),-(1)) AS `truncate(-52.64,-1)`
 select round(5.5),round(-5.5);
 round(5.5)	round(-5.5)
 6	-6
 explain extended select round(5.5),round(-5.5);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select round(5.5,0) AS `round(5.5)`,round(-(5.5),0) AS `round(-5.5)`
 select round(5.64,1),round(5.64,2),round(5.64,-1),round(5.64,-2);
@@ -38,48 +38,48 @@
 abs(-10)	sign(-5)	sign(5)	sign(0)
 10	-1	1	0
 explain extended select abs(-10), sign(-5), sign(5), sign(0);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select abs(-(10)) AS `abs(-10)`,sign(-(5)) AS `sign(-5)`,sign(5) AS `sign(5)`,sign(0) AS `sign(0)`
 select log(exp(10)),exp(log(sqrt(10))*2),log(-1),log(NULL),log(1,1),log(3,9),log(-1,2),log(NULL,2);
 log(exp(10))	exp(log(sqrt(10))*2)	log(-1)	log(NULL)	log(1,1)	log(3,9)	log(-1,2)	log(NULL,2)
 10	10	NULL	NULL	NULL	2	NULL	NULL
 explain extended select log(exp(10)),exp(log(sqrt(10))*2),log(-1),log(NULL),log(1,1),log(3,9),log(-1,2),log(NULL,2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select log(exp(10)) AS `log(exp(10))`,exp((log(sqrt(10)) * 2)) AS `exp(log(sqrt(10))*2)`,log(-(1)) AS `log(-1)`,log(NULL) AS `log(NULL)`,log(1,1) AS `log(1,1)`,log(3,9) AS `log(3,9)`,log(-(1),2) AS `log(-1,2)`,log(NULL,2) AS `log(NULL,2)`
 select ln(exp(10)),exp(ln(sqrt(10))*2),ln(-1),ln(0),ln(NULL);
 ln(exp(10))	exp(ln(sqrt(10))*2)	ln(-1)	ln(0)	ln(NULL)
 10	10	NULL	NULL	NULL
 explain extended select ln(exp(10)),exp(ln(sqrt(10))*2),ln(-1),ln(0),ln(NULL);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select ln(exp(10)) AS `ln(exp(10))`,exp((ln(sqrt(10)) * 2)) AS `exp(ln(sqrt(10))*2)`,ln(-(1)) AS `ln(-1)`,ln(0) AS `ln(0)`,ln(NULL) AS `ln(NULL)`
 select log2(8),log2(15),log2(-2),log2(0),log2(NULL);
 log2(8)	log2(15)	log2(-2)	log2(0)	log2(NULL)
 3	3.9068905956085	NULL	NULL	NULL
 explain extended select log2(8),log2(15),log2(-2),log2(0),log2(NULL);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select log2(8) AS `log2(8)`,log2(15) AS `log2(15)`,log2(-(2)) AS `log2(-2)`,log2(0) AS `log2(0)`,log2(NULL) AS `log2(NULL)`
 select log10(100),log10(18),log10(-4),log10(0),log10(NULL);
 log10(100)	log10(18)	log10(-4)	log10(0)	log10(NULL)
 2	1.2552725051033	NULL	NULL	NULL
 explain extended select log10(100),log10(18),log10(-4),log10(0),log10(NULL);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select log10(100) AS `log10(100)`,log10(18) AS `log10(18)`,log10(-(4)) AS `log10(-4)`,log10(0) AS `log10(0)`,log10(NULL) AS `log10(NULL)`
 select pow(10,log10(10)),power(2,4);
 pow(10,log10(10))	power(2,4)
 10	16
 explain extended select pow(10,log10(10)),power(2,4);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select pow(10,log10(10)) AS `pow(10,log10(10))`,pow(2,4) AS `power(2,4)`
 set @@rand_seed1=10000000,@@rand_seed2=1000000;
@@ -87,16 +87,16 @@
 rand(999999)	rand()
 0.014231365187309	0.028870999839968
 explain extended select rand(999999),rand();
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache rand(999999) AS `rand(999999)`,rand() AS `rand()`
 select pi(),format(sin(pi()/2),6),format(cos(pi()/2),6),format(abs(tan(pi())),6),format(cot(1),6),format(asin(1),6),format(acos(0),6),format(atan(1),6);
 pi()	format(sin(pi()/2),6)	format(cos(pi()/2),6)	format(abs(tan(pi())),6)	format(cot(1),6)	format(asin(1),6)	format(acos(0),6)	format(atan(1),6)
 3.141593	1.000000	0.000000	0.000000	0.642093	1.570796	1.570796	0.785398
 explain extended select pi(),format(sin(pi()/2),6),format(cos(pi()/2),6),format(abs(tan(pi())),6),format(cot(1),6),format(asin(1),6),format(acos(0),6),format(atan(1),6);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select pi() AS `pi()`,format(sin((pi() / 2)),6) AS `format(sin(pi()/2),6)`,format(cos((pi() / 2)),6) AS `format(cos(pi()/2),6)`,format(abs(tan(pi())),6) AS `format(abs(tan(pi())),6)`,format((1 / tan(1)),6) AS `format(cot(1),6)`,format(asin(1),6) AS `format(asin(1),6)`,format(acos(0),6) AS `format(acos(0),6)`,format(atan(1),6) AS `format(atan(1),6)`
 select degrees(pi()),radians(360);
@@ -124,8 +124,8 @@
 format(4.55, 1)	format(4.551, 1)
 4.6	4.6
 explain extended select degrees(pi()),radians(360);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select degrees(pi()) AS `degrees(pi())`,radians(360) AS `radians(360)`
 select rand(rand);

--- 1.11/mysql-test/r/func_op.result	2006-04-13 14:04:07 +04:00
+++ 1.12/mysql-test/r/func_op.result	2006-07-16 23:10:53 +04:00
@@ -2,16 +2,16 @@
 1+1	1-1	1+1*2	8/5	8%5	mod(8,5)	mod(8,5)|0	-(1+1)*-2
 2	0	3	1.6000	3	3	3	4
 explain extended select 1+1,1-1,1+1*2,8/5,8%5,mod(8,5),mod(8,5)|0,-(1+1)*-2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (1 + 1) AS `1+1`,(1 - 1) AS `1-1`,(1 + (1 * 2)) AS `1+1*2`,(8 / 5) AS `8/5`,(8 % 5) AS `8%5`,(8 % 5) AS `mod(8,5)`,((8 % 5) | 0) AS `mod(8,5)|0`,(-((1 + 1)) * -(2)) AS `-(1+1)*-2`
 select 1 | (1+1),5 & 3,bit_count(7) ;
 1 | (1+1)	5 & 3	bit_count(7)
 3	1	3
 explain extended select 1 | (1+1),5 & 3,bit_count(7) ;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (1 | (1 + 1)) AS `1 | (1+1)`,(5 & 3) AS `5 & 3`,bit_count(7) AS `bit_count(7)`
 select 1 << 32,1 << 63, 1 << 64, 4 >> 2, 4 >> 63, 1<< 63 >> 60;

--- 1.10/mysql-test/r/func_regexp.result	2004-07-20 09:48:24 +04:00
+++ 1.11/mysql-test/r/func_regexp.result	2006-07-16 23:10:53 +04:00
@@ -37,8 +37,8 @@
 xxx
 this is a test of some long text to see what happens
 explain extended select * from t1 where xxx regexp('is a test of some long text to');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	1	
 Warnings:
 Note	1003	select `test`.`t1`.`xxx` AS `xxx` from `test`.`t1` where (`test`.`t1`.`xxx` regexp _latin1'is a test of some long text to')
 select * from t1 where xxx regexp('is a test of some long text to ');

--- 1.15/mysql-test/r/func_set.result	2005-02-19 19:58:20 +03:00
+++ 1.16/mysql-test/r/func_set.result	2006-07-16 23:10:53 +04:00
@@ -2,8 +2,8 @@
 interval(55,10,20,30,40,50,60,70,80,90,100)	interval(3,1,1+1,1+1+1+1)	field("IBM","NCA","ICL","SUN","IBM","DIGITAL")	field("A","B","C")	elt(2,"ONE","TWO","THREE")	interval(0,1,2,3,4)	elt(1,1,2,3)|0	elt(1,1.1,1.2,1.3)+0
 5	2	4	0	TWO	0	1	1.1
 explain extended select INTERVAL(55,10,20,30,40,50,60,70,80,90,100),interval(3,1,1+1,1+1+1+1),field("IBM","NCA","ICL","SUN","IBM","DIGITAL"),field("A","B","C"),elt(2,"ONE","TWO","THREE"),interval(0,1,2,3,4),elt(1,1,2,3)|0,elt(1,1.1,1.2,1.3)+0;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select interval((55,10,20,30,40,50,60,70,80,90,100)) AS `INTERVAL(55,10,20,30,40,50,60,70,80,90,100)`,interval((3,1,(1 + 1),(((1 + 1) + 1) + 1))) AS `interval(3,1,1+1,1+1+1+1)`,field(_latin1'IBM',_latin1'NCA',_latin1'ICL',_latin1'SUN',_latin1'IBM',_latin1'DIGITAL') AS `field("IBM","NCA","ICL","SUN","IBM","DIGITAL")`,field(_latin1'A',_latin1'B',_latin1'C') AS `field("A","B","C")`,elt(2,_latin1'ONE',_latin1'TWO',_latin1'THREE') AS `elt(2,"ONE","TWO","THREE")`,interval((0,1,2,3,4)) AS `interval(0,1,2,3,4)`,(elt(1,1,2,3) | 0) AS `elt(1,1,2,3)|0`,(elt(1,1.1,1.2,1.3) + 0) AS `elt(1,1.1,1.2,1.3)+0`
 SELECT INTERVAL(13, 7, 14, 21, 28, 35, 42, 49, 56);

--- 1.24/mysql-test/r/func_system.result	2006-03-06 13:39:32 +03:00
+++ 1.25/mysql-test/r/func_system.result	2006-07-16 23:10:53 +04:00
@@ -38,8 +38,8 @@
 charset(version())
 utf8
 explain extended select database(), user();
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache database() AS `database()`,user() AS `user()`
 create table t1 (version char(60)) select database(), user(), version() as 'version';

--- 1.29/mysql-test/r/func_test.result	2005-08-27 09:23:08 +04:00
+++ 1.30/mysql-test/r/func_test.result	2006-07-16 23:10:53 +04:00
@@ -45,8 +45,8 @@
 3 ^ 11	1 ^ 1	1 ^ 0	1 ^ NULL	NULL ^ 1
 8	0	1	NULL	NULL
 explain extended select 3 ^ 11, 1 ^ 1, 1 ^ 0, 1 ^ NULL, NULL ^ 1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (3 ^ 11) AS `3 ^ 11`,(1 ^ 1) AS `1 ^ 1`,(1 ^ 0) AS `1 ^ 0`,(1 ^ NULL) AS `1 ^ NULL`,(NULL ^ 1) AS `NULL ^ 1`
 select 1 XOR 1, 1 XOR 0, 0 XOR 1, 0 XOR 0, NULL XOR 1, 1 XOR NULL, 0 XOR NULL;
@@ -59,16 +59,16 @@
 10 % 7	10 mod 7	10 div 3
 3	3	3
 explain extended select 10 % 7, 10 mod 7, 10 div 3;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (10 % 7) AS `10 % 7`,(10 % 7) AS `10 mod 7`,(10 DIV 3) AS `10 div 3`
 select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
 (1 << 64)-1	((1 << 64)-1) DIV 1	((1 << 64)-1) DIV 2
 18446744073709551615	18446744073709551615	9223372036854775807
 explain extended select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select ((1 << 64) - 1) AS `(1 << 64)-1`,(((1 << 64) - 1) DIV 1) AS `((1 << 64)-1) DIV 1`,(((1 << 64) - 1) DIV 2) AS `((1 << 64)-1) DIV 2`
 create table t1 (a int);
@@ -76,16 +76,16 @@
 select * from t1 where 1 xor 1;
 a
 explain extended select * from t1 where 1 xor 1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a` from `test`.`t1`
 select - a from t1;
 - a
 -1
 explain extended select - a from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	1	
 Warnings:
 Note	1003	select -(`test`.`t1`.`a`) AS `- a` from `test`.`t1`
 drop table t1;
@@ -105,8 +105,8 @@
 _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci
 1
 explain extended select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (_koi8r'a' = (_koi8r'A' collate koi8r_general_ci)) AS `_koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci`
 select _koi8r'a' = _koi8r'A' COLLATE koi8r_bin;

--- 1.59/mysql-test/r/func_time.result	2006-06-30 16:08:16 +04:00
+++ 1.60/mysql-test/r/func_time.result	2006-07-16 23:10:53 +04:00
@@ -719,8 +719,8 @@
 strcmp(concat(utc_date(),' ',utc_time()),utc_timestamp())=0
 1
 explain extended select period_add("9602",-12),period_diff(199505,"9404"),from_days(to_days("960101")),dayofmonth("1997-01-02"), month("1997-01-02"), monthname("1972-03-04"),dayofyear("0000-00-00"),HOUR("1997-03-03 23:03:22"),MINUTE("23:03:22"),SECOND(230322),QUARTER(980303),WEEK("1998-03-03"),yearweek("2000-01-01",1),week(19950101,1),year("98-02-03"),weekday(curdate())-weekday(now()),dayname("1962-03-03"),unix_timestamp(),sec_to_time(time_to_sec("0:30:47")/6.21),curtime(),utc_time(),curdate(),utc_date(),utc_timestamp(),date_format("1997-01-02 03:04:05", "%M %W %D %Y %y %m %d %h %i %s %w"),from_unixtime(unix_timestamp("1994-03-02 10:11:12")),"1997-12-31 23:59:59" + INTERVAL 1 SECOND,"1998-01-01 00:00:00" - INTERVAL 1 SECOND,INTERVAL 1 DAY + "1997-12-31", extract(YEAR FROM "1999-01-02 10:11:12"),date_add("1997-12-31 23:59:59",INTERVAL 1 SECOND);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache period_add(_latin1'9602',-(12)) AS `period_add("9602",-12)`,period_diff(199505,_latin1'9404') AS `period_diff(199505,"9404")`,from_days(to_days(_latin1'960101')) AS `from_days(to_days("960101"))`,dayofmonth(_latin1'1997-01-02') AS `dayofmonth("1997-01-02")`,month(_latin1'1997-01-02') AS `month("1997-01-02")`,monthname(_latin1'1972-03-04') AS `monthname("1972-03-04")`,dayofyear(_latin1'0000-00-00') AS `dayofyear("0000-00-00")`,hour(_latin1'1997-03-03 23:03:22') AS `HOUR("1997-03-03 23:03:22")`,minute(_latin1'23:03:22') AS `MINUTE("23:03:22")`,second(230322) AS `SECOND(230322)`,quarter(980303) AS `QUARTER(980303)`,week(_latin1'1998-03-03',0) AS `WEEK("1998-03-03")`,yearweek(_latin1'2000-01-01',1) AS `yearweek("2000-01-01",1)`,week(19950101,1) AS `week(19950101,1)`,year(_latin1'98-02-03') AS `year("98-02-03")`,(weekday(curdate()) - weekday(now())) AS `weekday(curdate())-weekday(now())`,dayname(_latin1'1962-03-03') AS `dayname("1962-03-03")`,unix_ti
 mestamp() AS `unix_timestamp()`,sec_to_time((time_to_sec(_latin1'0:30:47') / 6.21)) AS `sec_to_time(time_to_sec("0:30:47")/6.21)`,curtime() AS `curtime()`,utc_time() AS `utc_time()`,curdate() AS `curdate()`,utc_date() AS `utc_date()`,utc_timestamp() AS `utc_timestamp()`,date_format(_latin1'1997-01-02 03:04:05',_latin1'%M %W %D %Y %y %m %d %h %i %s %w') AS `date_format("1997-01-02 03:04:05", "%M %W %D %Y %y %m %d %h %i %s %w")`,from_unixtime(unix_timestamp(_latin1'1994-03-02 10:11:12')) AS `from_unixtime(unix_timestamp("1994-03-02 10:11:12"))`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `"1997-12-31 23:59:59" + INTERVAL 1 SECOND`,(_latin1'1998-01-01 00:00:00' - interval 1 second) AS `"1998-01-01 00:00:00" - INTERVAL 1 SECOND`,(_latin1'1997-12-31' + interval 1 day) AS `INTERVAL 1 DAY + "1997-12-31"`,extract(year from _latin1'1999-01-02 10:11:12') AS `extract(YEAR FROM "1999-01-02 10:11:12")`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `date_add("1997-12-31 
 23:59:59",INTERVAL 1 SECOND)`
 SET @TMP=NOW();
@@ -808,8 +808,8 @@
 End of 4.1 tests
 explain extended select timestampdiff(SQL_TSI_WEEK, '2001-02-01', '2001-05-01') as a1,
 timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select timestampdiff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS `a1`,timestampdiff(SECOND_FRAC,_latin1'2001-02-01 12:59:59.120000',_latin1'2001-05-01 12:58:58.119999') AS `a2`
 select time_format('100:00:00', '%H %k %h %I %l');

--- 1.68/mysql-test/r/group_by.result	2005-09-09 14:47:45 +04:00
+++ 1.69/mysql-test/r/group_by.result	2006-07-16 23:10:53 +04:00
@@ -285,8 +285,8 @@
 2	2
 1	1
 explain extended select sql_big_result spid,sum(userid) from t1 group by spid desc;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	8	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	8	8	Using filesort
 Warnings:
 Note	1003	select sql_big_result `test`.`t1`.`spID` AS `spid`,sum(`test`.`t1`.`userID`) AS `sum(userid)` from `test`.`t1` group by `test`.`t1`.`spID` desc
 explain select sql_big_result spid,sum(userid) from t1 group by spid desc order by null;

--- 1.26/mysql-test/r/having.result	2006-05-17 09:19:36 +04:00
+++ 1.27/mysql-test/r/having.result	2006-07-16 23:10:54 +04:00
@@ -9,8 +9,8 @@
 b
 0
 explain extended select count(a) as b from t1 where a=0 having b >=0;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 Warnings:
 Note	1003	select count(`test`.`t1`.`a`) AS `b` from `test`.`t1` where 0 having (`b` >= 0)
 drop table t1;

--- 1.39/mysql-test/r/join.result	2006-06-19 19:31:25 +04:00
+++ 1.40/mysql-test/r/join.result	2006-07-16 23:10:54 +04:00
@@ -764,3 +764,15 @@
 y	c	b	a	z
 1	3	2	1	4
 drop table t1, t2, t3, t4, t5;
+create table t1 (a int);
+insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t2 (a int, b int, filler char(100), key(a), key(b));
+create table t3 (a int, b int, filler char(100), key(a), key(b));
+insert into t2 
+select @a:= A.a + 10*(B.a + 10*C.a), @a, 'filler' from t1 A, t1 B, t1 C;
+insert into t3 select * from t2 where a < 800;
+explain select * from t2,t3 where t2.a < 200 and t2.b=t3.b;
+id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
+1	SIMPLE	t2	ALL	a,b	NULL	NULL	NULL	198	Using where
+1	SIMPLE	t3	ref	b	b	5	test.t2.b	1	Using where
+drop table t1, t2, t3;

--- 1.49/mysql-test/r/join_outer.result	2006-05-20 06:00:54 +04:00
+++ 1.50/mysql-test/r/join_outer.result	2006-07-16 23:10:54 +04:00
@@ -1145,7 +1145,7 @@
 SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id 
 WHERE t1.name LIKE 'A%';
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	PRIMARY,name	name	23	NULL	3	Using where; Using index
+1	SIMPLE	t1	index	PRIMARY,name	name	23	NULL	1	Using where; Using index
 1	SIMPLE	t2	ref	fkey	fkey	5	test.t1.id	1	Using where; Using index
 EXPLAIN
 SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id 

--- 1.36/mysql-test/r/key.result	2006-07-01 01:34:16 +04:00
+++ 1.37/mysql-test/r/key.result	2006-07-16 23:10:54 +04:00
@@ -216,7 +216,7 @@
 1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	Using index
 explain select 1 from t1 where id =2 or id=3;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	7	Using where; Using index
+1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	2	Using where; Using index
 explain select name from t1 where id =2;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	

--- 1.36/mysql-test/r/null.result	2006-05-01 21:41:35 +04:00
+++ 1.37/mysql-test/r/null.result	2006-07-16 23:10:54 +04:00
@@ -3,8 +3,8 @@
 NULL	NULL	isnull(null)	isnull(1/0)	isnull(1/0 = null)	ifnull(null,1)	ifnull(null,"TRUE")	ifnull("TRUE","ERROR")	1/0 is null	1 is not null
 NULL	NULL	1	1	1	1	TRUE	TRUE	1	1
 explain extended select null,\N,isnull(null),isnull(1/0),isnull(1/0 = null),ifnull(null,1),ifnull(null,"TRUE"),ifnull("TRUE","ERROR"),1/0 is null,1 is not null;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select NULL AS `NULL`,NULL AS `NULL`,isnull(NULL) AS `isnull(null)`,isnull((1 / 0)) AS `isnull(1/0)`,isnull(((1 / 0) = NULL)) AS `isnull(1/0 = null)`,ifnull(NULL,1) AS `ifnull(null,1)`,ifnull(NULL,_latin1'TRUE') AS `ifnull(null,"TRUE")`,ifnull(_latin1'TRUE',_latin1'ERROR') AS `ifnull("TRUE","ERROR")`,isnull((1 / 0)) AS `1/0 is null`,(1 is not null) AS `1 is not null`
 select 1 | NULL,1 & NULL,1+NULL,1-NULL;
@@ -29,8 +29,8 @@
 2 between null and 1	2 between 3 AND NULL	NULL between 1 and 2	2 between NULL and 3	2 between 1 AND null
 0	0	NULL	NULL	NULL
 explain extended select 2 between null and 1,2 between 3 AND NULL,NULL between 1 and 2,2 between NULL and 3, 2 between 1 AND null;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select (2 between NULL and 1) AS `2 between null and 1`,(2 between 3 and NULL) AS `2 between 3 AND NULL`,(NULL between 1 and 2) AS `NULL between 1 and 2`,(2 between NULL and 3) AS `2 between NULL and 3`,(2 between 1 and NULL) AS `2 between 1 AND null`
 SELECT NULL AND NULL, 1 AND NULL, NULL AND 1, NULL OR NULL, 0 OR NULL, NULL OR 0;
@@ -46,8 +46,8 @@
 inet_ntoa(null)	inet_aton(null)	inet_aton("122.256")	inet_aton("122.226.")	inet_aton("")
 NULL	NULL	NULL	NULL	NULL
 explain extended select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select inet_ntoa(NULL) AS `inet_ntoa(null)`,inet_aton(NULL) AS `inet_aton(null)`,inet_aton(_latin1'122.256') AS `inet_aton("122.256")`,inet_aton(_latin1'122.226.') AS `inet_aton("122.226.")`,inet_aton(_latin1'') AS `inet_aton("")`
 create table t1 (x int);

--- 1.51/mysql-test/r/order_by.result	2006-04-21 10:28:57 +04:00
+++ 1.52/mysql-test/r/order_by.result	2006-07-16 23:10:54 +04:00
@@ -291,7 +291,7 @@
 insert into t1 values (1, NULL, NULL), (1, NULL, 'b'), (1, 1, NULL), (1, 1, 'b'), (1, 1, 'b'), (2, 1, 'a'), (2, 1, 'b'), (2, 2, 'a'), (2, 2, 'b'), (2, 3, 'c'),(1,3,'b');
 explain select * from t1 where (a = 1 and b is null and c = 'b') or (a > 2) order by a desc;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	a	a	22	NULL	11	Using where; Using index
+1	SIMPLE	t1	index	a	a	22	NULL	2	Using where; Using index
 select * from t1 where (a = 1 and b is null and c = 'b') or (a > 2) order by a desc;
 a	b	c
 1	NULL	b

--- 1.45/mysql-test/r/range.result	2006-06-01 13:53:08 +04:00
+++ 1.46/mysql-test/r/range.result	2006-07-16 23:10:55 +04:00
@@ -247,7 +247,7 @@
 1	SIMPLE	t1	ref	x	x	5	const	1	Using where; Using index
 explain select count(*) from t1 where x in (1,2);
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	x	x	5	NULL	9	Using where; Using index
+1	SIMPLE	t1	index	x	x	5	NULL	2	Using where; Using index
 drop table t1;
 CREATE TABLE t1 (key1 int(11) NOT NULL default '0', KEY i1 (key1));
 INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);

--- 1.132/mysql-test/r/select.result	2006-06-30 16:08:16 +04:00
+++ 1.133/mysql-test/r/select.result	2006-07-16 23:10:55 +04:00
@@ -1390,7 +1390,7 @@
 1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1398,7 +1398,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1414,7 +1414,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1504,8 +1504,8 @@
 count(*)	min(fld4)	max(fld4)	sum(fld1)	avg(fld1)	std(fld1)	variance(fld1)
 70	absentee	vest	17788966	254128.0857	3272.5940	10709871.3069
 explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34 and fld4<>"";
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	1199	Using where
 Warnings:
 Note	1003	select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where ((`test`.`t2`.`companynr` = 34) and (`test`.`t2`.`fld4` <> _latin1''))
 select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;

--- 1.52/mysql-test/r/type_blob.result	2006-02-22 12:09:52 +03:00
+++ 1.53/mysql-test/r/type_blob.result	2006-07-16 23:10:55 +04:00
@@ -514,8 +514,8 @@
 charset(load_file('../../std_data/words.dat')),
 collation(load_file('../../std_data/words.dat')),
 coercibility(load_file('../../std_data/words.dat'));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache charset(load_file(_latin1'../../std_data/words.dat')) AS `charset(load_file('../../std_data/words.dat'))`,collation(load_file(_latin1'../../std_data/words.dat')) AS `collation(load_file('../../std_data/words.dat'))`,coercibility(load_file(_latin1'../../std_data/words.dat')) AS `coercibility(load_file('../../std_data/words.dat'))`
 update t1 set imagem=load_file('../../std_data/words.dat') where id=1;

--- 1.16/mysql-test/r/varbinary.result	2006-04-01 09:26:11 +04:00
+++ 1.17/mysql-test/r/varbinary.result	2006-07-16 23:10:56 +04:00
@@ -12,8 +12,8 @@
 insert into t1 set UNIQ=0x38afba1d73e6a18a;
 insert into t1 set UNIQ=123;
 explain extended select * from t1 where UNIQ=0x38afba1d73e6a18a;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	const	UNIQ	UNIQ	8	const	1	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	const	UNIQ	UNIQ	8	const	1	1	
 Warnings:
 Note	1003	select `test`.`t1`.`ID` AS `ID`,`test`.`t1`.`UNIQ` AS `UNIQ` from `test`.`t1` where 1
 drop table t1;

--- 1.85/mysql-test/r/variables.result	2006-05-20 06:00:54 +04:00
+++ 1.86/mysql-test/r/variables.result	2006-07-16 23:10:56 +04:00
@@ -72,8 +72,8 @@
 @t1:=(@t2:=1)+@t3:=4	@t1	@t2	@t3
 5	5	1	4
 explain extended select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache (@t1:=((@t2:=1) + (@t3:=4))) AS `@t1:=(@t2:=1)+@t3:=4`,(@t1) AS `@t1`,(@t2) AS `@t2`,(@t3) AS `@t3`
 select @t5;
@@ -132,16 +132,16 @@
 last_insert_id(345)
 345
 explain extended select last_insert_id(345);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache last_insert_id(345) AS `last_insert_id(345)`
 select @@IDENTITY,last_insert_id(), @@identity;
 @@IDENTITY	last_insert_id()	@@identity
 345	345	345
 explain extended select @@IDENTITY,last_insert_id(), @@identity;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache 345 AS `@@IDENTITY`,last_insert_id() AS `last_insert_id()`,345 AS `@@identity`
 set big_tables=OFF, big_tables=ON, big_tables=0, big_tables=1, big_tables="OFF", big_tables="ON";

--- 1.16/mysql-test/t/func_like.test	2005-09-06 15:15:38 +04:00
+++ 1.17/mysql-test/t/func_like.test	2006-07-16 23:10:56 +04:00
@@ -8,8 +8,8 @@
 
 create table t1 (a varchar(10), key(a));
 insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test");
-explain select * from t1 where a like 'abc%';
-explain select * from t1 where a like concat('abc','%');
+explain extended select * from t1 where a like 'abc%';
+explain extended select * from t1 where a like concat('abc','%');
 select * from t1 where a like "abc%";
 select * from t1 where a like concat("abc","%");
 select * from t1 where a like "ABC%";

--- 1.33/mysql-test/t/join.test	2006-06-19 19:31:25 +04:00
+++ 1.34/mysql-test/t/join.test	2006-07-16 23:10:56 +04:00
@@ -590,3 +590,22 @@
 drop table t1, t2, t3, t4, t5;
 
 # End of tests for WL#2486 - natural/using join
+
+#
+# BUG#14940: Make E(#rows) from "range" access be re-used by range optimizer
+#
+create table t1 (a int); 
+insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+
+create table t2 (a int, b int, filler char(100), key(a), key(b));
+create table t3 (a int, b int, filler char(100), key(a), key(b));
+
+insert into t2 
+  select @a:= A.a + 10*(B.a + 10*C.a), @a, 'filler' from t1 A, t1 B, t1 C;
+insert into t3 select * from t2 where a < 800;
+
+# The order of tables must be t2,t3:
+explain select * from t2,t3 where t2.a < 200 and t2.b=t3.b;
+
+drop table t1, t2, t3;
+

--- 1.83/mysql-test/r/myisam.result	2006-06-30 16:08:16 +04:00
+++ 1.84/mysql-test/r/myisam.result	2006-07-16 23:10:54 +04:00
@@ -365,7 +365,7 @@
 1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where
 explain select * from t1 where a=0 or a=2;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where
+1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where
 explain select * from t1 force index (a) where a=0 or a=2;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	range	a	a	4	NULL	4	Using where

--- 1.75/mysql-test/r/query_cache.result	2006-06-20 14:20:27 +04:00
+++ 1.76/mysql-test/r/query_cache.result	2006-07-16 23:10:55 +04:00
@@ -230,8 +230,8 @@
 select benchmark(1,1) from t1;
 benchmark(1,1)
 explain extended select benchmark(1,1) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	0	const row not found
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	0	0	const row not found
 Warnings:
 Note	1003	select sql_no_cache benchmark(1,1) AS `benchmark(1,1)` from `test`.`t1`
 show status like "Qcache_queries_in_cache";

--- 1.43/mysql-test/r/cast.result	2006-06-18 14:20:26 +04:00
+++ 1.44/mysql-test/r/cast.result	2006-07-16 23:10:52 +04:00
@@ -19,8 +19,8 @@
 ~5	cast(~5 as signed)
 18446744073709551610	-6
 explain extended select ~5, cast(~5 as signed);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select ~(5) AS `~5`,cast(~(5) as signed) AS `cast(~5 as signed)`
 select cast(5 as unsigned) -6.0;

--- 1.6/mysql-test/r/rpl_master_pos_wait.result	2004-05-14 00:46:58 +04:00
+++ 1.7/mysql-test/r/rpl_master_pos_wait.result	2006-07-16 23:10:55 +04:00
@@ -8,8 +8,8 @@
 master_pos_wait('master-bin.999999',0,2)
 -1
 explain extended select master_pos_wait('master-bin.999999',0,2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache master_pos_wait(_latin1'master-bin.999999',0,2) AS `master_pos_wait('master-bin.999999',0,2)`
  select master_pos_wait('master-bin.999999',0);

--- 1.119/mysql-test/r/func_str.result	2006-06-30 16:08:16 +04:00
+++ 1.120/mysql-test/r/func_str.result	2006-07-16 23:10:53 +04:00
@@ -811,8 +811,8 @@
 substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2)	substring_index("1abcd;2abcd;3abcd;4abcd", ';', -2)
 1abcd;2abcd	3abcd;4abcd
 explain extended select md5('hello'), sha('abc'), sha1('abc'), soundex(''), 'mood' sounds like 'mud', aes_decrypt(aes_encrypt('abc','1'),'1'),concat('*',space(5),'*'), reverse('abc'), rpad('a',4,'1'), lpad('a',4,'1'),  concat_ws(',','',NULL,'a'),make_set(255,_latin2'a',_latin2'b',_latin2'c'),elt(2,1),locate("a","b",2),format(130,10),char(0),conv(130,16,10),hex(130),binary 'HE', export_set(255,_latin2'y',_latin2'n',_latin2' '),FIELD('b' COLLATE latin1_bin,'A','B'),FIND_IN_SET(_latin1'B',_latin1'a,b,c,d'),collation(conv(130,16,10)), coercibility(conv(130,16,10)),length('\n\t\r\b\0\_\%\\'),bit_length('\n\t\r\b\0\_\%\\'),bit_length('\n\t\r\b\0\_\%\\'),concat('monty',' was here ','again'),length('hello'),char(ascii('h')),ord('h'),quote(1/0),crc32("123"),replace('aaaa','a','b'),insert('txs',2,1,'hi'),left(_latin2'a',1),right(_latin2'a',1),lcase(_latin2'a'),ucase(_latin2'a'),SUBSTR('abcdefg',3,2),substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2),trim(_latin2' a '),ltrim(_latin2' a
  '),rtrim(_latin2' a '), decode(encode(repeat("a",100000),"monty"),"monty");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select md5(_latin1'hello') AS `md5('hello')`,sha(_latin1'abc') AS `sha('abc')`,sha(_latin1'abc') AS `sha1('abc')`,soundex(_latin1'') AS `soundex('')`,(soundex(_latin1'mood') = soundex(_latin1'mud')) AS `'mood' sounds like 'mud'`,aes_decrypt(aes_encrypt(_latin1'abc',_latin1'1'),_latin1'1') AS `aes_decrypt(aes_encrypt('abc','1'),'1')`,concat(_latin1'*',repeat(_latin1' ',5),_latin1'*') AS `concat('*',space(5),'*')`,reverse(_latin1'abc') AS `reverse('abc')`,rpad(_latin1'a',4,_latin1'1') AS `rpad('a',4,'1')`,lpad(_latin1'a',4,_latin1'1') AS `lpad('a',4,'1')`,concat_ws(_latin1',',_latin1'',NULL,_latin1'a') AS `concat_ws(',','',NULL,'a')`,make_set(255,_latin2'a',_latin2'b',_latin2'c') AS `make_set(255,_latin2'a',_latin2'b',_latin2'c')`,elt(2,1) AS `elt(2,1)`,locate(_latin1'a',_latin1'b',2) AS `locate("a","b",2)`,format(130,10) AS `format(130,10)`,char(0) AS `char(0)`,conv(130,16,10) AS `conv(130,16,10)`,hex(130) AS `hex(130)`,cast(_latin1'HE' as char charset binary) AS `b
 inary 'HE'`,export_set(255,_latin2'y',_latin2'n',_latin2' ') AS `export_set(255,_latin2'y',_latin2'n',_latin2' ')`,field((_latin1'b' collate latin1_bin),_latin1'A',_latin1'B') AS `FIELD('b' COLLATE latin1_bin,'A','B')`,find_in_set(_latin1'B',_latin1'a,b,c,d') AS `FIND_IN_SET(_latin1'B',_latin1'a,b,c,d')`,collation(conv(130,16,10)) AS `collation(conv(130,16,10))`,coercibility(conv(130,16,10)) AS `coercibility(conv(130,16,10))`,length(_latin1'\n	\r\0\\_\\%\\') AS `length('\n\t\r\b\0\_\%\\')`,bit_length(_latin1'\n	\r\0\\_\\%\\') AS `bit_length('\n\t\r\b\0\_\%\\')`,bit_length(_latin1'\n	\r\0\\_\\%\\') AS `bit_length('\n\t\r\b\0\_\%\\')`,concat(_latin1'monty',_latin1' was here ',_latin1'again') AS `concat('monty',' was here ','again')`,length(_latin1'hello') AS `length('hello')`,char(ascii(_latin1'h')) AS `char(ascii('h'))`,ord(_latin1'h') AS `ord('h')`,quote((1 / 0)) AS `quote(1/0)`,crc32(_latin1'123') AS `crc32("123")`,replace(_latin1'aaaa',_latin1'a',_latin1'b') AS `replace
 ('aaaa','a','b')`,insert(_latin1'txs',2,1,_latin1'hi') AS `insert('txs',2,1,'hi')`,left(_latin2'a',1) AS `left(_latin2'a',1)`,right(_latin2'a',1) AS `right(_latin2'a',1)`,lcase(_latin2'a') AS `lcase(_latin2'a')`,ucase(_latin2'a') AS `ucase(_latin2'a')`,substr(_latin1'abcdefg',3,2) AS `SUBSTR('abcdefg',3,2)`,substring_index(_latin1'1abcd;2abcd;3abcd;4abcd',_latin1';',2) AS `substring_index("1abcd;2abcd;3abcd;4abcd", ';', 2)`,trim(_latin2' a ') AS `trim(_latin2' a ')`,ltrim(_latin2' a ') AS `ltrim(_latin2' a ')`,rtrim(_latin2' a ') AS `rtrim(_latin2' a ')`,decode(encode(repeat(_latin1'a',100000))) AS `decode(encode(repeat("a",100000),"monty"),"monty")`
 SELECT lpad(12345, 5, "#");

--- 1.21/mysql-test/r/func_if.result	2006-02-14 15:24:07 +03:00
+++ 1.22/mysql-test/r/func_if.result	2006-07-16 23:10:53 +04:00
@@ -40,8 +40,8 @@
 aa
 aaa
 explain extended select if(u=1,st,binary st) s from t1 where st like "%a%" order by s;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	Using where; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	7	Using where; Using filesort
 Warnings:
 Note	1003	select if((`test`.`t1`.`u` = 1),`test`.`t1`.`st`,cast(`test`.`t1`.`st` as char charset binary)) AS `s` from `test`.`t1` where (`test`.`t1`.`st` like _latin1'%a%') order by if((`test`.`t1`.`u` = 1),`test`.`t1`.`st`,cast(`test`.`t1`.`st` as char charset binary))
 select nullif(u, 1) from t1;
@@ -54,8 +54,8 @@
 0
 0
 explain extended select nullif(u, 1) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	7	
 Warnings:
 Note	1003	select nullif(`test`.`t1`.`u`,1) AS `nullif(u, 1)` from `test`.`t1`
 drop table t1;

--- 1.6/mysql-test/r/compress.result	2006-06-09 23:27:18 +04:00
+++ 1.7/mysql-test/r/compress.result	2006-07-16 23:10:52 +04:00
@@ -1391,7 +1391,7 @@
 1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1399,7 +1399,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1415,7 +1415,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1505,8 +1505,8 @@
 count(*)	min(fld4)	max(fld4)	sum(fld1)	avg(fld1)	std(fld1)	variance(fld1)
 70	absentee	vest	17788966	254128.0857	3272.5940	10709871.3069
 explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34 and fld4<>"";
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	1199	Using where
 Warnings:
 Note	1003	select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where ((`test`.`t2`.`companynr` = 34) and (`test`.`t2`.`fld4` <> _latin1''))
 select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;

--- 1.5/mysql-test/r/ssl.result	2006-06-09 23:27:19 +04:00
+++ 1.6/mysql-test/r/ssl.result	2006-07-16 23:10:55 +04:00
@@ -1391,7 +1391,7 @@
 1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1399,7 +1399,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1415,7 +1415,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1505,8 +1505,8 @@
 count(*)	min(fld4)	max(fld4)	sum(fld1)	avg(fld1)	std(fld1)	variance(fld1)
 70	absentee	vest	17788966	254128.0857	3272.5940	10709871.3069
 explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34 and fld4<>"";
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	1199	Using where
 Warnings:
 Note	1003	select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where ((`test`.`t2`.`companynr` = 34) and (`test`.`t2`.`fld4` <> _latin1''))
 select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;

--- 1.5/mysql-test/r/ssl_compress.result	2006-06-09 23:27:19 +04:00
+++ 1.6/mysql-test/r/ssl_compress.result	2006-07-16 23:10:55 +04:00
@@ -1394,7 +1394,7 @@
 1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1402,7 +1402,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1418,7 +1418,7 @@
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
+1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	11	Using where
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	
 explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -1508,8 +1508,8 @@
 count(*)	min(fld4)	max(fld4)	sum(fld1)	avg(fld1)	std(fld1)	variance(fld1)
 70	absentee	vest	17788966	254128.0857	3272.5940	10709871.3069
 explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34 and fld4<>"";
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	1199	Using where
 Warnings:
 Note	1003	select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where ((`test`.`t2`.`companynr` = 34) and (`test`.`t2`.`fld4` <> _latin1''))
 select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;

--- 1.6/mysql-test/r/negation_elimination.result	2004-09-09 07:59:20 +04:00
+++ 1.7/mysql-test/r/negation_elimination.result	2006-07-16 23:10:54 +04:00
@@ -384,8 +384,8 @@
 2	1
 3	1
 explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	NULL	a	5	NULL	5	Using where; Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	NULL	a	5	NULL	5	5	Using where; Using index
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like _latin1'1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a`
 drop table t1;

--- 1.30/mysql-test/r/gis.result	2006-03-02 15:18:45 +03:00
+++ 1.31/mysql-test/r/gis.result	2006-07-16 23:10:53 +04:00
@@ -225,8 +225,8 @@
 120	POLYGON((0 0,10 0,10 10,0 10,0 0))
 121	POLYGON((3 6,44 6,44 9,3 9,3 6))
 explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_geometry	ALL	NULL	NULL	NULL	NULL	21	21	
 Warnings:
 Note	1003	select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 SELECT fid, X(g) FROM gis_point;
@@ -242,8 +242,8 @@
 103	20
 104	20
 explain extended select X(g),Y(g) FROM gis_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_point	ALL	NULL	NULL	NULL	NULL	4	4	
 Warnings:
 Note	1003	select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 SELECT fid, AsText(StartPoint(g)) FROM gis_line;
@@ -277,8 +277,8 @@
 106	1
 107	0
 explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_line	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 SELECT fid, AsText(Centroid(g)) FROM gis_polygon;
@@ -307,8 +307,8 @@
 109	LINESTRING(10 10,20 10,20 20,10 20,10 10)
 110	NULL
 explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_polygon	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 SELECT fid, IsClosed(g) FROM gis_multi_line;
@@ -346,8 +346,8 @@
 120	2
 121	2
 explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
@@ -374,8 +374,8 @@
 120	POINT(0 0)
 121	POINT(44 6)
 explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	gis_multi_point	ALL	NULL	NULL	NULL	NULL	3	3	
 Warnings:
 Note	1003	select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 SELECT g1.fid as first, g2.fid as second,
@@ -393,9 +393,9 @@
 Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
-1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	2	Using temporary; Using filesort
+1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	2	
 Warnings:
 Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
@@ -436,26 +436,26 @@
 AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))))
 POINT(1 4)
 explain extended SELECT AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select astext(geometryfromwkb(aswkb(geometryfromtext(_latin1'POINT(1 4)')))) AS `AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))))`
 explain extended SELECT AsText(GeometryFromWKB(AsWKB(PointFromText('POINT(1 4)'))));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select astext(geometryfromwkb(aswkb(geometryfromtext(_latin1'POINT(1 4)')))) AS `AsText(GeometryFromWKB(AsWKB(PointFromText('POINT(1 4)'))))`
 SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));
 SRID(GeomFromText('LineString(1 1,2 2)',101))
 101
 explain extended SELECT SRID(GeomFromText('LineString(1 1,2 2)',101));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select srid(geometryfromtext(_latin1'LineString(1 1,2 2)',101)) AS `SRID(GeomFromText('LineString(1 1,2 2)',101))`
 explain extended select issimple(MultiPoint(Point(3, 6), Point(4, 10))), issimple(Point(3, 6));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select issimple(multipoint(point(3,6),point(4,10))) AS `issimple(MultiPoint(Point(3, 6), Point(4, 10)))`,issimple(point(3,6)) AS `issimple(Point(3, 6))`
 create table t1 (a geometry not null);

--- 1.7/mysql-test/r/bench_count_distinct.result	2004-07-20 09:48:24 +04:00
+++ 1.8/mysql-test/r/bench_count_distinct.result	2006-07-16 23:10:52 +04:00
@@ -4,8 +4,8 @@
 count(distinct n)
 100
 explain extended select count(distinct n) from t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	NULL	n	4	NULL	200	Using index
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	NULL	n	4	NULL	200	200	Using index
 Warnings:
 Note	1003	select count(distinct `test`.`t1`.`n`) AS `count(distinct n)` from `test`.`t1`
 drop table t1;

--- 1.18/mysql-test/r/func_crypt.result	2005-10-07 03:15:50 +04:00
+++ 1.19/mysql-test/r/func_crypt.result	2006-07-16 23:10:52 +04:00
@@ -88,8 +88,8 @@
 old_password(' i 	 d k f a ')
 5c078dc54ca0fcca
 explain extended select password('idkfa '), old_password('idkfa');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select password(_latin1'idkfa ') AS `password('idkfa ')`,old_password(_latin1'idkfa') AS `old_password('idkfa')`
 select encrypt('1234','_.');

--- 1.13/mysql-test/r/rpl_get_lock.result	2004-06-21 11:21:18 +04:00
+++ 1.14/mysql-test/r/rpl_get_lock.result	2006-07-16 23:10:55 +04:00
@@ -22,8 +22,8 @@
 is_free_lock("lock")	is_used_lock("lock") = connection_id()
 0	1
 explain extended select is_free_lock("lock"), is_used_lock("lock");
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache is_free_lock(_latin1'lock') AS `is_free_lock("lock")`,is_used_lock(_latin1'lock') AS `is_used_lock("lock")`
 select is_free_lock("lock2");

--- 1.20/mysql-test/r/insert_update.result	2006-05-17 17:05:06 +04:00
+++ 1.21/mysql-test/r/insert_update.result	2006-07-16 23:10:54 +04:00
@@ -57,13 +57,13 @@
 8	9	60	NULL
 2	1	11	NULL
 explain extended SELECT *, VALUES(a) FROM t1;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	5	
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,values(`test`.`t1`.`a`) AS `VALUES(a)` from `test`.`t1`
 explain extended select * from t1 where values(a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 Warnings:
 Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1`
 DROP TABLE t1;

--- 1.19/mysql-test/r/index_merge.result	2006-02-11 21:51:37 +03:00
+++ 1.20/mysql-test/r/index_merge.result	2006-07-16 23:10:54 +04:00
@@ -109,7 +109,7 @@
 explain select * from t0 where 
 (key1 < 3 or key2 < 3) and (key3 < 4 or key4 < 4) and (key5 < 2 or key6 < 2);
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	index_merge	i1,i2,i3,i4,i5,i6	i1,i2	4,4	NULL	6	Using sort_union(i1,i2); Using where
+1	SIMPLE	t0	index_merge	i1,i2,i3,i4,i5,i6	i1,i2	4,4	NULL	4	Using sort_union(i1,i2); Using where
 explain select * from t0 where 
 (key1 < 3 or key2 < 3) and (key3 < 100);
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -117,7 +117,7 @@
 explain select * from t0 where
 (key1 < 3 or key2 < 3) and (key3 < 1000);
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	i1,i2,i3	NULL	NULL	NULL	1024	Using where
+1	SIMPLE	t0	ALL	i1,i2,i3	NULL	NULL	NULL	916	Using where
 explain select * from t0 where 
 ((key1 < 4 or key2 < 4) and (key2 <5 or key3 < 4)) 
 or 
@@ -257,7 +257,7 @@
 select * from t0,t1 where (t0.key1=t1.key1) and 
 (t0.key1=3 or t0.key2=4) and t1.key1<200;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t0	ALL	i1,i2	NULL	NULL	NULL	1024	Using where
+1	SIMPLE	t0	ALL	i1,i2	NULL	NULL	NULL	183	Using where
 1	SIMPLE	t1	ref	i1	i1	4	test.t0.key1	1	
 explain 
 select * from t0,t1 where (t0.key1=t1.key1) and 

--- 1.8/mysql-test/r/index_merge_ror.result	2005-10-17 19:08:50 +04:00
+++ 1.9/mysql-test/r/index_merge_ror.result	2006-07-16 23:10:54 +04:00
@@ -10,7 +10,7 @@
 100	100
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	154	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	77	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 key1	key2	key3	key4	filler1
 100	100	100	100	key1-key2-key3-key4
@@ -32,7 +32,7 @@
 100	100
 explain select key1,key2,key3,key4 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	154	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	77	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
 select key1,key2,key3,key4 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 key1	key2	key3	key4
 100	100	100	100
@@ -40,7 +40,7 @@
 -1	-1	100	100
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	154	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	77	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 key1	key2	key3	key4	filler1
 100	100	100	100	key1-key2-key3-key4
@@ -55,7 +55,7 @@
 insert into t1 (key1,key2,key3,key4,filler1) values (101,101,101,101, 'key1234-101');
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=101;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3	key1,key2,key3	5,5,5	NULL	83	Using union(intersect(key1,key2),key3); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3	key1,key2,key3	5,5,5	NULL	76	Using union(intersect(key1,key2),key3); Using where
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=101;
 key1	key2	key3	key4	filler1
 100	100	100	100	key1-key2-key3-key4
@@ -72,14 +72,14 @@
 key1	key2	filler1
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	152	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	76	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 key1	key2	key3	key4	filler1
 -1	-1	100	100	key4-key3
 delete from t1 where key3=100 and key4=100;
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	152	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key1,key2,key3,key4	5,5,5,5	NULL	76	Using union(intersect(key1,key2),intersect(key3,key4)); Using where
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 key1	key2	key3	key4	filler1
 explain select key1,key2 from t1 where key1=100 and key2=100;
@@ -92,7 +92,7 @@
 insert into t1 (key1, key2, key3, key4, filler1) values (100, 100, 200, 200,'key1-key2-key3-key4-3');
 explain select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	136	Using union(key3,intersect(key1,key2),key4); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	76	Using union(key3,intersect(key1,key2),key4); Using where
 select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 key1	key2	key3	key4	filler1
 100	100	200	200	key1-key2-key3-key4-3
@@ -101,7 +101,7 @@
 insert into t1 (key1, key2, key3, key4, filler1) values (-1, -1, -1, 200,'key4');
 explain select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	146	Using union(key3,intersect(key1,key2),key4); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	76	Using union(key3,intersect(key1,key2),key4); Using where
 select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 key1	key2	key3	key4	filler1
 100	100	200	200	key1-key2-key3-key4-3
@@ -111,7 +111,7 @@
 insert into t1 (key1, key2, key3, key4, filler1) values (-1, -1, 200, -1,'key3');
 explain select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	156	Using union(key3,intersect(key1,key2),key4); Using where
+1	SIMPLE	t1	index_merge	key1,key2,key3,key4	key3,key1,key2,key4	5,5,5,5	NULL	76	Using union(key3,intersect(key1,key2),key4); Using where
 select key1,key2,key3,key4,filler1 from t1 where key3=200 or (key1=100 and key2=100) or key4=200;
 key1	key2	key3	key4	filler1
 100	100	200	200	key1-key2-key3-key4-3

--- 1.17/mysql-test/r/partition_pruning.result	2006-06-21 12:00:07 +04:00
+++ 1.18/mysql-test/r/partition_pruning.result	2006-07-16 23:10:55 +04:00
@@ -460,30 +460,70 @@
 explain partitions select * from t2 where b = 4;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	p0,p1,p2,p3,p4	ref	b	b	5	const	76	Using where
+explain extended select * from t2 where b = 6;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ref	b	b	5	const	76	76	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` = 6)
 explain partitions select * from t2 where b = 6;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	p0,p1,p2,p3,p4	ref	b	b	5	const	76	Using where
+explain extended select * from t2 where b in (1,3,5);
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	370	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (1,3,5))
 explain partitions select * from t2 where b in (1,3,5);
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	370	Using where
+explain extended select * from t2 where b in (2,4,6);
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	228	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (2,4,6))
 explain partitions select * from t2 where b in (2,4,6);
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	228	Using where
+explain extended select * from t2 where b in (7,8,9);
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	334	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` in (7,8,9))
 explain partitions select * from t2 where b in (7,8,9);
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	334	Using where
+explain extended select * from t2 where b > 5;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	408	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` > 5)
 explain partitions select * from t2 where b > 5;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	408	Using where
+explain extended select * from t2 where b > 5 and b < 8;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	201	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 5) and (`test`.`t2`.`b` < 8))
 explain partitions select * from t2 where b > 5 and b < 8;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	201	Using where
+explain extended select * from t2 where b > 5 and b < 7;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	range	b	b	5	NULL	76	76	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 5) and (`test`.`t2`.`b` < 7))
 explain partitions select * from t2 where b > 5 and b < 7;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	p0,p1,p2,p3,p4	range	b	b	5	NULL	76	Using where
+explain extended select * from t2 where b > 0 and b < 5;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	910	379	Using where
+Warnings:
+Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where ((`test`.`t2`.`b` > 0) and (`test`.`t2`.`b` < 5))
 explain partitions select * from t2 where b > 0 and b < 5;
 id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	910	Using where
+1	SIMPLE	t2	p0,p1,p2,p3,p4	ALL	b	NULL	NULL	NULL	379	Using where
 flush status;
 update t2 set a = 111 where b = 10;
 show status like 'Handler_read_rnd_next';

--- 1.8/mysql-test/t/index_merge_ror.test	2005-10-17 19:08:54 +04:00
+++ 1.9/mysql-test/t/index_merge_ror.test	2006-07-16 23:10:56 +04:00
@@ -97,7 +97,6 @@
 # One row results tests for cases where a single row matches all conditions 
 explain select key1,key2 from t1 where key1=100 and key2=100;
 select key1,key2 from t1 where key1=100 and key2=100;
-
 explain select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 select key1,key2,key3,key4,filler1 from t1 where key1=100 and key2=100 or key3=100 and key4=100;
 

--- 1.14/mysql-test/t/partition_pruning.test	2006-06-05 15:15:22 +04:00
+++ 1.15/mysql-test/t/partition_pruning.test	2006-07-16 23:10:56 +04:00
@@ -407,13 +407,29 @@
 explain partitions select * from t2 where (a = 100 OR a = 900);
 explain partitions select * from t2 where (a > 100 AND a < 600);
 explain partitions select * from t2 where b = 4;
+
+explain extended select * from t2 where b = 6;
 explain partitions select * from t2 where b = 6;
+
+explain extended select * from t2 where b in (1,3,5);
 explain partitions select * from t2 where b in (1,3,5);
+
+explain extended select * from t2 where b in (2,4,6);
 explain partitions select * from t2 where b in (2,4,6);
+
+explain extended select * from t2 where b in (7,8,9);
 explain partitions select * from t2 where b in (7,8,9);
+
+explain extended select * from t2 where b > 5;
 explain partitions select * from t2 where b > 5;
+
+explain extended select * from t2 where b > 5 and b < 8;
 explain partitions select * from t2 where b > 5 and b < 8;
+
+explain extended select * from t2 where b > 5 and b < 7;
 explain partitions select * from t2 where b > 5 and b < 7;
+
+explain extended select * from t2 where b > 0 and b < 5;
 explain partitions select * from t2 where b > 0 and b < 5;
 
 flush status;

--- 1.24/mysql-test/r/group_min_max.result	2006-05-23 17:42:56 +04:00
+++ 1.25/mysql-test/r/group_min_max.result	2006-07-16 23:10:53 +04:00
@@ -1558,9 +1558,11 @@
 explain select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	range	NULL	idx_t1_1	147	NULL	17	Using where; Using index for group-by
-explain select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	NULL	idx_t1_1	163	NULL	128	Using where; Using index
+explain extended select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	NULL	idx_t1_1	163	NULL	128	65	Using where; Using index
+Warnings:
+Note	1003	select distinct `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`c` = _latin1'i121') and (`test`.`t1`.`b` = _latin1'a') and (`test`.`t1`.`a2` >= _latin1'b'))
 explain select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	range	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	147	NULL	14	Using where; Using index for group-by
@@ -1573,9 +1575,11 @@
 explain select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	range	NULL	idx_t2_1	146	NULL	#	Using where; Using index for group-by
-explain select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	index	NULL	idx_t2_1	163	NULL	164	Using where; Using index
+explain extended select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t2	index	NULL	idx_t2_1	163	NULL	164	83	Using where; Using index
+Warnings:
+Note	1003	select distinct `test`.`t2`.`a1` AS `a1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where ((`test`.`t2`.`c` = _latin1'i121') and (`test`.`t2`.`b` = _latin1'a') and (`test`.`t2`.`a2` >= _latin1'b'))
 explain select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	range	idx_t2_0,idx_t2_1,idx_t2_2	idx_t2_1	146	NULL	#	Using where; Using index for group-by
@@ -1800,15 +1804,19 @@
 explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	index	NULL	idx_t1_1	163	NULL	128	Using where; Using index
-explain select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_2	147	NULL	128	Using where; Using index
+explain extended select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_2	147	NULL	128	96	Using where; Using index
+Warnings:
+Note	1003	select count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`) AS `count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`b` = _latin1'c') and (`test`.`t1`.`a1` > _latin1'a') and (`test`.`t1`.`a2` > _latin1'a'))
 explain select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	index	NULL	idx_t1_2	147	NULL	128	Using where; Using index
-explain select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_2	147	NULL	128	Using where; Using index
+explain extended select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_2	147	NULL	128	96	Using where; Using index
+Warnings:
+Note	1003	select (ord(`test`.`t1`.`a1`) + count(distinct `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`)) AS `ord(a1) + count(distinct a1,a2,b)` from `test`.`t1` where ((`test`.`t1`.`a1` > _latin1'a') and (`test`.`t1`.`a2` > _latin1'a'))
 select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
 count(distinct a1,a2,b)
 4
@@ -1911,24 +1919,32 @@
 explain select a1,a2,b,d from t1 group by a1,a2,b;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	128	Using temporary; Using filesort
-explain select a1,a2,min(b),max(b) from t1
+explain extended select a1,a2,min(b),max(b) from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	range	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	130	NULL	76	Using where; Using index
-explain select a1,a2,b,min(c),max(c) from t1
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	range	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	130	NULL	76	65	Using where; Using index
+Warnings:
+Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,min(`test`.`t1`.`b`) AS `min(b)`,max(`test`.`t1`.`b`) AS `max(b)` from `test`.`t1` where (((`test`.`t1`.`a1` = _latin1'b') or (`test`.`t1`.`a1` = _latin1'd') or (`test`.`t1`.`a1` = _latin1'a') or (`test`.`t1`.`a1` = _latin1'c')) and (`test`.`t1`.`a2` > _latin1'a') and (`test`.`t1`.`c` > _latin1'a111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`
+explain extended select a1,a2,b,min(c),max(c) from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	idx_t1_0,idx_t1_1,idx_t1_2	NULL	NULL	NULL	128	Using where; Using temporary; Using filesort
-explain select a1,a2,b,c from t1
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	idx_t1_0,idx_t1_1,idx_t1_2	NULL	NULL	NULL	128	65	Using where; Using temporary; Using filesort
+Warnings:
+Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,min(`test`.`t1`.`c`) AS `min(c)`,max(`test`.`t1`.`c`) AS `max(c)` from `test`.`t1` where (((`test`.`t1`.`a1` = _latin1'b') or (`test`.`t1`.`a1` = _latin1'd') or (`test`.`t1`.`a1` = _latin1'a') or (`test`.`t1`.`a1` = _latin1'c')) and (`test`.`t1`.`a2` > _latin1'a') and (`test`.`t1`.`d` > _latin1'xy2')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
+explain extended select a1,a2,b,c from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b,c;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	idx_t1_0,idx_t1_1,idx_t1_2	NULL	NULL	NULL	128	Using where; Using temporary; Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	idx_t1_0,idx_t1_1,idx_t1_2	NULL	NULL	NULL	128	65	Using where; Using temporary; Using filesort
+Warnings:
+Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where (((`test`.`t1`.`a1` = _latin1'b') or (`test`.`t1`.`a1` = _latin1'd') or (`test`.`t1`.`a1` = _latin1'a') or (`test`.`t1`.`a1` = _latin1'c')) and (`test`.`t1`.`a2` > _latin1'a') and (`test`.`t1`.`d` > _latin1'xy2')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`,`test`.`t1`.`c`
 explain select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') or (b < 'b') group by a1;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	index	NULL	idx_t2_1	163	NULL	164	Using where; Using index
-explain select a1,a2,b from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2,b;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	range	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	130	NULL	76	Using where; Using index
+explain extended select a1,a2,b from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2,b;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	range	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	130	NULL	76	65	Using where; Using index
+Warnings:
+Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (((`test`.`t1`.`a1` = _latin1'b') or (`test`.`t1`.`a1` = _latin1'd') or (`test`.`t1`.`a1` = _latin1'a') or (`test`.`t1`.`a1` = _latin1'c')) and (`test`.`t1`.`a2` > _latin1'a') and (`test`.`t1`.`c` > _latin1'a111')) group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
 explain select a1,a2,min(b),c from t2 where (a2 = 'a') and (c = 'a111') group by a1;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t2	index	NULL	idx_t2_1	163	NULL	164	Using where; Using index
@@ -1948,12 +1964,16 @@
 explain select a1,a2,count(a2) from t1 group by a1,a2,b;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	index	NULL	idx_t1_1	163	NULL	128	Using index
-explain select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	163	NULL	128	Using where; Using index
-explain select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	163	NULL	128	Using where; Using index
+explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	163	NULL	128	96	Using where; Using index
+Warnings:
+Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
+explain extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	index	idx_t1_0,idx_t1_1,idx_t1_2	idx_t1_1	163	NULL	128	96	Using where; Using index
+Warnings:
+Note	1003	select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
 explain select distinct(a1) from t1 where ord(a2) = 98;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 1	SIMPLE	t1	index	NULL	idx_t1_1	163	NULL	128	Using where; Using index
@@ -2084,7 +2104,7 @@
 ('SOUTH EAST'), ('SOUTH WEST'), ('WESTERN');
 EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	range	NULL	PRIMARY	66	NULL	12	Using index for group-by
+1	SIMPLE	t1	range	NULL	PRIMARY	66	NULL	11	Using index for group-by
 SELECT DISTINCT a,a FROM t1 ORDER BY a;
 a	a
 	

--- 1.22/mysql-test/t/group_min_max.test	2006-05-23 17:42:56 +04:00
+++ 1.23/mysql-test/t/group_min_max.test	2006-07-16 23:10:56 +04:00
@@ -489,7 +489,7 @@
 -- plans
 explain select distinct a1,a2,b from t1;
 explain select distinct a1,a2,b from t1 where (a2 >= 'b') and (b = 'a');
-explain select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
+explain extended select distinct a1,a2,b,c from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
 explain select distinct a1,a2,b from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
 explain select distinct b from t1 where (a2 >= 'b') and (b = 'a');
 
@@ -497,7 +497,7 @@
 explain select distinct a1,a2,b from t2;
 --replace_column 9 #
 explain select distinct a1,a2,b from t2 where (a2 >= 'b') and (b = 'a');
-explain select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
+explain extended select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
 --replace_column 9 #
 explain select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
 explain select distinct b from t2 where (a2 >= 'b') and (b = 'a');
@@ -568,9 +568,9 @@
 
 explain select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
 explain select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
-explain select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
+explain extended select count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a') and (b = 'c');
 explain select count(distinct b) from t1 where (a2 >= 'b') and (b = 'a');
-explain select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
+explain extended select ord(a1) + count(distinct a1,a2,b) from t1 where (a1 > 'a') and (a2 > 'a');
 
 select count(distinct a1,a2,b) from t1 where (a2 >= 'b') and (b = 'a');
 select count(distinct a1,a2,b,c) from t1 where (a2 >= 'b') and (b = 'a') and (c = 'i121');
@@ -607,19 +607,19 @@
 
 -- predicate that references an attribute that is after the MIN/MAX argument
 -- in the index
-explain select a1,a2,min(b),max(b) from t1
+explain extended select a1,a2,min(b),max(b) from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2;
 
 -- predicate that references a non-indexed attribute
-explain select a1,a2,b,min(c),max(c) from t1
+explain extended select a1,a2,b,min(c),max(c) from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b;
 
-explain select a1,a2,b,c from t1
+explain extended select a1,a2,b,c from t1
 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (d > 'xy2') group by a1,a2,b,c;
 
 -- non-equality predicate for a non-group select attribute
 explain select a1,a2,b,max(c),min(c) from t2 where (a2 = 'a') and (b = 'b') or (b < 'b') group by a1;
-explain select a1,a2,b from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2,b;
+explain extended select a1,a2,b from t1 where (a1 = 'b' or a1 = 'd' or a1 = 'a' or a1 = 'c') and (a2 > 'a') and (c > 'a111') group by a1,a2,b;
 
 -- non-group field with an equality predicate that references a keypart after the
 -- MIN/MAX argument
@@ -638,8 +638,8 @@
 
 -- other aggregate functions than MIN/MAX
 explain select a1,a2,count(a2) from t1 group by a1,a2,b;
-explain select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
-explain select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
+explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b;
+explain extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b;
 
 
 #

--- 1.8/mysql-test/r/func_encrypt.result	2005-06-27 21:30:53 +04:00
+++ 1.9/mysql-test/r/func_encrypt.result	2006-07-16 23:10:52 +04:00
@@ -179,7 +179,7 @@
 Warnings:
 Error	1108	Incorrect parameters to procedure 'des_decrypt'
 explain extended select des_decrypt(des_encrypt("hello",4),'password2'), des_decrypt(des_encrypt("hello","hidden"));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select des_decrypt(des_encrypt(_latin1'hello',4),_latin1'password2') AS `des_decrypt(des_encrypt("hello",4),'password2')`,des_decrypt(des_encrypt(_latin1'hello',_latin1'hidden')) AS `des_decrypt(des_encrypt("hello","hidden"))`

--- 1.16/mysql-test/r/func_compress.result	2006-04-13 15:19:16 +04:00
+++ 1.17/mysql-test/r/func_compress.result	2006-07-16 23:10:52 +04:00
@@ -8,16 +8,16 @@
 uncompress(compress(@test_compress_string))
 string for test compress function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 explain extended select uncompress(compress(@test_compress_string));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache uncompress(compress((@test_compress_string))) AS `uncompress(compress(@test_compress_string))`
 select uncompressed_length(compress(@test_compress_string))=length(@test_compress_string);
 uncompressed_length(compress(@test_compress_string))=length(@test_compress_string)
 1
 explain extended select uncompressed_length(compress(@test_compress_string))=length(@test_compress_string);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 Warnings:
 Note	1003	select sql_no_cache (uncompressed_length(compress((@test_compress_string))) = length((@test_compress_string))) AS `uncompressed_length(compress(@test_compress_string))=length(@test_compress_string)`
 select uncompressed_length(compress(@test_compress_string));

--- 1.57/mysql-test/r/func_gconcat.result	2006-06-04 19:51:59 +04:00
+++ 1.58/mysql-test/r/func_gconcat.result	2006-07-16 23:10:52 +04:00
@@ -15,8 +15,8 @@
 2	b,c
 3	E,C,D,d,d,D
 explain extended select grp,group_concat(c) from t1 group by grp;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	9	Using filesort
 Warnings:
 Note	1003	select `test`.`t1`.`grp` AS `grp`,group_concat(`test`.`t1`.`c` separator ',') AS `group_concat(c)` from `test`.`t1` group by `test`.`t1`.`grp`
 select grp,group_concat(a,c) from t1 group by grp;
@@ -90,8 +90,8 @@
 2	c,b
 3	E,D,C
 explain extended select grp,group_concat(distinct c order by c desc) from t1 group by grp;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	9	Using filesort
 Warnings:
 Note	1003	select `test`.`t1`.`grp` AS `grp`,group_concat(distinct `test`.`t1`.`c` order by `test`.`t1`.`c` DESC separator ',') AS `group_concat(distinct c order by c desc)` from `test`.`t1` group by `test`.`t1`.`grp`
 select grp,group_concat(c order by c separator ",") from t1 group by grp;
@@ -110,8 +110,8 @@
 2	b,c
 3	C,D,E
 explain extended select grp,group_concat(distinct c order by c separator ",") from t1 group by grp;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	Using filesort
+id	select_type	table	type	possible_keys	key	key_len	ref	in_rows	rows	Extra
+1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	9	Using filesort
 Warnings:
 Note	1003	select `test`.`t1`.`grp` AS `grp`,group_concat(distinct `test`.`t1`.`c` order by `test`.`t1`.`c` ASC separator ',') AS `group_concat(distinct c order by c separator ",")` from `test`.`t1` group by `test`.`t1`.`grp`
 select grp,group_concat(distinct c order by c desc separator ",") from t1 group by grp;
Thread
bk commit into 5.1 tree (sergefp:1.2230) BUG#14940Sergey Petrunia16 Jul