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 …
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 …
Upgrading from MySQL 5.0 to MySQL 5.1 or Percona Server 5.1 you may run into issues with mysql_upgrade - it will identify some tables to be upgraded and will attempt to run REPAIR TABLE for them. This will fail with "The storage engine for the table doesn't support repair" error message. This seems to confuse a lot of people and I've seen people doing failsafe upgrade path of dumping and reloading complete database confused by this error message, which of course works, but can take quite a lot of time.
Another solution is to simply run ALTER TABLE tbl
ENGINE=INNODB which will rebuild table with new MySQL
version and normally will fix issues identified by
mysql_upgrade.
You can use mysqlcheck -A --check-upgrade to
identify tables which need to be fixed such a way.
With Oracle intentions to make Innodb default storage engine in next MySQL release I'm hopeful minor annoyances …
[Read more]
Our Universe is full of ironies. But some ironies are just too hard to take.
As you may have guessed (!!!), I am an avid Linux developer and user. Though once upon a time I did develop under Windows. Yes, believe it. And on one particular case, I got to be on a first-name basis with some of the Microsoft Software Engineers to resolve issues we were having with their OLE crap — what the Holy Gods of Microsoft decided to redub as “Active-X”.
But I digress. For the past 10 years, I have been solid Linux and have defenestrated Windows for the most part. But as you know, you can never really completely eliminate Windows. Despite your best efforts, it will always be (for now, at least) the 500 pound gorilla in any room you care to be in. The installed software base there is just staggering, and most have no Linux options.
But then that’s why projects like Wine and the many wonderful hypervisors …
[Read more]