Commit graph

60 commits

Author SHA1 Message Date
gkodinov@mysql.com
7bae0de398 BUG#18068: SELECT DISTINCT (with duplicates and covering index)
When converting DISTINCT to GROUP BY where the columns are from the covering
index and they are quoted twice in the SELECT list the optimizer is creating
improper processing sequence. This is because of the fact that the columns
of the covering index are not recognized as such and treated as non-index
columns.

Generally speaking duplicate columns can safely be removed from the GROUP
BY/DISTINCT list because this will not add or remove new rows in the
resulting set. Duplicates can be removed even if they are not consecutive
(as is the case for ORDER BY, where the duplicate columns can be removed
only if they are consecutive).

So we can safely transform "SELECT DISTINCT a,a FROM ... ORDER BY a" to
"SELECT a,a FROM ... GROUP BY a ORDER BY a" instead of 
"SELECT a,a FROM .. GROUP BY a,a ORDER BY a". We can even transform 
"SELECT DISTINCT a,b,a FROM ... ORDER BY a,b" to
"SELECT a,b,a FROM ... GROUP BY a,b ORDER BY a,b".

The fix to this bug consists of checking for duplicate columns in the SELECT
list when constructing the GROUP BY list in transforming DISTINCT to GROUP
BY and skipping the ones that are already in.
2006-05-09 18:13:01 +03:00
holyfoot@deer.(none)
a920d0df86 bug #15745 (COUNT(DISTINCT CONCAT(x,y)) returns wrong result 2006-03-05 20:48:31 +04:00
serg@serg.mylan
db896a66ca bad merge fixed 2005-09-15 21:05:42 +02:00
igor@rurik.mysql.com
8c34d8e578 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0
into rurik.mysql.com:/home/igor/mysql-5.0
2005-08-22 09:40:10 -07:00
pappa@c-4a09e253.1238-1-64736c10.cust.bredbandsbolaget.se
4084c13605 Merge c-4a09e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-4.1
into  c-4a09e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-5.0
2005-08-20 16:38:55 -04:00
igor@rurik.mysql.com
c4f677feb5 Manual merge 2005-08-19 20:21:09 -07:00
igor@rurik.mysql.com
2d32b77693 distinct.test, distinct.result:
Added test cases for bug #12625.
sql_select.cc:
  Fixed bug #12625.
  Fixed invalid removal of constant items from the DISTINCT
  list in the function create_distinct_group.
2005-08-19 01:57:22 -07:00
hf@deer.(none)
6c148a7969 Fix for bug #9764 (DISTINCT IFNULL truncates data) 2005-06-08 20:35:37 +05:00
holyfoot@hf-ibm.(none)
8f3647005c Tests and results fixed with last precision/decimal related modifications 2005-05-06 01:01:39 +05:00
igor@rurik.mysql.com
cdb40830d2 Manual merge 2005-02-11 15:00:29 -08:00
igor@rurik.mysql.com
1bb04b0642 distinct.result:
Adjustment of the result file after the revision of the fix for bug #7520.
2005-02-11 13:44:54 -08:00
hf@deer.(none)
b94a482ee9 Precision Math implementation 2005-02-09 02:50:45 +04:00
sergefp@mysql.com
034c59ed59 Fix test results to account for difference between release BDB, debug BDB and MyISAM. 2004-12-31 14:48:11 +03:00
timour@mysql.com
3bb2c4e325 After merge adjustment of tests due to changes in cost estimates. 2004-10-11 20:10:07 +03:00
timour@mysql.com
e2cd3dd1ce WL#1724 "Min/Max Optimization for Queries with Group By Clause"
- after-review changes
- merged with the source tree from 204-08-27
2004-08-27 16:37:13 +03:00
timour@mysql.com
a840d8daad Complete implementation of WL#1469 "Greedy algorithm to search for an optimal execution plan",
consisting of pos-review fixes and improvements.
2004-05-10 15:48:50 +03:00
pem@mysql.com
975061bb5a Merge 4.1 to 5.0. 2003-12-16 16:12:28 +01:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
fcf96dbb18 WorkLog#1323
Deprecate the use of TYPE=... Preferred syntax is ENGINE=
2003-12-10 04:31:42 +00:00
pem@mysql.com
337238b78a Merging 4.1->5.0 2003-10-22 16:10:22 +02:00
monty@narttu.mysql.fi
d9ff665102 Fixes after merge 2003-10-08 12:01:58 +03:00
pem@mysql.telia.com
6e55a3428a Post-merge fixes. 2003-09-24 15:26:20 +02:00
kostja@oak.local
6fba16eabf Applied Monty corrections to the FULL SCAN
optimiser bug patch.
2003-09-17 21:52:05 +04:00
kostja@oak.local
048245ae9d fixed test result to be in sync with the optimiser 2003-09-17 14:00:43 +04:00
kostja@oak.local
ab576328f0 Fixed bug in the optimiser for FULL TABLE SCAN case:
to estimate correctly cost of full table scan we should take into
account rows read and skipped on each iteration.
2003-09-15 22:21:39 +04:00
monty@mashka.mysql.fi
04c43fca8e Optimize thai character handling
Remove sel000xxxx tests
After merge fixes
2003-09-12 04:18:07 +03:00
monty@mashka.mysql.fi
4f7512160b After merge fixes
Use server character set if --default-character-set is not used
Added convert_string() for more efficient alloc+character-set convert of strings
2003-08-19 00:08:08 +03:00
monty@mashka.mysql.fi
2263e3e51f Merge with 4.0.14 2003-08-11 22:44:43 +03:00
Sinisa@sinisa.nasamreza.org
ee9237e0d8 missing test case for DISTINCT .. LEFT .. 2003-07-05 16:29:11 +03:00
monty@mashka.mysql.fi
dbebed97e4 Remove FORCE_INIT_OF_VARS when compiling for valgrind/purify to spot wrong LINT_INIT() options
Fixed bug in ALTER TABLE ... MODIFY integer-column
Added ref_or_null optimization (needed for subqueries)
2003-06-30 13:23:54 +03:00
monty@mashka.mysql.fi
34919a03c4 Added thread variable max_seeks_for_key
Change optimizer to prefer key lookups before table scan
Change table scans to be done after tables with constrains on scanned table
2003-06-27 03:04:54 +03:00
monty@narttu.mysql.fi
23145cfed7 Added SQLSTATE to client/server protocol
bmove_allign -> bmove_align
Added OLAP function ROLLUP
Split mysql_fix_privilege_tables to a script and a .sql data file
Added new (MEMROOT*) functions to avoid calling current_thd() when creating some common objects.
Added table_alias_charset, for easier --lower-case-table-name handling
Better SQL_MODE handling (Setting complex options also sets sub options)
New (faster) assembler string functions for x86
2003-06-04 18:28:51 +03:00
monty@mashka.mysql.fi
b14b246d38 Merge with 4.0 to get fix for MIN/MAX 2003-02-07 16:38:37 +02:00
monty@mashka.mysql.fi
cf9668fd37 Added START TRANSACTION syntax
Added ALL as parameter option for all group functions.
Make join handling uniform. This allows us to use ',', JOIN and INNER JOIN the same way.
Sort NULL last if DESC is used (ANSI SQL 99 requirement)
2003-02-06 16:55:59 +02:00
monty@mashka.mysql.fi
1f6ecc0cd3 Changed mysql-test to print warnings for not existing table to DROP TABLE
Cleaned up test; Removed wrong DROP TABLE commands and use standard table and database names.
changed store_warning() -> push_warning_print()
2003-01-06 01:48:59 +02:00
monty@mashka.mysql.fi
9c509fcb52 Transactions in AUTOCOMMIT=0 mode didn't rotate binary log
Don't enable any bulk insert or record caching code if inserting less than MIN_ROWS_TO_USE_BULK_INSERT rows (100)
2002-12-14 12:45:31 +02:00
serg@serg.mysql.com
b42eff16cb bulk insert code optimized 2002-12-07 22:40:20 +01:00
monty@mashka.mysql.fi
35ff08c2af After merge fixes
Added THD to add_to_xxx_list() functions for faster parsing.
2002-12-06 21:11:27 +02:00
monty@mashka.mysql.fi
859b688476 Merge with 4.0.6 2002-12-05 19:38:42 +02:00
monty@hundin.mysql.fi
8830eb4aa9 Change of internal key_field=NULL handling to avoid error messages.
Optimized SELECT DISTINCT ... ORDER BY ... LIMIT
Fixed reference to uninitalized variable
2002-12-03 13:08:25 +02:00
monty@mashka.mysql.fi
dac6498f9b Merge with 4.0 2002-11-21 15:56:48 +02:00
monty@mashka.mysql.fi
5343d4c969 Added --skip-safemalloc to mysqltest
Added bug fix from 3.23 for AIX 4.3.3 and gcc 3.x
Small change in EXCHANGE output
Propagate open-files-limit from mysqld_safe -> mysqld
Fixed speed bug in GROUP BY
Added quotes around database name in CREATE DATABASE db_name (for binary log)
2002-10-29 22:56:30 +02:00
monty@hundin.mysql.fi
fbf6ab4465 merge with 4.0.5 2002-10-16 19:30:24 +03:00
monty@hundin.mysql.fi
67d3cd643b Merge with 3.23.54 2002-10-16 13:11:25 +03:00
monty@hundin.mysql.fi
68963e91b2 Fixed a bug in key optimizing handling where the expression
WHERE column_name = key_column_name was calculated as true
for NULL values.
2002-10-14 17:04:12 +03:00
bell@sanja.is.com.ua
199f667c19 merging 2002-10-04 14:15:59 +03:00
bell@sanja.is.com.ua
2883c3a8cc fixing EXPLAIN select types 2002-10-03 18:47:04 +03:00
bell@sanja.is.com.ua
46a22a5be7 new EXPLAIN
fixed bug in mysql-test/create-test-result
fixed bug in union-subselect engine
2002-09-26 23:08:22 +03:00
serg@serg.mysql.com
e8c6e2717d bugfix: DISTINCT with const_item in ORDER BY 2002-09-10 19:23:59 +00:00
Sinisa@sinisa.nasamreza.org
63fb2232d2 Change of test case 2002-09-04 14:13:31 +03:00
Sinisa@sinisa.nasamreza.org
265a10ff77 a fix for a bug with all_fields.elements not being changed by
expansion of the wildcards
2002-09-03 23:00:23 +03:00