When an open source project becomes popular, bug reports start flocking in. This is both good and bad news for the project developers. The good news is that someone is using the product, and they are finding ways of breaking it that we didn't think of. The bad news is that most of the times the reporters assume that the developers have super human powers, and that they will find what's wrong by the simple mentioning that a given feature is not working as expected. Unfortunately, it doesn't work that way. An effective bug report should have enough information that the ones in charge will be able to reproduce it and examine in lab conditions to find the problem. When dealing with databases and database tools, there are several cases, from simple to complex. Let's cover them in order. Installation issuesThis is often a straightforward case of lack of functionality. When a tool does not install what it is supposed to, it is a show stopper, and a solution …
[Read more]Have you ever seen BIG weird numbers in mk-query-digest report that just seem wrong? I have! Here’s one report I got today:
... # Attribute total min max avg 95% stddev median # ============ ======= ======= ======= ======= ======= ======= ======= # Exec time 5088s 1us 171s 2ms 467us 104ms 28us # Lock time 76s 0 3s 26us 69us 3ms 0 # Rows sent 9.80M 0 1.05M 3.50 0.99 642.32 0 # Rows examine 5.59G 0 82.56M 2.00k 0.99 97.41k 0 # Rows affecte 457.30k 0 2.62k 0.16 0.99 1.68 0 # Rows read 2.16G 0 82.56M 788.53 21.45 82.91k 0.99 # Bytes sent 2.14T 0 4.00G 781.27k 3.52k 47.84M 84.10 # Merge passes 273.47G 0 4.00G 97.69k 0 10.35M 0 # Tmp tables …[Read more]
When I announced the MySQL Council, I said that among its roles
there is that of being a bridge between the MySQL community and
Oracle.
It has come the time where we put this role to good use.
Recently, there have been some concerns about the MySQL bugs
database, which could be summarized in Mark Callaghan's post
Where have the bugs gone?.
The gist of the concerns is that there has been a change in the
bugs handling, although we don't know what was changed and how.
In short, there has been a total lack of communication. The MySQL
Council has addressed the concerns about the public bug database
in a recent meeting, and has taken several steps, like
approaching Oracle directly, and …
The MySQL general log is one of my favorite features for a
quick debug. I especially like the ability of starting and
stopping it on demand, which was introduced in MySQL 5.1.
However, using the general log has its drawbacks.
Today I was debugging a nasty bug that results from two
statements that should be applied sequentially, but that were
instead concurrent. These kind of problems are hard to cope with,
as they are intermittent. Sometimes all goes well, and you get
the expected result. And then, sometimes the statements fly on
different directions and I stare at the screen, trying to
understand where did they stray.
After some try-and-fail, I decided to enable the general log just
before the offending statements, and to turn it down immediately
after. Guess what? With the general log on, the test never
failed. What was an intermittently …
Working with customer, I faced pretty nasty bug, which is actually not rare situation , but in this particular there are some lessons I would like to share.
The case is pretty much described in bug
55981, or
in pastebin.
Everything below is related to InnoDB-plugin/XtraDB, but not to regular InnoDB ( i.e in MySQL 5.0)
In short, if you use big BLOBS ( TEXT, MEDIUMBLOB, etc) (that allocated in external segment in InnoDB), you can get your database in trash state just executing update on row with blob and rolling back transaction twice ( on the same row)
The keywords that diagnose you hit this bug is
InnoDB: Serious error! InnoDB is trying to free page N
InnoDB: though it is already marked as free in the
tablespace!
InnoDB: The tablespace free …
Once upon a time, there was a policy in MySQL not to add new
features after the beta stage.
To my surprise, MySQL Workbench 5.2.30 introduces a new feature,
the query formatter. I gave it a try. The results are not
extremely encouraging. Granted, it's a plugin and not a feature
in the core application, but nonetheless one would expect
something more stable in a GA release, especially since the
plugin features are displayed in the main menu, and unless you
have read the announcement, you couldn't easily tell the core
from the plugins.
This is what I have got in just a few minutes:
Bug #58356:
beautify function fails on CREATE TABLE
Bug #58357:
beutify function erases statement on CREATE …
Yesterday, I reached a happy milestone in HailDB development. All compiler warnings left in the api/ directory (the public interface to the database engine) are now either probable/possible bugs (that we need to look at closely) or are warnings due to unfinished code (that we should finish).
There’s still a bunch of compiler warnings that we’ve inherited (HailDB compiles with lots of warnings enabled) that we have to get through, but a lot will wait until after we update the core to be based on InnoDB 1.1.
Scenario
Recently came across this
bug when trying out the federated storage engine for the
first time in MySQL 5.1. Had a security table with user
information on a remote server & database that needed to be
joined to a local table housing site-specific permissions but
only containing user IDs. I definitely wanted to use the “create
server” method for the new table in case we later decided to link
to a different table in the same remote database. A terrific
little feature of the MySQL federated storage engine, to be sure.
Problem
The local server was the master in a replication pair. After
executing the create server statement on the master, I
proceeded to create the new federated table pointed to the new
remote server. That’s when my mysql replication monitoring script
alerted me that the replication thread had …
OUTER JOIN queries in SQL are susceptible to two very subtle bugs that I’ve observed a number of times in the real world. Daniel and I have been hammering out ways to automatically detect queries that suffer from these bugs, in a relatively new Maatkit tool called mk-query-advisor. It’s part of our series of advisor tools for MySQL. I wrote a blog post about it a while ago. Automated analysis of bad query patterns is a good thing to write tools to do, because catching buggy queries is hard work if you do it manually.
Let’s dive right in and analyze these subtle bugs. Warning: if you don’t understand how SQL handles NULL, you’re not going to understand the following. Many people have a hard time with NULL, which is why these bugs are so hard to …
[Read more]The problem I am going to describe is likely to be around since the very beginning of MySQL, however unless you carefully analyse and profile your queries, it might easily go unnoticed. I used it as one of the examples in our talk given at phpDay.it conference last week to demonstrate some pitfalls one may hit when designing schemas and queries, but then I thought it could be a good idea to publish this on the blog as well.
To demonstrate the issue let’s use a typical example – a sales query. Our data is a tiny store directory consisting of three very simple tables:
PLAIN TEXT SQL:
- CREATE TABLE `products` (
- `prd_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
- `prd_name` varchar(32) NOT NULL,
- PRIMARY KEY (`prd_id`),
- KEY …