summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2005-01-22 02:42:54 -0800
committerunknown <igor@rurik.mysql.com>2005-01-22 02:42:54 -0800
commitd3db70de4c6027b9ae62b0814cdd45718e58a556 (patch)
tree8af432a50c14f0944f9bc73bab399c79cfce652f /sql
parentc695ccd27e753fe9ed67dc28443de7639203a4bc (diff)
parent25c2d1adb09a3dd521a110013ab03eac3e1fc01a (diff)
downloadmariadb-git-d3db70de4c6027b9ae62b0814cdd45718e58a556.tar.gz
Merge rurik.mysql.com:/home/igor/dev/mysql-4.0-0
into rurik.mysql.com:/home/igor/dev/mysql-4.1-0 mysql-test/r/select_found.result: Auto merged mysql-test/t/select_found.test: Auto merged sql/sql_select.cc: Auto merged
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_select.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index aea7cb9ed6d..a53b878cf6c 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -2828,9 +2828,15 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count,
x = used key parts (1 <= x <= c)
*/
double rec_per_key;
+#if 0
if (!(rec_per_key=(double)
keyinfo->rec_per_key[keyinfo->key_parts-1]))
rec_per_key=(double) s->records/rec+1;
+#else
+ rec_per_key= keyinfo->rec_per_key[keyinfo->key_parts-1] ?
+ (double) keyinfo->rec_per_key[keyinfo->key_parts-1] :
+ (double) s->records/rec+1;
+#endif
if (!s->records)
tmp=0;
@@ -7480,13 +7486,14 @@ remove_duplicates(JOIN *join, TABLE *entry,List<Item> &fields, Item *having)
field_count++;
}
- if (!field_count)
- { // only const items
+ if (!field_count && !(join->select_options & OPTION_FOUND_ROWS))
+ { // only const items with no OPTION_FOUND_ROWS
join->unit->select_limit_cnt= 1; // Only send first row
DBUG_RETURN(0);
}
Field **first_field=entry->field+entry->fields - field_count;
- offset=entry->field[entry->fields - field_count]->offset();
+ offset= field_count ?
+ entry->field[entry->fields - field_count]->offset() : 0;
reclength=entry->reclength-offset;
free_io_cache(entry); // Safety