Jeremy, Jocelyn,
can you try the following this patch?
The flag which bans MySQL using a descending cursor to calculate
column LIKE 'jhghj%' ORDER BY column DESC
queries was apparently put to the wrong place in ha_innodb.h. The assertion
I had added to 4.0.4 revealed this hidden bug.
The patch fixes also the crash submitted by Jocelyn Fournier earlier today:
...
CREATE TABLE `threadhardwarefr13` (
`numeropost` mediumint(8) unsigned NOT NULL default '0',
`numreponse` int(10) unsigned NOT NULL auto_increment,
`pseudo` varchar(35) NOT NULL default '',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`numeropost`,`numreponse`),
UNIQUE KEY `numreponse` (`numreponse`),
KEY `pseudo` (`pseudo`,`numeropost`)
) TYPE=InnoDB;
SELECT LOWER(pseudo),date FROM threadhardwarefr13 WHERE numeropost='166498'
ORDER BY numreponse DESC LIMIT 0,3;
-> assertion failure at line 2180 of ha_innodb.cc
...
I have to check why MySQL uses that flag in Jocelyn's query. It does not
have a LIKE 'gggg%' clause.
Thank you for the bug reports,
Heikki
ChangeSet
1.1317 02/09/25 19:02:46 [EMAIL PROTECTED] +2 -0
ha_innodb.cc, ha_innodb.h:
Move to the right place the flag which bans use of HA_READ_PREFIX_LAST;
add
diagnostics and remove the assertion on line 2180 of ha_innodb.cc
sql/ha_innodb.cc
1.110 02/09/25 19:02:06 [EMAIL PROTECTED] +6 -1
Move to the right place the flag which bans use of HA_READ_PREFIX_LAST;
add
diagnostics and remove the assertion on line 2180 of ha_innodb.cc
sql/ha_innodb.h
1.44 02/09/25 19:02:03 [EMAIL PROTECTED] +2 -1
Move to the right place the flag which bans use of HA_READ_PREFIX_LAST;
add
diagnostics and remove the assertion on line 2180 of ha_innodb.cc
# 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: heikki
# Host: hundin.mysql.fi
# Root: /home/heikki/mysql-4.0
--- 1.109/sql/ha_innodb.cc Tue Sep 24 17:11:56 2002
+++ 1.110/sql/ha_innodb.cc Wed Sep 25 19:02:06 2002
@@ -2179,7 +2179,12 @@
case HA_READ_AFTER_KEY: return(PAGE_CUR_G);
case HA_READ_BEFORE_KEY: return(PAGE_CUR_L);
case HA_READ_PREFIX: return(PAGE_CUR_GE);
- case HA_READ_PREFIX_LAST: ut_a(0); return(PAGE_CUR_LE);
+ case HA_READ_PREFIX_LAST:
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Warning: Using HA_READ_PREFIX_LAST\n");
+ return(PAGE_CUR_LE);
+
/* InnoDB does not yet support ..PREFIX_LAST!
We have to add a new search flag
PAGE_CUR_LE_OR_PREFIX to InnoDB. */
--- 1.43/sql/ha_innodb.h Fri Sep 20 23:26:10 2002
+++ 1.44/sql/ha_innodb.h Wed Sep 25 19:02:03 2002
@@ -82,6 +82,7 @@
HA_PRIMARY_KEY_IN_READ_INDEX |
HA_DROP_BEFORE_CREATE |
HA_NO_PREFIX_CHAR_KEYS |
+ HA_NOT_READ_PREFIX_LAST |
HA_TABLE_SCAN_ON_INDEX),
last_dup_key((uint) -1),
start_of_scan(0)
@@ -96,7 +97,7 @@
ulong index_flags(uint idx) const
{
return (HA_READ_NEXT | HA_READ_PREV | HA_READ_ORDER |
- HA_KEY_READ_ONLY | HA_NOT_READ_PREFIX_LAST);
+ HA_KEY_READ_ONLY);
}
uint max_record_length() const { return HA_MAX_REC_LENGTH; }
uint max_keys() const { return MAX_KEY; }
----- Original Message -----
From: "Jeremy Zawodny" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Wednesday, September 25, 2002 6:19 PM
Subject: InnoDB: Assertion failure in file ha_innodb.cc line 2180...
> Heikki and others,
>
> One of my slaves is dying frequently. It runs MySQL 4.0.4 (pulled
> yesterday) on FreeBSD. I'm getting an assertion failure on line 2180,
> which appears to be:
>
> case HA_READ_PREFIX_LAST: ut_a(0); return(PAGE_CUR_LE);
>
> What can I do to help debug this?
>
> Thanks,
>
> Jeremy
> --
> Jeremy D. Zawodny | Perl, Web, MySQL, Linux Magazine, Yahoo!
> <[EMAIL PROTECTED]> | http://jeremy.zawodny.com/
>
> MySQL 3.23.51: up 50 days, processed 1,063,578,875 queries (244/sec. avg)
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php