Dear List,
Sorry for reposting the issue, once again
One of our MySQL db's containing BDB tables is exhibiting a strange
behavior. A query consisting of an ORDER BY clause is returning wrong
result set.
The same query when used without an ORDER BY clause returns the correct
result set.
Environment: Sun Solaris 2.7, MySQL 3.23.51, Table Type = BerkleyDB
Given below is the query for which we are seeing this issue:
select orders.order_uid, orders.status,
(to_days(now()) - to_days(orders.verification_date)) as age
from orders
where orders.status = 'verified'
order by orders.verification_date;
The above query returns:
+-----------+--------+------+
| order_uid | status | age |
+-----------+--------+------+
| 130 | new | NULL |
| 130 | new | NULL |
| 130 | new | NULL |
| 130 | new | NULL |
| 130 | new | NULL |
+-----------+--------+------+
What SHOULD have been returned is:
+-----------+----------+------+
| order_uid | status | age |
+-----------+----------+------+
| 57 | verified | 4 |
| 76 | verified | 4 |
| 79 | verified | 4 |
| 233 | verified | 3 |
| 234 | verified | 0 |
+-----------+----------+------+
Currently i get around this issue by analyzing the BDB tables, but this
seems to be a temporary solution. The issue is intermittent, keeps
surfacing again after a certain no of days. Did not find any related
bugs with the
MySQL version we use (3.23.51). From what i can understand so far, the
index statistics related to the BDB tables are not getting updated.
What can be done to correct this issue ?
Are there any other alternative's to this issue ?
Would converting the BerkleyDB (BDB) tables to InnoDB tables solve the
issue ?
Here are a few other details about the BDB table that is exhibiting this
problem:
kcaset02:{}mysql sbiz
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21716 to server version: 3.23.51-max-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> desc orders;
+---------------------+--------------------------------------------------------------------------------+------+-----+---------------------+----------------+
| Field |
Type
| Null | Key | Default | Extra |
+---------------------+--------------------------------------------------------------------------------+------+-----+---------------------+----------------+
| order_uid |
bigint(20)
| | PRI | NULL | auto_increment |
| creation_date |
datetime
| | | 0000-00-00 00:00:00 | |
| modified_date |
timestamp(14)
| YES | | NULL | |
| status |
enum('inprogress','new','submitted','verified','fulfilled','error','canceled')
| YES | | inprogress | |
| verification_num |
char(10)
| YES | | NULL | |
| verification_method |
enum('third_party','customer_online','customer_fax','none')
| YES | | none | |
| batch_number |
bigint(20)
| YES | | NULL | |
| verification_date |
datetime
| YES | | NULL | |
| salesmaker_fid |
bigint(20)
| YES | | NULL | |
| legalese_fid |
bigint(20)
| | MUL | 0 | |
| loa_sig |
char(60)
| | | | |
| sa_sig |
char(60)
| | | | |
| sa_signed_date |
datetime
| YES | | NULL | |
+---------------------+--------------------------------------------------------------------------------+------+-----+---------------------+----------------+
13 rows in set (0.00 sec)
mysql> show table status like 'ord%';
+--------+------------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
| Name | Type | Row_format | Rows | Avg_row_length | Data_length
| Max_data_length | Index_length | Data_free | Auto_increment |
Create_time | Update_time | Check_time | Create_options | Comment |
+--------+------------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
| orders | BerkeleyDB | Fixed | 236 | 0 | 0
| NULL | 0 | 0 | 237 |
NULL | NULL | NULL | | |
+--------+------------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
1 row in set (0.01 sec)
mysql> show index from orders;
+--------+------------+--------------+--------------+--------------+-----------+-------------+----------+--------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Comment |
+--------+------------+--------------+--------------+--------------+-----------+-------------+----------+--------+---------+
| orders | 0 | PRIMARY | 1 | order_uid |
A | 236 | NULL | NULL | |
| orders | 1 | idx01_orders | 1 | legalese_fid |
A | 1 | NULL | NULL | |
+--------+------------+--------------+--------------+--------------+-----------+-------------+----------+--------+---------+
2 rows in set (0.00 sec)
mysql> show variables like 'have%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_bdb | YES |
| have_gemini | NO |
| have_innodb | DISABLED |
| have_isam | YES |
| have_raid | NO |
| have_openssl | NO |
+---------------+----------+
6 rows in set (0.00 sec)
I would appreciate if one of you can shed some light on this issue.
Thanks
psr
---------------------------------------------------------------------
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