Commit graph

60 commits

Author SHA1 Message Date
istruewing@chilla.local
c33486ff1b Bug#26231 - select count(*) on myisam table returns wrong value
when index is used

When the table contained TEXT columns with empty contents
('', zero length, but not NULL) _and_ strings starting with
control characters like tabulator or newline, the empty values
were not found in a "records in range" estimate. Hence count(*)
missed these records.

The reason was a different set of search flags used for key
insert and key range estimation.

I decided to fix the set of flags used in range estimation.
Otherwise millions of databases around the world would require
a repair after an upgrade.

The consequence is that the manual must be fixed, which claims
that TEXT columns are compared with "end space padding". This
is true for CHAR/VARCHAR but wrong for TEXT. See also bug 21335.
2007-03-16 10:28:48 +01:00
monty@mysql.com
84e7c9633a Fix error in prefix compression of keys in MyISAM when key length changed from 254 -> 255
Bug #17705 "FT Index corruption occurs with UTF8 data..."
(Actually, the bug had nothing to do with FT index but with general key compression)
2006-03-30 01:50:52 +03:00
monty@mysql.com
3e653fb922 Added more tests for new UPDATE ... ORDER BY ... LIMIT optimization 2005-10-25 02:27:40 +03:00
ramil@mysql.com
2ffbe01127 Merge mysql.com:/usr/home/ram/work/mysql-4.0
into  mysql.com:/usr/home/ram/work/mysql-4.1
2005-10-13 12:48:30 +05:00
ramil@mysql.com
58c64aea92 memcpy_overlap() removed, as
1. it's wrong to use memcpy() for overlapped areas;
  2. we use it only once.
During merge to 4.1 will remove a memcpy_overlap() call 
from strings/ctype-tis620.c as well in order to fix 
bug #10836: ctype_tis620 test failure with ICC-compiled binaries on IA64.
2005-10-12 18:50:25 +05:00
monty@mysql.com
82855517a1 Review of new code since last pull
- Use %lx instead of %p as %p is not portable
- Don't replace ROW item with Item_null
2005-10-07 03:12:15 +03:00
ingo@mysql.com
bf89c139a4 Merge mysql.com:/home/mydev/mysql-4.0-4000
into  mysql.com:/home/mydev/mysql-4.1-4100
2005-09-23 10:49:08 +02:00
ingo@mysql.com
4025d2965b Bug#9112 - Merge table with composite index producing invalid results with some queries
The problem was an ab-use of last_rkey_length.
Formerly we saved the packed key length (of the search key)
in this element. But in certain cases it got replaced by 
the (packed) result key length.
Now we use a new element of MI_INFO to save the packed key 
length of the search key.
2005-09-23 10:15:11 +02:00
ingo@mysql.com
5c14b35a7f Bug#12565 - ERROR 1034 when running simple UPDATE or DELETE on large MyISAM table
Changed end-space comparison so that the key is not used past
its end. This is due to the new end-space behaviour in 4.1.
See also bug 6151 and 9188.
2005-08-29 16:50:09 +02:00
ingo@mysql.com
3add511de7 Bug#9188 - Corruption Can't open file: 'table.MYI' (errno: 145)
Since 4.1 keys are compared with trailing spaces. 
Thus, a "x " key can be inserted between a couple of "x" keys.
The existing code did not take this into account. Though the
comments in the code claimed it did.
2005-04-08 14:13:02 +02:00
serg@serg.mylan
994d648dda space-stripping in _mi_prefix_search: BUG#5284 2004-08-30 16:12:53 +02:00
bar@mysql.com
2496e85b84 Bug#4521: unique key prefix interacts poorly with utf8.
Fix for binary collations for MyISAM and HEAP BTREE.
This patch also changes trailing spaces behaviour for
binary collations. Binary collations now have PAD 
characteristic too.
2004-08-19 15:15:10 +05:00
serg@serg.mylan
e1237cbc53 manually merged 2004-08-18 19:57:55 +02:00
ingo@mysql.com
4b42225c55 Fixed some DBUG_PRINT format problems. 2004-07-26 15:32:52 +02:00
ingo@mysql.com
d2c8d8d609 Fixed a probable typo. Unfortunately we will not be able to test this ;-) 2004-07-26 13:58:08 +02:00
konstantin@mysql.com
f08bbd1f12 assert.h needed for my_dbug.h now is included in my_dbug.h, where it for
some reason wasn't included before.
A lot of files cleaned up from #include <assert.h>
2004-06-10 23:58:39 +04:00
paul@kite-hub.kitebird.com
2f0ca1ce42 Fix skipp -> skip once and for all.
(Note: This affects only comments, not variable names.)
2004-06-03 11:52:54 -05:00
monty@mysql.com
1448199bd7 Cleanups & safety fixes 2004-03-25 22:11:22 +02:00
monty@mysql.com
ebc3b3afac BTREE-indexes in HEAP tables can now be used to optimize ORDER BY
Don't read character set files if we are using only the default charset. In most cases the user will not anymore get a warning about missing character set files
Compare strings with space extend instead of space strip. Now the following comparisons holds:  "a" == "a " and "a\t" < "a". (Bug #3152).
Note: Because of the above fix, one has to do a REPAIR on any table that has an ascii character < 32 last in a CHAR/VARCHAR/TEXT columns.
2004-03-25 15:05:01 +02:00
serg@serg.mylan
0371c68e3e two more bugfixes for "space stripping in MyISAM indexes" 2004-01-21 23:29:17 +01:00
serg@serg.mylan
8caf856afe an obvious bug in _mi_key_cmp fixed (BUG#2295 - range on blobs) 2004-01-15 16:31:27 +01:00
monty@mysql.com
f995a5f4aa Fix autoincrement for signed columns (Bug #1366)
Fixed problem with char > 128 in QUOTE() function. (Bug #1868)
Disable creation of symlinks if my_disable_symlink is set
Fixed searching of TEXT with end space. (Bug #1651)
Fixed caching bug in multi-table-update where same table was used twice. (Bug #1711)
Fixed problem with UNIX_TIMESTAMP() for timestamps close to 0. (Bug #1998)
Fixed timestamp.test
2003-12-12 22:26:58 +02:00
igor@rurik.mysql.com
17aecac32c Manual merge after improving concurrency for key cache reassignment 2003-10-01 20:16:36 -07:00
monty@narttu.mysql.fi
77a70a0a24 merge with 4.0.15 2003-08-29 13:44:35 +03:00
monty@narttu.mysql.fi
359846f052 Fixed some varnings from valgrind
Set min value of max_allowed_packet to 1024
Fixed problem with UNION's without braces and SQL_CALC_FOUND_ROWS, LIMIT #,#
and ORDER BY...LIMIT
2003-08-20 16:25:44 +03:00
igor@rurik.mysql.com
2813cd1f0b set_var.cc, mysqld.cc, handler.cc, set_var.h, handler.h:
Added key cache parameters for midpoint insertion strategy
Many files:
  Added midpoint insertion strategy for key cache
mi_test2.c:
  Added a parameter to resize_key_cache
2003-08-09 11:12:22 -07:00
monty@mashka.mysql.fi
6aa8929cf3 After merge fixes
Added initialization of all important global variables
2003-05-21 21:39:58 +03:00
monty@narttu.mysql.fi
dd2b7918cd Merge with 4.0.13 2003-05-19 16:35:49 +03:00
monty@mashka.mysql.fi
dd377bfba6 Fixed problem when comparing a key for a multi-byte-character set. (bug 152)
Use 0x.... as strings if 'new' mode. (bug 152)
Don't report -max on windows when InnoDB is enabled. (bug 332)
Reset current_linfo;  This could cause a hang when doing PURGE LOGS.
Fix for row numbers in EXPLAIN (bug 322)
 Fix that USE_FRM works for all table types (bug 97)
2003-04-27 22:12:08 +03:00
monty@mashka.mysql.fi
f8e660d88c merge with 4.0.9
To get bug fixes for TCP/IP connections, FORCE INDEX and OPTIMIZE TABLE with NULL keys
2003-01-09 03:55:26 +02:00
monty@mashka.mysql.fi
3c08da957e Don't count NULL values in cardinalty for MyISAM tables.
Free row buffer cache after each query for MyISAM tables.
Added table join option FORCE INDEX
Fixed core dump bug when connecting with hostname that could not be resolved.
2003-01-09 02:19:14 +02:00
serg@serg.mysql.com
d552ba7d8a support for HA_READ_PREFIX_LAST_OR_PREV in headres
full support for HA_READ_PREFIX_LAST_OR_PREV in MyISAM
protected by #if NOT_IMPLEMENTED_YET in opt_range.cc as not all table handlers support it
2002-10-25 14:09:47 +00:00
bar@bar.mysql.r18.ru
954a47b95a Simple charsets now have strncoll() field too 2002-10-09 15:40:57 +05:00
serg@sergbook.mysql.com
9fae3956c9 make SEARCH_PREFIX to work with complex (use_coll) charsets, namely latin1_de 2002-08-05 00:14:21 +02:00
ram@gw.udmsearch.izhnet.ru
b8a12a8cec MI_KEYSEG -> HA_KEYSEG
_mi_key_cmp -> ha_key_cmp
2002-04-25 15:10:29 +05:00
bar@gw.udmsearch.izhnet.ru
eab2893dac RB-Tree indexes support in HEAP tables
Renamed _hp_func  ->  hp_func
mi_key_cmp moved to /mysys/my_handler.c
New tests for HEAP tables
2002-04-25 13:36:55 +05:00
monty@hundin.mysql.fi
b658662ae4 Update copyright
Fixed memory leak on shutdown (Affects the embedded version & MyODBC)
2001-12-06 14:10:51 +02:00
monty@hundin.mysql.fi
3afb157ca2 Fixes up things after merge from 3.23.44
Portability fixes.
Don't delete temporary tables on FLUSH tables.
2001-11-05 01:04:08 +02:00
serg@serg.mysql.com
3911c81024 merged 2001-10-09 16:01:06 +02:00
serg@serg.mysql.com
9ec4ca9c4d get rid of comp() macro - CMP is already in place 2001-10-09 15:23:44 +02:00
serg@serg.mysql.com
3d3ef6528a Boolean search passes _some_ tests 2001-10-09 14:53:54 +02:00
monty@hundin.mysql.fi
880026ccf6 Cleaned up SSL documentation
Fixes for embedded server
Made key_cache more configurable
Fixed that one can change key blocksize in MyISAM
A lot of optimizations to make MyISAM slightly faster
2001-10-02 05:53:00 +03:00
monty@hundin.mysql.fi
fa23b20789 Fixes for German sorting order. 2001-09-11 01:40:52 +03:00
serg@serg.mysql.com
0043136882 merged 2001-07-02 21:52:22 +02:00
monty@hundin.mysql.fi
897b37b506 Changed safe_mysqld -> mysqld_safe
Added some alias to SHOW commands
Prepare for dynamic changing of MySQL variables
2001-06-28 10:49:16 +03:00
monty@hundin.mysql.fi
85388703c4 Fixed length rows should not use row checksum in MyISAM tables
Fixed bug in handling of packed MyISAM keys
2001-06-26 10:23:50 +03:00
serg@serg.mysql.com
3c7cc2285c bug in _mi_prefix_search fixed 2001-06-21 16:40:24 +02:00
monty@hundin.mysql.fi
b7c3a28149 Removed compiler warnings.
Added preliminary handling of symlinks in MyISAM.
When using myisamchk to check tables with --force, don't repair
tables that are marked as 'not closed' if they are ok.
Change fn_format() to use my_real_path and my_symlink
2001-05-31 14:07:17 +03:00
monty@work.mysql.com
914bbdca50 merge 2001-05-20 12:38:19 +02:00
monty@donna.mysql.fi
2ba0846a60 Fixed bug when using MERGE on files > 4G
Fixed bug in SELECT db1.table.* FROM db1.table,db2.table
Fixed bug in INSERT DELAYED when doing shutdown and a table was locked
Changed that tmp_table_size =4G-1 means unlimited.
2001-05-17 00:46:50 +03:00