Search This Blog

14 October 2008

Amira has landed

What or who is Amira?

Well... Many would know Amira is to David as My is to Monty.

Amira also has all the same letters as Maria, except that it is in PDP "middle-endian" byte order.

It is also the codename of a little known project while I was at MySQL: Soon after Oracle acquired Innobase OY, the powers that be at MySQL did not want to solely rely on InnoDB (or BerkeleyDB) as a transactional data store, mostly because they are both now owned by Oracle. So they shopped around, courted Jim Starkey, Monty wanted to do his own, or we can dig something out of the attic. Amira was the codename for the revival of the Gemini storage engine.

I admit, I have procrastinated for ages over this topic. Brain even put on his website the original sources and gave me a nudge... So I have now published the source to Launchpad.

Here it is at https://launchpad.net/amira

The plugin for MySQL 5.1 is far from complete and is the result of a couple of hours hacking I did yesterday. It builds but I can guarantee it will crash =)
It will take me a few weeks to fix it up to make it useful.

Alternatively, it should be possible to use the 5.0 version with only a few small patches into the server code. Unfortunately, I do not have a functional BitKeeper license to extract all the release versions of Amira which were internally built and tested - which is a shame. some of the earlier builds were quite stable and fast but at the time the project was canceled, there was a number of destabilizing changes done for performance improvements.
I'll have to try to remember what is was that I was doing in order to either complete the change or to back it out.

Closed-source revision control is not very useful.

13 October 2008

MySQL plugins - the missing plug.in manual page.

A whole bunch of people have successfully written plugins for MySQL using the plug-in framework which first appears in MySQL 5.1. On the whole, the simple examples work great, as long as all your code is in one directory. Here is a helpful tip...

Inside the plug.in file, you can use MYSQL_PLUGIN_DIRECTORY_<FOO> as an alias to the directory in which your plug.in is located within, where FOO is the upper-case name of your plug-in.

Here is an example plug.in:

MYSQL_STORAGE_ENGINE(pdpse,,[PDP-SE Storage Engine],
[Any old storage engine], [max,max-no-ndb])
MYSQL_PLUGIN_STATIC(pdpse, [libpdpse.la])
MYSQL_PLUGIN_DYNAMIC(pdpse, [ha_pdpse.la])
MYSQL_PLUGIN_ACTIONS(pdpse,[dnl
AC_CONFIG_FILES(dnl
MYSQL_PLUGIN_DIRECTORY_PDPSE/api/Makefile dnl
MYSQL_PLUGIN_DIRECTORY_PDPSE/db/Makefile dnl
MYSQL_PLUGIN_DIRECTORY_PDPSE/dbut/Makefile dnl
MYSQL_PLUGIN_DIRECTORY_PDPSE/msgs/Makefile dnl
MYSQL_PLUGIN_DIRECTORY_PDPSE/vst/Makefile dnl
)
])