Cool, it appears I've been nominated for the 2007 Queensland Pearcey State Award - that's
quite an honour!
The Pearcey Foundation takes its name from Dr
Trevor Pearcey who in 1949 led the team that designed and
built Australia?s first digital computer, CSIRAC, and which was
in fact the world?s fourth digital computer ever to be
built.
Now, coming from The Netherlands I lack a certain amount of
education in terms of Australian ICT history, but I was at the
Melbourne Museum the week before (for the AUUG 2007 conference),
and actually visited CSIRAC
which is (at least some parts) on display there. It features
nifty technology like …
Perhaps I was a little quick to congratulate Neelie Kroes on a job well done forcing Microsoft to extend its interoperability protocols to open source software vendors and developers. It now appears that the terms of the agreement mean that it is incompatible with the GPL.
?I told Microsoft that it had to make interoperability information available to open source developers. Microsoft will now do so, with licensing terms that allow every recipient of the resulting software to copy, modify and redistribute it in accordance with the open source business model,” noted Kroes.
Glynn Moody …
[Read more]
MySQL is listing a good overview of the bugs
they still have open in 5.1
This list comes very handy as I have on my todolist to figure out
which bugs they still have open in 5.1 Cluster to see if we are
impacted by one or more of them.
Now I don't have to manually go trough the lists anymore ..
thnx MySQL !
Perhaps it wasn't entirely clear what the last posting meant by "reentrant". It means that the external language stored procedure can issue a query within the same thread context that executed the stored procedure.
Thanks to the question posed by Bill Karwin, I have tested this scenarios to demonstrate:mysql> lock table mysql.proc write; Query OK, 0 rows affected (0.00 sec)
mysql> call test2('
Recently we have been doing some work with export and import of
data from and to MySql databases. Our customer wants to be able
to export configuration data from one MySql instance and import
it into another.
The obvious tool to use is mysqldump. But since we need to edit
the exported data (just replace some codes) before importing it
into the other instance we use the --tab option. This means that
instead of one big file (or actually redirected standard output)
we get two files per table, one with the CREATE TABLE command and
one with the data.
In the next step we run some scripts to modify the data. This is
quite easy, since data is in text files with one record per
row.
Finally we import the data into the new instance. While the
default mode of mysqldump creates a file you can run in the
command line client, mysqldump --tab does not. You have to create
that yourself, but it is not very complicated. …
Wouldn't it be fun to be able to embed web-service routines into
MySQL as if they are stored procedures?
CREATE FUNCTION xml_current_time() RETURNS DATETIME NO SQL
LANGUAGE XMLRPC
EXTERNAL NAME "xmlrpc://time.userland.com/RPC2;currentTime.getCurrentTime";
Perhaps not a completely useful example... but an interesting
goal to achieve. I have written up some code and pushed it to the
experimental repository. I haven't tested it yet but I may do
later today if I don't get too preoccupied catching up watching
NBC's "Heroes". Snapshots created automagically at midnight,
Pacific time.
Brian mentioned Gemini on his blog... As many
people remember, there was a stunned silence for a while when
Oracle purchased InnoBase OY only 2 years ago... Very similar to
the stunned silence about 6 years ago when the suits at NuSphere
tried to do a SCO. Back on to the topic at hand... Gemini. About
two years ago, Brian fed me a copy of the Gemini engine saying
that "Hey, you remember Gemini? Here's the code. Get it working.
Don't talk about it and call it 'Amira'.". Perhaps not exactly
his words but close enough.
So the Amira project had a shaky beginning... I ported the code
to work on MySQL 5.0 and started examining it, removing
platform-specific code, and improving the performance of it. From
the first working run to the last, I think performance improved
by about a factor of 10 but I don't remember specifics. The Amira
project was cancelled 2Q2006. I suppose …
Yay! It's the weekend!
Why does the weekend make me cheerful? I get time to spend on
personal projects, although my sweet wife does complain that my
'personal projects' don't look much different than my day
job.
This project, I have been doodling with for quite a while. It
spawned from a little project that Eric
Herman and myself started to look at 2 years ago with what we
called "MySQL UDF v2". At the time, it included a whole plug-in
and unit testing framework. Since we have to work with what is in
the server, we dropped our plug-in and unit test framework after
the current MySQL 5.1 plug-in system suddenly appeared: Somehow,
I ended up maintaining it but that's another story.
A more modern and sane system for user-defined functions is still
our goal. One part of our concept is to minimize the amount of
'heavy lifting' that needs to be …
Wow, it actually worked with only minor changes to the code. Check this out:
mysql> create function xml_get_state(id int) returns text
-> no sql language xmlrpc external name
-> 'xmlrpc://betty.userland.com/RPC2;examples.getStateName';
Query OK, 0 rows affected (0.00 sec)
mysql> select xml_get_state(40);
+-------------------+
| xml_get_state(40) |
+-------------------+
| South Carolina |
+-------------------+
1 row in set (0.42 sec)
Now I just need to check that it works for more complex
resultsets... Trawl the web for open-access trivial XML-RPC
services or build a test XML-RPC server?
Ok, this is a late late blog post because the code was done and pushed into the work tree not last weekend, but the weekend before. I think it is a pretty significant feature to blog about but for some strange reason, it completely slipped my mind.
Check this out:mysql> call test2('select count(*) from mysql.user; select count(*) from mysql.proc'); +----------+ | count(*) | +----------+ | 3