<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0YNQnsyeip7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-27751205</id><updated>2011-11-27T16:13:13.592-08:00</updated><category term="funny" /><category term="java" /><category term="mysql" /><category term="stored procedure" /><category term="uc2011" /><category term="php" /><category term="perl" /><category term="ia64" /><category term="uc2008" /><category term="xmlrpc" /><category term="oqgraph" /><category term="wtf" /><category term="open source" /><category term="storage engine" /><category term="book" /><category term="amira" /><category term="oracle" /><category term="misc" /><category term="drizzle" /><category term="internals" /><category term="wish list" /><category term="opinion" /><category term="innodb" /><category term="maria" /><category term="sun" /><category term="microsoft" /><category term="uc2009" /><category term="slashdot" /><category term="review" /><category term="plugins" /><category term="c++" /><category term="google" /><category term="falcon" /><title>Antony's MySQL bits</title><subtitle type="html">My MySQL musings, sometimes code snippets and commentry.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://antbits.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://antbits.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AntonysMysqlBits" /><feedburner:info uri="antonysmysqlbits" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkUFR3o_fCp7ImA9WhZQEk4.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-784608886675972844</id><published>2011-04-19T11:12:00.000-07:00</published><updated>2011-04-19T11:36:56.444-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-19T11:36:56.444-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uc2011" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="maria" /><category scheme="http://www.blogger.com/atom/ns#" term="oqgraph" /><title>Traversing larger graphs with OQGRAPH 3. Time for Bacon?</title><content type="html">Using the IMDB data, I have loaded the actor and actress database into a few simple InnoDB tables and have performed the following test:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;MariaDB [imdb]&amp;gt; show status like "Innodb_rows_read";
+------------------+---------+
| Variable_name    | Value   |
+------------------+---------+
| Innodb_rows_read | 1237459 |
+------------------+---------+
1 row in set (0.00 sec)

MariaDB [imdb]&amp;gt; select x.* from entity as orig, entity as dest, imdb_graph, entity as x where dest.type='ACTOR' and dest.name='Kevin Bacon' and imdb_graph.latch=2 and imdb_graph.origid=orig.id and imdb_graph.destid=dest.id and x.id=imdb_graph.linkid and orig.type='ACTOR' and orig.name='James Earl Jones';
+---------+---------+------------------------------------------------------------------+
| id      | type    | name                                                             |
+---------+---------+------------------------------------------------------------------+
|  780890 | ACTOR   | James Earl Jones                                                 |
| 1922997 | ARCHIVE | "20 to 1" (2005) {Our All Time Favourite Films (#9.11)}  (voice) |
|  131965 | ACTOR   | Antonio Banderas                                                 |
| 1945521 | ARCHIVE | Oscar, que empiece el espect?culo (2008)                         |
| 1003551 | ACTOR   | Kevin Bacon                                                      |
+---------+---------+------------------------------------------------------------------+
5 rows in set (2.80 sec)

MariaDB [imdb]&amp;gt; show status like "Innodb_rows_read";
+------------------+---------+
| Variable_name    | Value   |
+------------------+---------+
| Innodb_rows_read | 2102482 |
+------------------+---------+
1 row in set (0.00 sec)

MariaDB [imdb]&amp;gt; select (2102482 - 1237459)/2.8;
+-------------------------+
| (2102482 - 1237459)/2.8 |
+-------------------------+
|             308936.7857 |
+-------------------------+
1 row in set (0.09 sec)

&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
Over 300,000 edges examined per second... Nifty.&lt;br /&gt;
&lt;br /&gt;
The &lt;tt&gt;entity&lt;/tt&gt; table has approximately 3 million entries and the &lt;tt&gt;link&lt;/tt&gt; table has approximately 30 million edges.&lt;br /&gt;
&lt;br /&gt;
Note - this performance is with a warmed up buffer pool. With a cold buffer pool, the query takes nearly 30 seconds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-784608886675972844?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZOqfBTBh1mrmAPmNys_qO6PtYFw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZOqfBTBh1mrmAPmNys_qO6PtYFw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZOqfBTBh1mrmAPmNys_qO6PtYFw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZOqfBTBh1mrmAPmNys_qO6PtYFw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/HkCiOnIwuzM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=784608886675972844" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/784608886675972844?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/784608886675972844?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/HkCiOnIwuzM/traversing-larger-graphs-with-oqgraph-3.html" title="Traversing larger graphs with OQGRAPH 3. Time for Bacon?" /><author><name>Antony</name><uri>http://www.blogger.com/profile/09169717992432456581</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/__TIKAE39IQs/TGQBk2H2GQI/AAAAAAAAAAM/Bnf2M0ar_14/S220/tony6-192.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2011/04/traversing-larger-graphs-with-oqgraph-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UBQHozfSp7ImA9WhZRGE0.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7176320635118374652</id><published>2011-04-14T12:27:00.000-07:00</published><updated>2011-04-14T12:27:31.485-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-14T12:27:31.485-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="storage engine" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2011" /><category scheme="http://www.blogger.com/atom/ns#" term="oqgraph" /><title>OQGRAPH at MySQL UC 2011</title><content type="html">I had a good and lively audience at my presentation today. I was happy to give them a sneek preview of the Mk.III implementation of &lt;a href="http://openquery.com/graph/doc"&gt;OQGRAPH&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Oh yeah! I guess I'm announcing the availability of the source code of the MkIII implementation.&lt;br /&gt;
&lt;br /&gt;
Links are in my slides... &lt;a href="http://goo.gl/UrybZ"&gt;http://goo.gl/UrybZ&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Btw, building the storage engine requires &lt;a href="http://boost.org/"&gt;Boost libraries&lt;/a&gt; and &lt;a href="http://judy.sourceforge.net/"&gt;libJudy&lt;/a&gt; installed. It's currently in a MariaDB repo ... versions for MySQL and Drizzle are to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7176320635118374652?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hQ6M3MIriLcXQYzP0sgfUED2_s0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hQ6M3MIriLcXQYzP0sgfUED2_s0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hQ6M3MIriLcXQYzP0sgfUED2_s0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hQ6M3MIriLcXQYzP0sgfUED2_s0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/gSFbEPnrgKQ" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7176320635118374652" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7176320635118374652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7176320635118374652?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/gSFbEPnrgKQ/oqgraph-at-mysql-uc-2011.html" title="OQGRAPH at MySQL UC 2011" /><author><name>Antony</name><uri>http://www.blogger.com/profile/09169717992432456581</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/__TIKAE39IQs/TGQBk2H2GQI/AAAAAAAAAAM/Bnf2M0ar_14/S220/tony6-192.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://antbits.blogspot.com/2011/04/oqgraph-at-mysql-uc-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4FRn47cCp7ImA9Wx5TF0g.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-5270055055337738712</id><published>2010-08-02T06:48:00.000-07:00</published><updated>2010-08-02T06:48:37.008-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-02T06:48:37.008-07:00</app:edited><title>Tip that will save hours of sleep...</title><content type="html">This tip is several months late but here goes anyway.&lt;br /&gt;
&lt;br /&gt;
In my opinion, when you have an environment where you're using multiple MySQL storage engines (using the right tool for the job and all that jazz), there is nothing more annoying than to have tables created or altered into a storage engine that you did not request. The default behaviour of MySQL is to use the default engine if the requested storage engine is not available.&lt;br /&gt;
&lt;br /&gt;
Why is this annoying? Because when a specific storage engine is requested, it needs to be using that specific engine and anything else is an error.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is an SQL-Mode in MySQL which will enable the most desirable behaviour ... that is, if an engine, specifically requested, is not available, there will be an error instead of substituting the default storage engine: NO_ENGINE_SUBSTITUTION&lt;br /&gt;
&lt;br /&gt;
Everyone should put this into their site's my.cnf files. I am glad to see more and more people using it.&lt;br /&gt;
&lt;br /&gt;
(My only apology is that I am sorry I failed to argue strongly enough to make this behaviour default when I implemented it, years ago)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-5270055055337738712?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k3caGHqLqsaJNzeVe5y-JseYNE4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k3caGHqLqsaJNzeVe5y-JseYNE4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k3caGHqLqsaJNzeVe5y-JseYNE4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k3caGHqLqsaJNzeVe5y-JseYNE4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/lwAZnqeuzTY" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=5270055055337738712" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/5270055055337738712?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/5270055055337738712?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/lwAZnqeuzTY/tip-that-will-save-hours-of-sleep.html" title="Tip that will save hours of sleep..." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://antbits.blogspot.com/2010/08/tip-that-will-save-hours-of-sleep.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQ3s4fSp7ImA9WxFWGEs.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-913921763537755316</id><published>2010-06-06T16:46:00.000-07:00</published><updated>2010-06-06T16:55:02.535-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-06T16:55:02.535-07:00</app:edited><title>Oracle's MySQL Report Card,</title><content type="html">Yeah, I know it is early days right now but I do think that Oracle's acquisition of Sun Microsystems has not harmed MySQL.&lt;br /&gt;&lt;br /&gt;Oracle has not done anything to get in the way of MySQL and as far as I can tell, it's basically business as normal: People are still using MySQL.&lt;br /&gt;&lt;br /&gt;Admittedly, I have been busy at my job at Blizzard Entertainment but I really haven't seen anything which alarms me.&lt;br /&gt;&lt;br /&gt;Besides, the forks are a good thing: It is a sign of a healthy community that there are forks which explore different development ideas. I just hope that the forks have sufficient respect for each other that they will allow code to be merged in every direction. For that reason, the few code contributions I have made for MariaDB (for example) have been all made using the BSD license, which should not prevent them from being merged into MySQL.&lt;br /&gt;&lt;br /&gt;Personally, I would like to encourage more people to contribute code using the BSD license. I do believe that the use of the BSD license is perhaps the best decision made by Brain Aker for his Drizzle project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-913921763537755316?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u2GIKTXoIG4BcLcev_wBkUs57ZI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2GIKTXoIG4BcLcev_wBkUs57ZI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u2GIKTXoIG4BcLcev_wBkUs57ZI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2GIKTXoIG4BcLcev_wBkUs57ZI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/B6TtQtuoF40" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=913921763537755316" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/913921763537755316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/913921763537755316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/B6TtQtuoF40/oracles-mysql-report-card.html" title="Oracle's MySQL Report Card," /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2010/06/oracles-mysql-report-card.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAR3YyfCp7ImA9WxBRFk8.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-1217049526283330596</id><published>2010-01-04T09:08:00.000-08:00</published><updated>2010-01-04T09:45:46.894-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-04T09:45:46.894-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="wish list" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>"Save MySQL"; my 2 cents.</title><content type="html">There is no denying that MySQL has a huge amount of momentum behind it. 10+ years as the leading free SQL database kinda does that. It has successfully changed the perception of databases - where people used to visualise big-iron mainframes in specially cooled rooms to where anyone can install it for free within 15 minutes.&lt;br /&gt;&lt;br /&gt;That is not what this blog post is about. The topic of today is the "Save MySQL" campaign and how I believe it is unnecessary. &lt;br /&gt;&lt;br /&gt;In fact, I believe that it could be harmful.&lt;br /&gt;&lt;br /&gt;Like Anders, I have mostly been refraining from participating in this campaign but now I think it would be helpful for people to know my reasoning why.&lt;br /&gt;&lt;br /&gt;Let us consider some scenarios:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Oracle acquires Sun, ceases MySQL development.&lt;br /&gt;&lt;br /&gt;This would be a Pyrrhic victory for Oracle as the community would immediately coalesce around MariaDB / popular forks. Everything continues... except the MySQL trademark.&lt;br /&gt;&lt;br /&gt;Oracle is not that stupid.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Oracle acquires Sun, allows MySQL development to continue as before.&lt;br /&gt;&lt;br /&gt;In my opinion, this would be the worst possible scenario for MySQL/MariaDB/forks as it would divide and fragment the community as the codebases diverge.&lt;br /&gt;&lt;br /&gt;Are the "Save MySQL" campaigners really trying to achieve this goal?&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Oracle does not acquire Sun, Sun continues MySQL development as before.&lt;br /&gt;&lt;br /&gt;See previous point. Equally disastrous.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Sun sells MySQL intellectial property to third party. Oracle may or may not acquire Sun.&lt;br /&gt;&lt;br /&gt;Who would the third party be? Sun shareholders would be very annoyed if the sale was for less than $1bn... and rightfully so! Who has the cash to pay $1bn for a open-source database? I doubt that IBM would come to the rescue here as I doubt that there is enough IP in MySQL alone to interest them and the SAP bridge has already been burned.&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;So, what do I want to happen? That is a good question. There are a lot of tough decisions which has to be made to complete MySQL/MariaDB/etc. I like that MariaDB is being developed by Monty and many other long-time MySQL developers: A part of me wishes to be working with them to help shape it's future.&lt;br /&gt;&lt;br /&gt;Perhaps "MySQL" should become like "Linux". A brand owned by a benevolent organization and permits many distributions to use it to name their database product. The "MySQL" brand would require that so named software be GPL, share a common protocol and SQL dialect. There would be an open MySQL Compatibility Test kit which would test distros for compatibility to some "gold standard".&lt;br /&gt;&lt;br /&gt;Perhaps that is what I would like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-1217049526283330596?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oXRpr6sOtWRNtVvKbRnB0xJLbL4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oXRpr6sOtWRNtVvKbRnB0xJLbL4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oXRpr6sOtWRNtVvKbRnB0xJLbL4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oXRpr6sOtWRNtVvKbRnB0xJLbL4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/CZWZlvNutxA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=1217049526283330596" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1217049526283330596?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1217049526283330596?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/CZWZlvNutxA/save-mysql-my-2-cents.html" title="&quot;Save MySQL&quot;; my 2 cents." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://antbits.blogspot.com/2010/01/save-mysql-my-2-cents.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAARHY5fip7ImA9WxBTGEU.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7521641573425539522</id><published>2009-12-15T06:28:00.000-08:00</published><updated>2009-12-15T06:35:45.826-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-15T06:35:45.826-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="wtf" /><title>Version Number 5 point WTF?</title><content type="html">What is going on with the version numbers coming out of Sun/MySQL?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once upon a time, we had 5.2.&lt;/div&gt;&lt;div&gt;Then, to incorporate Falcon, it became 6.0.&lt;/div&gt;&lt;div&gt;Somewhere along the line, there was a 5.3.&lt;/div&gt;&lt;div&gt;Then a 5.4 appeared which seemed to be 5.1 with performance fixes for InnoDB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now there is a 5.5, which claims to be a 5.4 with a few stuff added.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Stop confusing your community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And whatever happened to community participation?&lt;/div&gt;&lt;div&gt;People would like to know.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7521641573425539522?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xxbiMA7RoBbIZ0mE1ZGY4xrP308/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxbiMA7RoBbIZ0mE1ZGY4xrP308/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xxbiMA7RoBbIZ0mE1ZGY4xrP308/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxbiMA7RoBbIZ0mE1ZGY4xrP308/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/xPbnHFNJnpg" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7521641573425539522" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7521641573425539522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7521641573425539522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/xPbnHFNJnpg/version-number-5-point-wtf.html" title="Version Number 5 point WTF?" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/12/version-number-5-point-wtf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4BRH0zfyp7ImA9WxNaF0o.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-6625497209616236057</id><published>2009-12-02T08:40:00.001-08:00</published><updated>2009-12-02T08:55:55.387-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T08:55:55.387-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="internals" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>2010 will be a good year,</title><content type="html">I suppose I should make it official: 2010 should see me being much more active in the Community.&lt;br /&gt;&lt;br /&gt;Why? Simply because I am now working for Blizzard Entertainment where I hope to help them make better, more efficient, use of MySQL/MariaDB. I expect to be working on some of MySQL's internals and storage engines in order to achieve what is wanted and helping them enhance their existing use of MySQL.&lt;br /&gt;&lt;br /&gt;Exactly what my role will be and the other little details, is still taking form but hopefully, we would be able to contribute some stuff back into the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-6625497209616236057?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rWMeAKkWvLDaNVhWJuY-KW2_ujA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rWMeAKkWvLDaNVhWJuY-KW2_ujA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rWMeAKkWvLDaNVhWJuY-KW2_ujA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rWMeAKkWvLDaNVhWJuY-KW2_ujA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/Dw8GgMKGLy8" height="1" width="1"/&gt;</content><link rel="related" href="http://us.blizzard.com/en-us/" title="2010 will be a good year," /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=6625497209616236057" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6625497209616236057?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6625497209616236057?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/Dw8GgMKGLy8/2010-will-be-good-year.html" title="2010 will be a good year," /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/12/2010-will-be-good-year.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EDQH49fyp7ImA9WxNbF04.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-6324963863801127118</id><published>2009-11-20T09:51:00.000-08:00</published><updated>2009-11-20T09:54:31.067-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T09:54:31.067-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>Crouching dolphin, hidden bugs.</title><content type="html">I hate it when the &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/news-5-1-41.html"&gt;changelog&lt;/a&gt; of any MySQL release references bugs which when clicked, simply says "You do not have access to bug".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-6324963863801127118?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iqHZwNe6KKQD27vjFzcC6Ew5xXE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iqHZwNe6KKQD27vjFzcC6Ew5xXE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iqHZwNe6KKQD27vjFzcC6Ew5xXE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iqHZwNe6KKQD27vjFzcC6Ew5xXE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/eMByr6SFyTo" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=6324963863801127118" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6324963863801127118?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6324963863801127118?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/eMByr6SFyTo/crouching-dolphin-hidden-bugs.html" title="Crouching dolphin, hidden bugs." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/11/crouching-dolphin-hidden-bugs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQAQ3k4eCp7ImA9WxNXFUU.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-6473049572958956231</id><published>2009-10-03T07:45:00.000-07:00</published><updated>2009-10-03T08:05:42.730-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-03T08:05:42.730-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="internals" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>A year in review; new direction.</title><content type="html">It has been more than a year since my self-imposed hiatus from serious MySQL development started and I think it is about time that I get back into the saddle. I have a handful of working prototypes but I should get the code out there, back into the community.&lt;br /&gt;&lt;br /&gt;I learned a bunch of stuff during the past year at Google but in the end, working on JavaScript, HTML/CSS and Google proprietary languages didn't really suit me during my role as SRE. (Also the 2-3 hours spent every day commuting to and from the office took it's toll)&lt;br /&gt;&lt;br /&gt;My immediate plan is to look for another job which would allow me to finish off the patches I have been toying with:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;const&lt;/code&gt;ifying the server code so that GCC can make smarter decisions and generate more optimal object code.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Splitting the parser. Removing the stored procedure implementation from the main parser yet preserving functionality and allowing alternate implementations to be installed. Use some modern bison features.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remove the direct use of Protocol class from most of the server core.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;External Language Stored Procedure rewrite. It will be simpler than current fork and to take advantage of all the previous items.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Various bug fixes.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I also want to get more engaged again with the MySQL community and hopefully will have new and exciting stuff to present at the UC next year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-6473049572958956231?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7viQ_49McoSfiD7g1PKWhzp34EQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7viQ_49McoSfiD7g1PKWhzp34EQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7viQ_49McoSfiD7g1PKWhzp34EQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7viQ_49McoSfiD7g1PKWhzp34EQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/8W_0PhilHqU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=6473049572958956231" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6473049572958956231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/6473049572958956231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/8W_0PhilHqU/year-in-review-new-direction.html" title="A year in review; new direction." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/10/year-in-review-new-direction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcNQnk-eip7ImA9WxNQEkg.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-5949460430976800580</id><published>2009-09-17T23:03:00.000-07:00</published><updated>2009-09-17T23:08:13.752-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T23:08:13.752-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="misc" /><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><title>Eraser ...</title><content type="html">I let a couple of these pass by but just thought I'd mention it (just in case any other ex-MySQLer is experiencing anything similar...&lt;br /&gt;&lt;br /&gt;Why does the MySQL bugs system remove former employees from the historical record?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Date: Thu, 17 Sep 2009 20:26:35 +0200&lt;br /&gt;From: Bug Database &lt;do-not-reply@mysql.com&gt;&lt;br /&gt;Subject: #29838 [Csd]: myisam corruption using concurrent select ... and update&lt;br /&gt;In-reply-to: &lt;bug-29838@bugs.mysql.com&gt;&lt;br /&gt;X-Originating-IP: [140.98.193.23]&lt;br /&gt;To: antony.curtis@ieee.org&lt;br /&gt;Message-id: &lt;200909171826.n8HIQZU6002514@bugs.mysql.com&gt;&lt;br /&gt;MIME-version: 1.0&lt;br /&gt;Content-type: text/plain; charset=utf-8&lt;br /&gt;Content-transfer-encoding: 8BIT&lt;br /&gt;X-Bug: 29838&lt;br /&gt;X-Bug-URL: http://bugs.mysql.com/29838&lt;br /&gt;X-Bug-Category: Server: MyISAM&lt;br /&gt;References: &lt;bug-29838@bugs.mysql.com&gt;&lt;br /&gt;X-Authentication-warning: bugs.mysql.com: apache set sender to&lt;br /&gt; bounce+antony.curtis=ieee.org@bugs.mysql.com using -f&lt;br /&gt;&lt;br /&gt;Dear developer, the bug assigned to you for review has been re-assigned to .&lt;br /&gt;&lt;br /&gt; Updated by:       James Day&lt;br /&gt; Reported by:      Shane Bester&lt;br /&gt; Category:         Server: MyISAM&lt;br /&gt; Severity:         S2 (Serious)&lt;br /&gt; Status:           Closed&lt;br /&gt; Changeset:        http://lists.mysql.com/commits/31944&lt;br /&gt; Version:          4.0.30, 4.1.23, 5.0.46BK, 5.1BK, 6.0.1&lt;br /&gt; OS:               Any&lt;br /&gt; Tags:             concurrent_insert, error 127, corruption&lt;br /&gt; Assigned To:      Ingo StrÃ¼wing&lt;br /&gt; Priority:         P1 (Critical)&lt;br /&gt;-Affected issues:  17915,16700,15911,15439,17046,15681,15442,14965,16745,18487,15427,18623,19293,21309,23978,23763&lt;br /&gt;+Affected issues:  17915,16700, 15911,15439, 17046,15681, 15442,14965,&lt;br /&gt;                   16745,18487, 15427,18623, 19293,21309, 23978,23763&lt;br /&gt;&lt;b&gt;-Reviewer:         Antony Curtis [done]&lt;br /&gt;+Reviewer:         Bugs System [done]&lt;/b&gt;&lt;br /&gt; Reviewer:         Sergey Vojtovich [done]&lt;br /&gt; Internal Tags:    sr5_1&lt;br /&gt; Affects customer: Yes&lt;br /&gt; Triage:           &lt;br /&gt;&lt;br /&gt;[No new comments]&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-5949460430976800580?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/faYnimQ18cLWjI7zXMRJ3t3fX_U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/faYnimQ18cLWjI7zXMRJ3t3fX_U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/faYnimQ18cLWjI7zXMRJ3t3fX_U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/faYnimQ18cLWjI7zXMRJ3t3fX_U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/bQipt6Wnxu4" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=5949460430976800580" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/5949460430976800580?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/5949460430976800580?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/bQipt6Wnxu4/eraser.html" title="Eraser ..." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/09/eraser.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YNRnw7fip7ImA9WxJbFUo.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7404324100321708531</id><published>2009-07-25T18:35:00.000-07:00</published><updated>2009-07-25T19:26:37.206-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-25T19:26:37.206-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><category scheme="http://www.blogger.com/atom/ns#" term="wish list" /><title>Celebration of forks?</title><content type="html">This blog post was inspired by Masood Mortazavi's comment: "OSCon to be somewhat disappointing this year -- many low quality sessions and a celebration of forks"&lt;br /&gt;&lt;br /&gt;I did not attend OSCON, even though I live in California. I did not even bother to submit a presentation proposal, even though people who attended my talks at the MySQL Conference and Expo earlier this year and the year before, all greatly enjoyed it. I have even received emails from people suggesting that I present the talks at OSCON, FOSDEM etc. Just to clarify: I have not submitted any proposals, anywhere (except a tentative volunteer at a MySQL Los Angeles Meetup, mostly because it's on the route home that I drive. Note to self: I need to confirm a date).&lt;br /&gt;&lt;br /&gt;I must admit that my enthusiasm for MySQL has been on the wane since there has been so little interest in proactively incorporating the work that I have done. I haven't done any hacking on MySQL (or any of its forks) in several months.&lt;br /&gt;&lt;br /&gt;Sun/Oracle must fix the mistakes of the past and cannot continue to develop MySQL in the same way that MySQL has been developed for the past 4 years. The development needs to be open and embrace the work that is happening outside of Sun. MySQL first started alienating open-source developers by persevering with using BitKeeper for several years past the point where it should have been abandoned and Sun has continued the alienation by having a closed development process - which left seasoned developers, such as myself, surprised with the MySQL 5.4 announcement.&lt;br /&gt;&lt;br /&gt;Open source does not like surprises.&lt;br /&gt;&lt;br /&gt;Today, it still seems that "official" development is still very closed. We only see intermittent pushes to the "public" LaunchPad pushes: The 5.4 repository is 3 weeks old; the 5.1 and 5.0 repositories are about 2 weeks old. In the bad-old BitKeeper days, the community can see the repository via bkbits but now, nada.&lt;br /&gt;&lt;br /&gt;Sun! Please! Open up the development and interact with the community before the goodwill of the MySQL brand disappears. It is not good enough just to continue as how MySQL AB was handling the development during the last few years before it was acquired: That was broken already. Have all your developers push to public repositories. Make the pushbuild results public. Proactively work to incorporate contributions with the knowledge that the contributors are often not paid to work on MySQL: They are a volunteers with only a small amount of time available.&lt;br /&gt;&lt;br /&gt;My regular employment at Google does not involve any MySQL development work. Google does not (and probably never will) use my external stored procedures patch for MySQL, for example. Some of you are probably thinking "Googlers have 20% time": So what? Perhaps I want to spend my "20% time" doing something more fun and productive than continuously merging a patch which will never be pushed? And just whose fork of MySQL am I supposed to develop and contribute to?&lt;br /&gt;&lt;br /&gt;Just my 2¢.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7404324100321708531?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xR_1xhSsiSv8xot_2MFZW0c3VK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xR_1xhSsiSv8xot_2MFZW0c3VK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xR_1xhSsiSv8xot_2MFZW0c3VK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xR_1xhSsiSv8xot_2MFZW0c3VK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/L06ktoo-nT4" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7404324100321708531" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7404324100321708531?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7404324100321708531?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/L06ktoo-nT4/celebration-of-forks.html" title="Celebration of forks?" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/07/celebration-of-forks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUECQXYycCp7ImA9WxJUEUg.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-8602397506158204023</id><published>2009-07-09T09:33:00.000-07:00</published><updated>2009-07-09T09:41:00.898-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-09T09:41:00.898-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><title>Binary Literals</title><content type="html">I was randomly browsing for some stuff and I stumbled across &lt;a href="http://wordaligned.org/articles/binary-literals"&gt;this post on binary literals&lt;/a&gt;. It proposed the following as an option for C++ which the article admits as being inefficient:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;unsigned long const mask&lt;br /&gt;    = std::bitset&lt;6&gt;(std::string("111100")).to_ulong();&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I was thinking that C++ templates must be able to offer something more efficient...&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;template &amp;lt;int N&amp;gt;&lt;br /&gt;struct Binary&lt;br /&gt;{&lt;br /&gt;  enum { value = Binary&amp;lt;N % 10&amp;gt; | 2 * Binary&amp;lt;N / 10&amp;gt;::value }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template&amp;lt;&amp;gt;&lt;br /&gt;struct Binary&amp;lt;0&amp;gt;&lt;br /&gt;{&lt;br /&gt;  enum { value = 0; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template&amp;lt;&amp;gt;&lt;br /&gt;struct Binary&amp;lt;1&amp;gt;&lt;br /&gt;{&lt;br /&gt;  enum { value = 1; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int foo = Binary&amp;lt;111100&amp;gt;::value;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Usual caveats apply. Code is untested and may eat kittens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-8602397506158204023?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Bx4EoaqzNtV_qY7J6d7D1xBamcM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bx4EoaqzNtV_qY7J6d7D1xBamcM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Bx4EoaqzNtV_qY7J6d7D1xBamcM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bx4EoaqzNtV_qY7J6d7D1xBamcM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/I1mwyc8A2mo" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=8602397506158204023" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8602397506158204023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8602397506158204023?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/I1mwyc8A2mo/binary-literals.html" title="Binary Literals" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/07/binary-literals.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cHRn48fCp7ImA9WxJRFEw.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-1151806352743870407</id><published>2009-05-15T11:03:00.001-07:00</published><updated>2009-05-15T11:10:37.074-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-15T11:10:37.074-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="internals" /><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><category scheme="http://www.blogger.com/atom/ns#" term="xmlrpc" /><category scheme="http://www.blogger.com/atom/ns#" term="maria" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><title>Perl and Java Stored Procedures for MariaDB 5.1</title><content type="html">I just applied the external stored procedure patch to a branch of MariaDB and uploaded it to LaunchPad.&lt;br /&gt;You can see the branch at &lt;a href="https://code.launchpad.net/~atcurtis/maria/5.1-wl820"&gt;https://code.launchpad.net/~atcurtis/maria/5.1-wl820&lt;/a&gt;&lt;br /&gt;Note that this is not in any reasonable condition to merge into MariaDB. Hopefully we can engage in dialog as to how we can bring this feature properly to MariaDB, MySQL and Drizzle, hopefully making the plugins reasonably easy to port between them, but to be "native and maintainable" without getting in the way of future development. For example, some of the infrastructure I have used to implement table functions was removed from the MySQL 6.0 branch. It would be nice if contributers can see and participate in roadmap discussions; historically MySQL may be Open Source but it would be good to have Open Development too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-1151806352743870407?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lp3DoLSLzFebvPpfOX0l__-ETFQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lp3DoLSLzFebvPpfOX0l__-ETFQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lp3DoLSLzFebvPpfOX0l__-ETFQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lp3DoLSLzFebvPpfOX0l__-ETFQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/qK0AiHWkxp8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=1151806352743870407" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1151806352743870407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1151806352743870407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/qK0AiHWkxp8/perl-and-java-stored-procedures-for.html" title="Perl and Java Stored Procedures for MariaDB 5.1" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/05/perl-and-java-stored-procedures-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4DRnY6eip7ImA9WxJSF0Q.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-3102029394086173564</id><published>2009-05-08T06:54:00.000-07:00</published><updated>2009-05-08T06:56:17.812-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-08T06:56:17.812-07:00</app:edited><title>Verizon FiOS is FAIL</title><content type="html">When is "Static IP" service not a "Static IP" service?&lt;br /&gt;It is not a "Static IP" service when it is provided by Verizon FiOS Internet service.&lt;br /&gt;There is no way to assign the static IP address to your own equipment.&lt;br /&gt;&lt;br /&gt;Verizon FiOS Static IP is FAIL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-3102029394086173564?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JL6P56cpCKi0n38KXlJAxUef1Jk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JL6P56cpCKi0n38KXlJAxUef1Jk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JL6P56cpCKi0n38KXlJAxUef1Jk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JL6P56cpCKi0n38KXlJAxUef1Jk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/nhA44FapQEk" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=3102029394086173564" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3102029394086173564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3102029394086173564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/nhA44FapQEk/verizon-fios-is-fail.html" title="Verizon FiOS is FAIL" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>9</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/05/verizon-fios-is-fail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NSH49fCp7ImA9WxJTGEk.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-2560807330884750381</id><published>2009-04-27T09:12:00.000-07:00</published><updated>2009-04-27T09:14:59.064-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-27T09:14:59.064-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><title>Conference Aftermath</title><content type="html">It is always after the conference when you get home that you notice missing items.&lt;br /&gt;&lt;br /&gt;I think I left a zip-up storage bag in Conference room A after my presentation of Perl Stored Procedures which may contain a few cables and a laptop security lock.&lt;br /&gt;&lt;br /&gt;Annoying when stuff like that happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-2560807330884750381?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YSYrsXM24CHh6aFX9LPw1QzCjyY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YSYrsXM24CHh6aFX9LPw1QzCjyY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YSYrsXM24CHh6aFX9LPw1QzCjyY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YSYrsXM24CHh6aFX9LPw1QzCjyY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/rmhB3Yp5c2Q" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=2560807330884750381" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/2560807330884750381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/2560807330884750381?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/rmhB3Yp5c2Q/conference-aftermath.html" title="Conference Aftermath" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/conference-aftermath.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYBSHwzeyp7ImA9WxJTGE0.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7838499290136956554</id><published>2009-04-26T20:07:00.000-07:00</published><updated>2009-04-26T20:15:59.283-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-26T20:15:59.283-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="drizzle" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><title>Thoughts on Drizzle Developer Day</title><content type="html">I wasn't able to spend the whole day at the &lt;a href="http://drizzle.org/wiki/Drizzle_Developer_Day_2009"&gt;Drizzle Developer Day&lt;/a&gt;, which was held at the Sun campus on the day after the MySQL Conference, but it was interesting none the less.&lt;br /&gt;I enjoyed discussing stuff with Monty Taylor and Stewart Smith and was able to show them some ideas which I hope will inspire more innovation in Drizzle. I would have liked to have had some time to chat with Brian Aker some time during the last week but time always seems to run out.&lt;br /&gt;&lt;br /&gt;It would be fun/nice if the MySQL conference would move to somewhere else in the world - it would be great to meet and chat with other former colleagues and friends who cannot (or will not) travel all the way to the Pacific coast of America.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7838499290136956554?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jzqwh6x8Tn6aJK1IU3YEMEtcO0c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jzqwh6x8Tn6aJK1IU3YEMEtcO0c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jzqwh6x8Tn6aJK1IU3YEMEtcO0c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jzqwh6x8Tn6aJK1IU3YEMEtcO0c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/tvsxfAz1AnA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7838499290136956554" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7838499290136956554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7838499290136956554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/tvsxfAz1AnA/thoughts-on-drizzle-developer-day.html" title="Thoughts on Drizzle Developer Day" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/thoughts-on-drizzle-developer-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EAQngyeip7ImA9WxJTFU8.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7201636403735079511</id><published>2009-04-23T15:12:00.000-07:00</published><updated>2009-04-23T15:27:23.692-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-23T15:27:23.692-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><title>Downloads for External/Perl Stored Procedures (aka LaunchPad is painfully slow)</title><content type="html">It appears that LaunchPad.net is pretty slow.&lt;br /&gt;&lt;br /&gt;So that people can have something to play with, I have transferred files to my own web site.&lt;br /&gt;&lt;br /&gt;Presentation files:&lt;ul&gt;&lt;li&gt;&lt;a href="http://cyberkinetica.homeunix.net/MySQL/UC2009_presentation.zip"&gt;UC2009_presentation.zip&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Source downloads:&lt;ul&gt;&lt;li&gt;&lt;a href="http://cyberkinetica.homeunix.net/MySQL/mysql-5.1.34.tar.gz"&gt;mysql-5.1.34.tar.gz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cyberkinetica.homeunix.net/MySQL/mysql-5.1.33.tar.gz"&gt;mysql-5.1.33.tar.gz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Please don't melt my router.... kthanx.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7201636403735079511?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m_ZQSfIv92MjLrSL5SFmU4MLDVM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m_ZQSfIv92MjLrSL5SFmU4MLDVM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m_ZQSfIv92MjLrSL5SFmU4MLDVM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m_ZQSfIv92MjLrSL5SFmU4MLDVM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/CzPrWpV4uys" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7201636403735079511" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7201636403735079511?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7201636403735079511?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/CzPrWpV4uys/downloads-for-externalperl-stored.html" title="Downloads for External/Perl Stored Procedures (aka LaunchPad is painfully slow)" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/downloads-for-externalperl-stored.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYAQHo9eip7ImA9WxJTFU0.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-1081452475010461211</id><published>2009-04-23T09:07:00.000-07:00</published><updated>2009-04-23T09:12:21.462-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-23T09:12:21.462-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><title>Minor rant...</title><content type="html">There apparently was T-shirts for speakers at the MySQL Conference but a few of us speakers have not received them - it was not clear where to get them from in the conference hall and there was confusion when I asked other speakers when I asked them as they did not know. Well - it seems that there was a conference T-Shirt but it was from the conference hall (which is now all packed up and gone) ... the blue-ticket thing was the thing to use to get it.&lt;br /&gt;&lt;br /&gt;*sighs*&lt;br /&gt;&lt;br /&gt;Was there a conference T-Shirt last year for speakers?&lt;br /&gt;Perhaps I am just unfortunately busy and I haven't acquired the necessary swag-grabbing techniques.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-1081452475010461211?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/okt98OQggBKWe_E42LB-MOeOCvY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/okt98OQggBKWe_E42LB-MOeOCvY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/okt98OQggBKWe_E42LB-MOeOCvY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/okt98OQggBKWe_E42LB-MOeOCvY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/emtfCUnabyU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=1081452475010461211" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1081452475010461211?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/1081452475010461211?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/emtfCUnabyU/minor-rant.html" title="Minor rant..." /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/minor-rant.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYGQH0-fyp7ImA9WxJTFEs.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-837303780106042280</id><published>2009-04-22T23:16:00.000-07:00</published><updated>2009-04-22T23:28:41.357-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T23:28:41.357-07:00</app:edited><title>(My) Community Contributions to MySQL BOF</title><content type="html">I arrived late for this talk yesterday. Don't know what was said before I arrived.&lt;br /&gt;Was working on my presentation, putting on a few finishing touches, during the BoF session.&lt;br /&gt;Asked about WorkLog visibility.&lt;br /&gt;Asked about reviewer availability.&lt;br /&gt;&lt;br /&gt;Take away quotations:&lt;br /&gt;"Contributions will be reviewed in reverse order of size (complexity)."&lt;br /&gt;"Contributions will be tracked in bugdb."&lt;br /&gt;"WorkLog will be replaced, maybe."&lt;br /&gt;&lt;br /&gt;I created &lt;a href="http://bugs.mysql.com/bug.php?id=44398"&gt;Bug#44398&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A FederatedX related contribution - &lt;a href="http://bugs.mysql.com/bug.php?id=29523"&gt;Bug#29523&lt;/a&gt; was last updated 221 days ago.&lt;br /&gt;&lt;br /&gt;My LOCK_open contribution for Storage Engine ::open and ::create, &lt;a href="http://bugs.mysql.com/bug.php?id=30051"&gt;Bug#30051&lt;/a&gt; was last updated 631 days ago.&lt;br /&gt;&lt;br /&gt;*sighs*&lt;br /&gt;&lt;br /&gt;Brian thinks I should blog this.&lt;br /&gt;I'm tired.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-837303780106042280?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oFqnnziirz_Di1bo_2cqQrO2YM8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oFqnnziirz_Di1bo_2cqQrO2YM8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oFqnnziirz_Di1bo_2cqQrO2YM8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oFqnnziirz_Di1bo_2cqQrO2YM8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/jPhuG9_ikl8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=837303780106042280" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/837303780106042280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/837303780106042280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/jPhuG9_ikl8/my-community-contributions-to-mysql-bof.html" title="(My) Community Contributions to MySQL BOF" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/my-community-contributions-to-mysql-bof.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAMRX4ycCp7ImA9WxJTFEg.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-3324189510872364625</id><published>2009-04-22T20:07:00.000-07:00</published><updated>2009-04-22T20:19:44.098-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T20:19:44.098-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="internals" /><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>Perl Stored Procedures for MySQL</title><content type="html">Files used in conference presentation here: &lt;a href="http://launchpad.net/mysql-wl820/trunk/5.1.33-wl820/+download/UC2009_presentation.zip"&gt;UC2009 presentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think todays presentation for Perl Stored Procedures for MySQL was quite successful. The audience was quite engaged and asked questions throughout (yes, I invited questions through the talk). I made sure to mention Eric Herman's Java plugin because even though he didn't get time to submit a talk, the work is noteworthy. Sometimes I worry that my accent may make it harder for people to understand what I was talking about so I tried to talk as clearly as I could. Note to self: I should have a bottle of water on the table for myself the next time I do a talk.&lt;br /&gt;&lt;br /&gt;The audience seemed to enjoy the demonstration part of the talk. I think it drew the appropriate amount of chuckles. One attendee said that the demo alone made his day at the conference worthwhile. Compared to last year, I think it was the right decision to split the presentation into one targeting developers wanting to get into the internals and a presentation simply to target end users.&lt;br /&gt;&lt;br /&gt;I just hope that the communication with the MySQL/Sun/Oracle community contribution team continues and we can get this work into the main tree where more people can make use of it.&lt;br /&gt;&lt;br /&gt;Launchpad Project Repository: &lt;a href="https://launchpad.net/sakila-server/wl820"&gt;https://launchpad.net/sakila-server/wl820&lt;/a&gt;&lt;br /&gt;Source and downloadable resources: &lt;a href="https://launchpad.net/mysql-wl820/trunk/5.1.33-wl820"&gt;https://launchpad.net/mysql-wl820/trunk/5.1.33-wl820&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-3324189510872364625?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wGfedpbLiURBXKomqC_OdQfBpVA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGfedpbLiURBXKomqC_OdQfBpVA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wGfedpbLiURBXKomqC_OdQfBpVA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wGfedpbLiURBXKomqC_OdQfBpVA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/V0-RzjLgufU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=3324189510872364625" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3324189510872364625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3324189510872364625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/V0-RzjLgufU/perl-stored-procedures-for-mysql.html" title="Perl Stored Procedures for MySQL" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/perl-stored-procedures-for-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QGRXo5eCp7ImA9WxJTE0g.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-3030417814116274432</id><published>2009-04-21T17:04:00.000-07:00</published><updated>2009-04-21T17:15:24.420-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-21T17:15:24.420-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="internals" /><category scheme="http://www.blogger.com/atom/ns#" term="sun" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title>External Stored Procedures for MySQL</title><content type="html">Finished my presentation earlier this afternoon. I had a better audience than last year and there was interest in the download URL for the source tarballs so I hope to see people hacking on it soon.&lt;br /&gt;&lt;br /&gt;The link to the presentation is &lt;a href="http://cyberkinetica.homeunix.net/MySQL/External_Stored_Procedures_for_MySQL_2009.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There has been lots of good communication with staff from MySQL^WSun Microsystems^W^WOracle so maybe we shall see this code to begin to be integrated soon. In other news, there was the MySQL 5.4 announcement. I'll pull the code and have a play...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-3030417814116274432?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JAGvDbc5fJ8h3o0HBKrfpDuGtXw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JAGvDbc5fJ8h3o0HBKrfpDuGtXw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JAGvDbc5fJ8h3o0HBKrfpDuGtXw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JAGvDbc5fJ8h3o0HBKrfpDuGtXw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/hRO83SGa2bI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=3030417814116274432" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3030417814116274432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/3030417814116274432?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/hRO83SGa2bI/external-stored-procedures-for-mysql.html" title="External Stored Procedures for MySQL" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/04/external-stored-procedures-for-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHQXcyeCp7ImA9WxVbEk8.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-8412083628077309839</id><published>2009-03-28T00:28:00.000-07:00</published><updated>2009-03-28T01:00:30.990-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-28T01:00:30.990-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="opinion" /><title>Opinion and Speculation: Log Structured vs Traditional Block</title><content type="html">At least since early 2006, at the MySQL Athens meeting where I first met and listened to Jim Starkey, I have been of the firm conviction that log structured databases will be the future for disc-based storage devices. Their largely sequential write pattern ideally suits modern drives which are optimized to write whole tracks of data at a time. I even proposed such a project to Monty and Brian at that meeting. Of course, they said that I should go ahead and write one but circumstances contrived against me and I never really progressed much beyond the experimental proof of concept stage, my time having been occupied with the aborted Amira project and providing some assistance to the early Falcon project.&lt;br /&gt;&lt;br /&gt;For that reason, when I first heard of PBXT, I was very excited. I have told many people to keep an eye on that project because although it was slower, it will catch up and then surpass traditional block storage databases such as InnoDB.&lt;br /&gt;It's taken a while but ... a big THANK YOU to Paul and his team at Primebase for ensuring that I do not have to eat my words for all the talking up I have done about PBXT for the past couple of years&lt;br /&gt;&lt;br /&gt;The game-changer in the near future is Flash storage and other solid state media. Such technologies mean that there is no seek/head settle time. Optimization strategies like clustered indexes become obsolete. However, Flash does have some overhead in writing and it is preferred to write whole flash blocks at a time. Right now, I believe that most Flash media use 64 KB blocks but as Flash media increases in size and performance, by increasing the bit-width, the effective block size of the media will increase. Log-structured storage can optimize for this because all writes are consolidated into a block and there will be little penalty for the index to be scattered across many segments because of there being no seek penalty.&lt;br /&gt;&lt;br /&gt;After Flash... Let us imagine a future where we have some form of ultra-fast &lt;a href="http://en.wikipedia.org/wiki/Memristor"&gt;memristor&lt;/a&gt; based storage which supplant DRAM, Flash and disc media, then all this talk about database storage engines becomes practically moot ... just wire up the memristor memory to your 64bit CPU with it's 64bit address bus. Provide record version control, perhaps by some form of in-memory index, perhaps vaguely log-structured but no need for contiguous segments in order to scale on NUMA architectures (which now Intel is transitioning to with their new HyperTransport inspired workalike).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-8412083628077309839?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hF7AidkElNWhhSxjy4TljYLR7M0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hF7AidkElNWhhSxjy4TljYLR7M0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hF7AidkElNWhhSxjy4TljYLR7M0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hF7AidkElNWhhSxjy4TljYLR7M0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/V6k1UaZKdNc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=8412083628077309839" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8412083628077309839?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8412083628077309839?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/V6k1UaZKdNc/opinion-and-speculation-log-structured.html" title="Opinion and Speculation: Log Structured vs Traditional Block" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/03/opinion-and-speculation-log-structured.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcERn04fCp7ImA9WxVUFk0.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-2308167391637110405</id><published>2009-03-20T18:27:00.000-07:00</published><updated>2009-03-20T18:46:47.334-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-20T18:46:47.334-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><category scheme="http://www.blogger.com/atom/ns#" term="uc2009" /><title>MySQL 5.1.32 + External Stored Procedures</title><content type="html">I have synced the codebase with the 5.1.32 release of MySQL and it appears to work just fine. Sometimes frustrating that Bazaar takes a bizarre amount of time to do a merge.&lt;br /&gt;&lt;br /&gt;Download link for the source tarball are available from &lt;a href="http://launchpad.net/mysql-wl820/trunk/5.1.32-wl820"&gt;LaunchPad Download&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As an experiment, I have built a Mac OS 10.5 installer package (x86 32bit) which I have also placed there. Took a bit of fiddling about to discover how to use PackageMaker and how to automate it. It's built to work against Apple's Perl and Java, which have 32bit runtimes. Time permitting, I will later look at how to do a fenced plugin which would enable using an external language plugin of a different architecture. No guarantees - YMMV. If it works, enabling the Perl and Java stored procedure plugins should be as simple as : &lt;blockquote&gt;&lt;pre&gt;&lt;small&gt;~$ mysql -u root&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 2&lt;br /&gt;Server version: 5.1.32-wl820 External Language Stored Procedures - https://launchpad.net/mysql-wl820&lt;br /&gt;&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;INSTALL PLUGIN Perl SONAME 'psm_perl.so';&lt;/b&gt;&lt;br /&gt;Query OK, 0 rows affected (0.01 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;INSTALL PLUGIN Java SONAME 'psm_java.so';&lt;/b&gt;&lt;br /&gt;Query OK, 0 rows affected (0.10 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; SHOW PLUGINS;&lt;br /&gt;+------------+--------+----------------+-------------+---------+&lt;br /&gt;| Name       | Status | Type           | Library     | License |&lt;br /&gt;+------------+--------+----------------+-------------+---------+&lt;br /&gt;| binlog     | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| CSV        | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| MEMORY     | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| InnoDB     | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| MyISAM     | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL        | GPL     | &lt;br /&gt;| Perl       | ACTIVE | PSM LANGUAGE   | psm_perl.so | GPL     | &lt;br /&gt;| Java       | ACTIVE | PSM LANGUAGE   | psm_java.so | GPL     | &lt;br /&gt;+------------+--------+----------------+-------------+---------+&lt;br /&gt;8 rows in set (0.01 sec)&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-2308167391637110405?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Bo2CI0-IPpaOy6BkNZ8ZpGyblgM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bo2CI0-IPpaOy6BkNZ8ZpGyblgM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Bo2CI0-IPpaOy6BkNZ8ZpGyblgM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bo2CI0-IPpaOy6BkNZ8ZpGyblgM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/SGDzNELwzjI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=2308167391637110405" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/2308167391637110405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/2308167391637110405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/SGDzNELwzjI/mysql-5132-external-stored-procedures.html" title="MySQL 5.1.32 + External Stored Procedures" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/03/mysql-5132-external-stored-procedures.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQHQns5cCp7ImA9WxVWFE8.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-8256829981458690804</id><published>2009-02-23T12:44:00.000-08:00</published><updated>2009-02-23T13:08:53.528-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-23T13:08:53.528-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><category scheme="http://www.blogger.com/atom/ns#" term="perl" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Making SVG graphs with MySQL Perl Stored Procedures</title><content type="html">It is possible to generate SVG graphs directly without requiring access to the Google Chart Servers. Perl provides a wealth of libraries which can create SVG graphs (but most not quite as pretty as the charts which the Google service creates).&lt;br /&gt;&lt;br /&gt;This could be invaluable for people who want to serve all the information from their own website - for example, SSL encrypted websites - where some 'secured' web browsers may not display embedded content which is not sourced from the same domain.&lt;br /&gt;&lt;br /&gt;Here is an example of something which would provide much the same data as the example posted by &lt;a href="http://www.ruturaj.net/mysql-google-pie-charts"&gt;Ruturaj Vartak&lt;/a&gt;and &lt;a href="http://blog.olindata.com/2009/02/using-the-google-graph-api-with-mysql-stored-functions/"&gt;Walter Heck&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For my demonstration, I have used the &lt;a href="http://search.cpan.org/dist/SVG-TT-Graph/"&gt;SVG::TT::Graph&lt;/a&gt; modules, which the Pie chart is currently limited to a maximum of 12 segments but there are other Perl modules available for generating &lt;a href="http://search.cpan.org/search?m=all&amp;q=SVG"&gt;SVG&lt;/a&gt; graphs.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;&lt;pre&gt;package DemoGraphs;&lt;br /&gt;&lt;br /&gt;use 5.008008;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;use Symbol qw(delete_package);&lt;br /&gt;use DBI;&lt;br /&gt;use SVG::TT::Graph::Pie&lt;br /&gt;require Exporter;&lt;br /&gt;our @ISA = qw(Exporter);&lt;br /&gt;our @EXPORT_OK = qw(  );&lt;br /&gt;our @EXPORT = qw( benchmark );&lt;br /&gt;our $VERSION = '0.01';&lt;br /&gt;&lt;br /&gt;# Preloaded methods go here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# -- returns a single row resultset&lt;br /&gt;# CREATE PROCEDURE test.db_size_graph(width int, height int)&lt;br /&gt;#        READS SQL DATA&lt;br /&gt;#        DYNAMIC RESULT SETS 1&lt;br /&gt;#        LANGUAGE Perl&lt;br /&gt;#        EXTERNAL NAME "DemoGraphs::db_size_graph";&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub db_size_graph($$)&lt;br /&gt;{&lt;br /&gt;  my ($width, $height) = @_;&lt;br /&gt;  my $dbh = DBI-&gt;connect('DBI:mysql:test', undef, undef);&lt;br /&gt;&lt;br /&gt;  my $data = $dbh-&gt;selectall_arrayref(q(&lt;br /&gt; SELECT&lt;br /&gt;  t.table_schema,&lt;br /&gt;  ROUND(SUM(t.data_length + t.index_length) / 1024)&lt;br /&gt;   AS data_length_schema&lt;br /&gt; FROM&lt;br /&gt;  information_schema.tables t&lt;br /&gt; GROUP BY&lt;br /&gt;  t.table_schema&lt;br /&gt; ORDER BY&lt;br /&gt;  t.table_schema&lt;br /&gt;  )) or die $dbh-&gt;errstr;&lt;br /&gt;&lt;br /&gt;  my @fields = ();&lt;br /&gt;  my @data = (); &lt;br /&gt; &lt;br /&gt;  my $row;&lt;br /&gt;&lt;br /&gt;  foreach $row (@$data) {&lt;br /&gt;    push @fields, $row-&gt;[0];&lt;br /&gt;    push @data, $row-&gt;[1];&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  my $graph = SVG::TT::Graph::Pie-&gt;new({&lt;br /&gt;    # Required&lt;br /&gt;    'fields'  =&gt; \@fields,&lt;br /&gt;    # Optional&lt;br /&gt;    'height'  =&gt; $height,&lt;br /&gt;    'width'  =&gt; $width,&lt;br /&gt;    'show_graph_title' =&gt; 1,&lt;br /&gt;    'graph_title' =&gt; 'Database Sizes (KB)',&lt;br /&gt;    'key'  =&gt; 1,&lt;br /&gt;   });&lt;br /&gt;&lt;br /&gt;  $graph-&gt;add_data({&lt;br /&gt;    'data'  =&gt; \@data,&lt;br /&gt;    'title'  =&gt; 'Database Sizes (KB)',&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt;  return {&lt;br /&gt;    'svg' =&gt; $graph-&gt;burn(),&lt;br /&gt;  };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;1;&lt;br /&gt;__END__&lt;/pre&gt;&lt;/small&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-8256829981458690804?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KhE-vA6mw0xuUT81fdcfvjCZgxo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KhE-vA6mw0xuUT81fdcfvjCZgxo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KhE-vA6mw0xuUT81fdcfvjCZgxo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KhE-vA6mw0xuUT81fdcfvjCZgxo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/DqZ0kCcnX3g" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=8256829981458690804" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8256829981458690804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/8256829981458690804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/DqZ0kCcnX3g/making-svg-graphs-with-mysql-perl.html" title="Making SVG graphs with MySQL Perl Stored Procedures" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/02/making-svg-graphs-with-mysql-perl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EFQ3w4eSp7ImA9WxVXGU0.&quot;"><id>tag:blogger.com,1999:blog-27751205.post-7013243993397607470</id><published>2009-02-17T12:19:00.000-08:00</published><updated>2009-02-17T13:20:12.231-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-17T13:20:12.231-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure" /><title>Yet more on Stored Procedure performance</title><content type="html">In Karlsson's blog post, &lt;a href="http://karlssonondatabases.blogspot.com/2009/02/more-on-stored-procedure-performance.html"&gt;More on Stored Procedure performance&lt;/a&gt;, he has written a simple C program to send queries repeatedly to the MySQL server in order to do performance measurement. Unfortunately, his sample client will end up factoring a lot of the synchronous communications overhead in to his performance comparison.&lt;br /&gt;&lt;br /&gt;&lt;P&gt;I think that he should enable the MySQL multi-statement feature and then perform his comparison by concatenating the test statement repeatedly before sending it to the server:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#include &amp;lt;my_global.h&amp;gt;&lt;br /&gt;#include &amp;lt;mysql.h&amp;gt;&lt;br /&gt;#include &amp;lt;my_sys.h&amp;gt;&lt;br /&gt;#define MY_SOCKET "/tmp/mysql.sock"&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;  MYSQL *pMySQL;&lt;br /&gt;  int i, nLoop;&lt;br /&gt;  char *pStmt;&lt;br /&gt;&lt;br /&gt;  if(argc &amp;lt; 2)&lt;br /&gt;  {&lt;br /&gt;    fprintf(stderr, "Usage: %s \n", argv[0]);&lt;br /&gt;    return 0;&lt;br /&gt;  }&lt;br /&gt;  nLoop = atoi(argv[1]);&lt;br /&gt;  pStmt = argv[2];&lt;br /&gt;&lt;br /&gt;  &lt;b&gt;DYNAMIC_STRING query;&lt;br /&gt;  init_dynamic_string(&amp;amp;query, "", 0, 4096);&lt;br /&gt;&lt;br /&gt;  for(i = 0; i &amp;lt; nLoop; ++i)&lt;br /&gt;  {&lt;br /&gt;    dynstr_append(&amp;amp;query, pStmt);&lt;br /&gt;    if (query.str[query.length-1] != ';')&lt;br /&gt;      dynstr_append(&amp;amp;query, ";");&lt;br /&gt;  }&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;  pMySQL = mysql_init(NULL);&lt;br /&gt;  if(mysql_real_connect(pMySQL, NULL, "perf", "perf", "test",&lt;br /&gt;  0, MY_SOCKET, CLIENT_COMPRESS | &lt;b&gt;CLIENT_MULTI_STATEMENTS&lt;/b&gt;) == NULL)&lt;br /&gt;  {&lt;br /&gt;    fprintf(stderr, "Error %s connecting to MySQL.\n",&lt;br /&gt;    mysql_error(pMySQL));&lt;br /&gt;    mysql_close(pMySQL);&lt;br /&gt;    return 1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if(mysql_query(pMySQL, &lt;b&gt;query.str&lt;/b&gt;) != 0)&lt;br /&gt;  {&lt;br /&gt;    fprintf(stderr, "Error %s in MySQL query.\n", mysql_error(pMySQL));&lt;br /&gt;    mysql_close(pMySQL);&lt;br /&gt;    return 1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  mysql_close(pMySQL);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So, what do my results look like...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$ time ./spperf 100000 'INSERT INTO foo VALUES(57, "Some data")'&lt;br /&gt;&lt;br /&gt;real 0m5.198s&lt;br /&gt;user 0m3.101s&lt;br /&gt;sys 0m1.887s&lt;br /&gt;$ time ./spperf 1 'CALL PERF(100000)'&lt;br /&gt;&lt;br /&gt;real 0m16.944s&lt;br /&gt;user 0m0.005s&lt;br /&gt;sys 0m0.003s&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Oops! very different results right at the outset!&lt;br /&gt;&lt;br /&gt;Calling the PERF procedure 100000 in a multi-statement query seems to crash the server... Looks like the &lt;code&gt;free_root()&lt;/code&gt; memory reclamation which occurs at the end of the &lt;code&gt;dispatch_command()&lt;/code&gt; function in &lt;code&gt;sql_parse.cc&lt;/code&gt; probably needs to be called more often when working with large multi-statement queries.&lt;br /&gt;No, I haven't bothered to check if this is a known bug in 5.1.31.&lt;br /&gt;&lt;br /&gt;Be careful with pseudo-benchmarks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27751205-7013243993397607470?l=antbits.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oCFlDQHnFFKGuwrvs15VkQ4UDw4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oCFlDQHnFFKGuwrvs15VkQ4UDw4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oCFlDQHnFFKGuwrvs15VkQ4UDw4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oCFlDQHnFFKGuwrvs15VkQ4UDw4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AntonysMysqlBits/~4/SOT-oy_ldRI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27751205&amp;postID=7013243993397607470" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7013243993397607470?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27751205/posts/default/7013243993397607470?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AntonysMysqlBits/~3/SOT-oy_ldRI/yet-more-on-stored-procedure.html" title="Yet more on Stored Procedure performance" /><author><name>Antony</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://bp3.blogger.com/_286DZdb_E9Q/R7xgoY7oP1I/AAAAAAAAAAY/cJrPrMez7_k/S220/tony_thumbnail.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://antbits.blogspot.com/2009/02/yet-more-on-stored-procedure.html</feedburner:origLink></entry></feed>

