Jocelyn, below the latest patch which puts the code as it was in 4.0.3. Some LIKE 'abc%' ... DESC queries may return wrong results, but this is the best we can get to 4.0.4.
I have to ask Monty about the use of HA_READ_PREFIX_LAST. Other bugs may be lurking in the use/non-use of that search flag. ----- Original Message ----- From: "Jocelyn Fournier" <[EMAIL PROTECTED]> To: "Heikki Tuuri" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Wednesday, September 25, 2002 9:04 PM Subject: Re: InnoDB: Assertion failure in file ha_innodb.cc line 2180... > Hi Heikki, > > The query doesn't crash anymore, but the ORDER BY doesn't work at all (I > tested it on a table with data). > > How-to-repeat : > > INSERT INTO threadhardwarefr13 (pseudo,date,numreponse) VALUES > ('kytine','2002-09-18 20:37:31','1360'),('joce','2002-09-18 > 20:42:20','1361'),('kytine','2002-09-18 20:46:32','1362'); > > > mysql> SELECT LOWER(pseudo),date,numreponse FROM threadhardwarefr13 WHERE > numeropost='0' ORDER BY numreponse DESC LIMIT 0,3; > +---------------+---------------------+------------+ > | LOWER(pseudo) | date | numreponse | > +---------------+---------------------+------------+ > | kytine | 2002-09-18 20:37:31 | 1360 | > | joce | 2002-09-18 20:42:20 | 1361 | > | kytine | 2002-09-18 20:46:32 | 1362 | > +---------------+---------------------+------------+ > 3 rows in set (0.00 sec) > > mysql> SELECT LOWER(pseudo),date,numreponse FROM threadhardwarefr13 WHERE > numeropost='0' ORDER BY numreponse ASC LIMIT 0,3; > +---------------+---------------------+------------+ > | LOWER(pseudo) | date | numreponse | > +---------------+---------------------+------------+ > | kytine | 2002-09-18 20:37:31 | 1360 | > | joce | 2002-09-18 20:42:20 | 1361 | > | kytine | 2002-09-18 20:46:32 | 1362 | > +---------------+---------------------+------------+ > 3 rows in set (0.00 sec) Now this works: mysql> INSERT INTO threadhardwarefr13 (pseudo,date,numreponse) VALUES -> ('kytine','2002-09-18 20:37:31','1360'),('joce','2002-09-18 '> 20:42:20','1361'),('kytine','2002-09-18 20:46:32','1362'); Query OK, 3 rows affected (0.04 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT LOWER(pseudo),date,numreponse FROM threadhardwarefr13 WHERE -> numeropost='0' ORDER BY numreponse DESC LIMIT 0,3; +---------------+---------------------+------------+ | LOWER(pseudo) | date | numreponse | +---------------+---------------------+------------+ | kytine | 2002-09-18 20:46:32 | 1362 | | joce | 2002-09-18 20:42:20 | 1361 | | kytine | 2002-09-18 20:37:31 | 1360 | +---------------+---------------------+------------+ 3 rows in set (0.01 sec) mysql> ChangeSet 1.1318 02/09/25 20:35:12 [EMAIL PROTECTED] +2 -0 ha_innodb.h, ha_innodb.cc: Remove the flag HA_NOT_READ_PREFIX_LAST because ORDER BY orders wrong then; also remove the diagnostic print to avoid cluttering the error log sql/ha_innodb.h 1.45 02/09/25 20:35:01 [EMAIL PROTECTED] +4 -1 Remove the flag HA_NOT_READ_PREFIX_LAST because ORDER BY orders wrong then; also remove the diagnostic print to avoid cluttering the error log sql/ha_innodb.cc 1.111 02/09/25 20:35:01 [EMAIL PROTECTED] +2 -2 Remove the flag HA_NOT_READ_PREFIX_LAST because ORDER BY orders wrong then; also remove the diagnostic print to avoid cluttering the error log # 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.110/sql/ha_innodb.cc Wed Sep 25 19:02:06 2002 +++ 1.111/sql/ha_innodb.cc Wed Sep 25 20:35:01 2002 @@ -2180,9 +2180,9 @@ case HA_READ_BEFORE_KEY: return(PAGE_CUR_L); case HA_READ_PREFIX: return(PAGE_CUR_GE); case HA_READ_PREFIX_LAST: - ut_print_timestamp(stderr); + /* ut_print_timestamp(stderr); fprintf(stderr, - " InnoDB: Warning: Using HA_READ_PREFIX_LAST\n"); + " InnoDB: Warning: Using HA_READ_PREFIX_LAST\n"); */ return(PAGE_CUR_LE); /* InnoDB does not yet support ..PREFIX_LAST! --- 1.44/sql/ha_innodb.h Wed Sep 25 19:02:03 2002 +++ 1.45/sql/ha_innodb.h Wed Sep 25 20:35:01 2002 @@ -81,8 +81,11 @@ HA_NO_WRITE_DELAYED | HA_PRIMARY_KEY_IN_READ_INDEX | HA_DROP_BEFORE_CREATE | + /* We should also list HA_NOT_READ_PREFIX_LAST + here but it currently seems to break ORDER BY; + until release 4.0.5 some LIKE 'abc%' ... DESC + queries will not work correctly */ HA_NO_PREFIX_CHAR_KEYS | - HA_NOT_READ_PREFIX_LAST | HA_TABLE_SCAN_ON_INDEX), last_dup_key((uint) -1), start_of_scan(0) --------------------------------------------------------------------- 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