Shocked and Stunned (that code exists and does work)

#define READ_ALL 1 /* openfrm: Read all parameters */ #define EXTRA_RECORD 8 /* Reservera plats f|r extra record */ and later on….   if (prgflag & (READ_ALL+EXTRA_RECORD))     records++; Feel free to think about that for a second. (I have an … Continue reading

The Table protobuf message format

If you’ve ever opened up drizzled/message/table.proto in the Drizzle source tree you will have seen what’s in the table message: the structure that describes a database table in Drizzle. Previously I’ve talked about the Table message more generally, giving a … Continue reading

The Schema protobuf message: Drizzle’s metadata on a schema

I’ve previously talked about table metadata in Drizzle and how we use the table protobuf message to describe a table (see Drizzle FRM Replacement and others). The model in Drizzle is that the engine is responsible for its metadata. For … Continue reading

Return of the “Top 5 MySQL Wishlist” and looking at Drizzle

It’s coming up on a year since I started working full time on Drizzle. So, I got a bit reflective… Have we done things that I (and others) really wanted done? Back in 2007, I wrote my top 5 wishlist … Continue reading

Drizzle pluggable MetadataStore (or: no table definition file on disk)

My code is shaping up rather nicely (see https://code.launchpad.net/~stewart/drizzle/discovery) and I’m planning to submit a merge-request for it later today. I’m about to commit code that implements a MetadataStore for the ARCHIVE engine. This means that for ARCHIVE tables, you … Continue reading

Pluggable Metadata stores (or… the revenge of table discovery)

Users of the ARCHIVE or NDB storage engines in MySQL may be aware of a MySQL feature known as “table discovery”. For ARCHIVE, you can copy the archive data file around between servers and it magically works (you don’t need … Continue reading

Performance Schema: Show me the code

For such a long worked on feature, with such potential – I find the resistence to publishing a source tree curious (my comments on the topic have been moderated away but others have asked too). I could go and grep … Continue reading

row id in MySQL and Drizzle (and the engines)

Some database engines have a fundamental concept of a row id. The row id is everything you need to know to locate a row. Common uses include secondary indexes (key is what’s indexed, value is rowid which you then use … Continue reading

maximum number of columns (hard limit)

#define MAX_FIELDS 4096 /* Limit in the .frm file */ I should be able to remove this limitation soon. Although if you come anywhere near it, you probably have already lost (and written your own engine).

What constitutes an identifier for a table?

Well… there’s: database table name (both of these are quite obvious). But then you have: temporary tables Well… two types of temporary tables: those created in the course of query execution, typically in /tmp/ those created during ALTER TABLE, typically … Continue reading

Temporary tables in any engine….

Well… nearly any engine. I have a plan forming in my head to add some hooks to engines to help with creating temporary tables (the ones created while executing a query, not ones created during ALTER TABLE). Currently, if you … Continue reading

What VERSION in INFORMATION_SCHEMA.TABLES means (hint: not what you think)

It’s the FRM file format version number. It’s not the version of the table as one might expect (i.e. after CREATE it’s 1. Then, if you ALTER, it’s 2. Alter again 3 etc). In Drizzle, we now return 0. In … Continue reading

Singing in the Rain

The past 3 years, 11 months I have worked full time on NDB (MySQL Cluster). It’s been awesome. Love the product and people. In the time I’ve been on the Cluster team, we’ve gone from a small group that would … Continue reading

My Top 5 Wishlist for MySQL

I’m going and stealing Jay’s idea (who stole it off Brian Duff… but his was for Oracle so obviously doesn’t count :) So, my five wishes for MySQL Are: 5. Six-monthly release cycles Getting a release out there takes way … Continue reading