{"id":847,"date":"2007-06-19T11:42:46","date_gmt":"2007-06-19T01:42:46","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/2007\/06\/19\/my-top-5-wishlist-for-mysql\/"},"modified":"2014-10-08T09:21:51","modified_gmt":"2014-10-07T23:21:51","slug":"my-top-5-wishlist-for-mysql","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2007\/06\/19\/my-top-5-wishlist-for-mysql\/","title":{"rendered":"My Top 5 Wishlist for MySQL"},"content":{"rendered":"<p>I&#8217;m going and stealing <a href=\"http:\/\/jpipes.com\/index.php?\/archives\/172-My-Top-5-Wishlist-for-MySQL.html\">Jay&#8217;s idea<\/a> (who stole it off <a href=\"http:\/\/web.archive.org\/web\/20090318131015\/http:\/\/blogs.oracle.com:80\/duffblog\/\">Brian Duff<\/a>&#8230; but his was for Oracle so obviously doesn&#8217;t count :)<a href=\"http:\/\/jpipes.com\/index.php?\/archives\/172-My-Top-5-Wishlist-for-MySQL.html\"> <\/a><\/p>\n<p>So, my five wishes for MySQL Are:<\/p>\n<p><strong>5. Six-monthly release cycles<br \/>\n<\/strong><\/p>\n<p>Getting a release out there takes way too long. There&#8217;s a variety of reasons, but seeing the amazing success of other free software projects taking the shorter release cycle, with each release not being too ambitious, I&#8217;m pretty convinced.<\/p>\n<p>Although I think our increased use of pushbuild has helped immensely with the general quality of the tree, there&#8217;s a lot more that can be done&#8230;<\/p>\n<p><strong>4. Much more in depth automated testing<br \/>\n<\/strong><\/p>\n<p>For MySQL Cluster we have (in parts) an insanely detailed test suite&#8230; lots of error injection to test failure (or, more importantly, recovery), verifying data, transactional consistency etc. Also, tests that run multiple connections, threads, simultaneous transactions and test the results programatically (comparing strings is generally not very useful&#8230; even when it comes to something as simple as IPv4 or IPv6 address!).<\/p>\n<p>Part of getting here is the SoC project I&#8217;m mentoring&#8230; which should have an output of some utilities for helping write better tests (rather like we have for NDB&#8230; but for SQL instead of NDB API).<\/p>\n<p><strong>3. Sane build system<\/strong><\/p>\n<p>Something that not just the build team knows how to produce a binary that&#8217;s released. The other side of this is a way to build your local working tree (and test it) on BLAH platform, without pushing.<\/p>\n<p style=\"font-weight: bold\">3.5. (yes, i have a 3.5)<\/p>\n<p>Kill HPUX. There&#8217;s a reason the name sounds like a disease.<\/p>\n<p><strong>2. Increased liberal use of asserts <\/strong><\/p>\n<p>This is just a wish from a bug I&#8217;ve been tracking down where the code to build an I_S table didn&#8217;t check that we opened all the tables successfully before calling handler::info()&#8230; which promptly goes fooey because the handler hasn&#8217;t opened the table. Luckily here it&#8217;s ended in a crash&#8230; IMNSHO it&#8217;s better to bail out on an assert than possibly return crap to the user&#8230;<\/p>\n<p><strong>1. Pluggable data dictionary<\/strong><\/p>\n<p>There are so many oddities and &#8220;bugs&#8221; around related to the casually strange mix of data dictionaries around the MySQL Server (and Federated, NDB, InnoDB, Falcon etc) that we could do a lot better if we had a &#8220;Virtual Data Dictionary Layer&#8221;&#8230; where engines who really do have a reason to not be simple (e.g. NDB) could plug in and the MySQL Server could get all the metadata consistently from the cluster (with out own form of sane-ish caching).<\/p>\n<p>This would also solve the online ALTER TABLE frm consistency problem with engines that may roll back the alter table on crash recovery (or not support querying the index until it has finished being built).<\/p>\n<p>Perhaps this is something for either the next engine summit or dev conf&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m going and stealing Jay&#8217;s idea (who stole it off Brian Duff&#8230; but his was for Oracle so obviously doesn&#8217;t count :) So, my five wishes for MySQL Are: 5. Six-monthly release cycles Getting a release out there takes way &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2007\/06\/19\/my-top-5-wishlist-for-mysql\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[14],"tags":[113,628,125],"class_list":["post-847","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-meme","tag-mysql","tag-wishlist"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-dF","jetpack-related-posts":[{"id":1738,"url":"https:\/\/www.flamingspork.com\/blog\/2009\/10\/14\/return-of-the-top-5-mysql-wishlist-and-looking-at-drizzle\/","url_meta":{"origin":847,"position":0},"title":"Return of the &#8220;Top 5 MySQL Wishlist&#8221; and looking at Drizzle","author":"Stewart Smith","date":"2009-10-14","format":false,"excerpt":"It's coming up on a year since I started working full time on Drizzle. So, I got a bit reflective... Have we done things that I (and others) really wanted done? Back in 2007, I wrote my top 5 wishlist for the MySQL Server. I am not going to pretend\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3391,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/08\/09\/are-mariadb-tests-adding-anything-extra-over-oracle-mysql-tests\/","url_meta":{"origin":847,"position":1},"title":"Are MariaDB tests adding anything extra over Oracle MySQL tests?","author":"Stewart Smith","date":"2013-08-09","format":false,"excerpt":"I grabbed all the tests introduced in MariaDB 5.5.32 (i.e. \"bzr diff -rtag:mariadb-5.5.31..mariadb-5.5.32 mysql-test\/\" and some foo) and threw them in their own test file. I only kept tests for crashing bugs and ignored those that required plugins (there were two or three, but nothing major). So now I have\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3697,"url":"https:\/\/www.flamingspork.com\/blog\/2014\/03\/11\/ghosts-of-mysql-past-part-8-the-first-fork\/","url_meta":{"origin":847,"position":2},"title":"Ghosts of MySQL Past, Part 8: The First Fork.","author":"Stewart Smith","date":"2014-03-11","format":false,"excerpt":"This is the 8th installment in the rather long series that started with Part 1 about a month ago. Back in 2006, we were in the situation where MySQL 5.0 had taken forever, and the first \"GA\" release was not suitable for production. Looking towards MySQL 5.1, it was also\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1153,"url":"https:\/\/www.flamingspork.com\/blog\/2008\/07\/18\/mysql-online-backup-with-encryption-preview-release\/","url_meta":{"origin":847,"position":3},"title":"MySQL Online Backup with Encryption Preview Release","author":"Stewart Smith","date":"2008-07-18","format":false,"excerpt":"Head on over to the OnlineBackup - MySQL Forge Wiki and your able to get a built preview release with Encryption support. I welcome and encourage feedback!OnlineBackup - MySQL Forge Wiki","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3238,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/06\/mariadb-code-size\/","url_meta":{"origin":847,"position":4},"title":"MariaDB code size","author":"Stewart Smith","date":"2013-03-06","format":false,"excerpt":"Continuing on from my previous post,\u00c2\u00a0MySQL code size over releases. I wanted to look at the different branches\/patch sets of MySQL out there and work out how far from upstream they deviated. I'm just going to compare against whatever upstream version the most easily accessible version is based on (be\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/docs.google.com\/spreadsheet\/oimg?key=0Ar7e3-N2Y32IdHFGRWI2ODk4ZUY4TkhrclJSVC1mb3c&oid=4&zx=imt1yst694nh","width":350,"height":200},"classes":[]},{"id":3254,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/12\/is-mysql-bigger-than-linux\/","url_meta":{"origin":847,"position":5},"title":"Is MySQL bigger than Linux?","author":"Stewart Smith","date":"2013-03-12","format":false,"excerpt":"I'm going to take the numbers from my previous post, MySQL Modularity, Are We There Yet? for the \"kernel\" size of MySQL - that is, everything that isn't a plugin or storage engine. For Linux kernel, I'm just going to use the a-bit-old git tree I have on my laptop.\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=847"}],"version-history":[{"count":3,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/847\/revisions"}],"predecessor-version":[{"id":3874,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/847\/revisions\/3874"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}