13
I Use This!
Activity Not Available

News

Analyzed 5 months ago. based on code collected about 3 years ago.
Posted almost 13 years ago
Drizzle source tarball, version 2011.07.22 has been released. In this release: Continued code refactoring (thanks again to Olaf van der Spek) Multi-master replication is back Various bug and documentation fixes The Drizzle download file can be found here
Posted almost 13 years ago by Monty Taylor
There's been quite the thread on Google+ (my how technology changes quickly...) over a comment Andrew Hutchings made on an Oracle MySQL Blog Annoucment for their new "Meet The MySQL Experts" Podcast. I should have ignored it - because I honestly ... [More] could not give two shits one way or the other about Oracle or any podcasts that they may or may not decide to broadcast. But to be straightfoward about it ... the title of the podcast is ludicrous. In case you were wondering, "The" in English is the definite article and implies a singular quality to the thing that it describes... effectively implying that Oracle's MySQL Experts are, in fact, the only MySQL Experts. We all know that's false- Percona and SkySQL are both full of experts as well - likely have more MySQL Experts per-capita than Oracle does, as if a per-capita measure were important. Of course, as Matt Montgomery pointed out, there is absolutely no reason for Oracle to point people toward's someone else's experts ... and that's fine. It's just that there are other ways to phrase the title that still assert Oracle's product and trademark and which are not, from a purely grammatical sense, lies. "Meet Our MySQL Experts" or even "Meet MySQL Experts" or "MySQL Experts Talk to You" or "Hey! Look! MySQL Experts are going to drink Black Vodka!" (ok, probably not the last, since that would point people to MariaDB - but it is at least a true statement... MySQL Experts WILL, inevitably, drink Black Vodka)As I said earlier though - I don't really care about Oracle... they have no impact or meaning in my life... so if they want to either play silly grammatical games OR be unaware as to the actual meaning of words in English - that's fine. But then Matt Lord said something that really pissed me off:  Any religion and its dogma can be problematic in the real world, whether or not it involves any kind of deism or not. :) Too often people confuse FOSS with the cathedral and the bazaar, shared development, shared ownership and other high minded ideals and frameworks. In the end, it's a trademarked and in-house developed product that is released as FOSS. It's not a cross, don't try to impale yourself on it. :D It's not that big of a deal people! We're surrounded by beauty and tragedy, this is just work. Now, first of all, I like Matt Lord. And with that in mind, I have the following to say:I am fully in support of trademarks and trademark protection. I am fully in support of people making a living doing what they do - especially if they are doing it by providing a service. I recognize that Oracle owns the trademark MySQL and can do with it as they see fit.Oracle does, in fact, own the product called MySQL, with all of the rights that go along with that... and honestly I do not think they are being bad shepherds of that product. Whether I like Oracle or not, it is undeniable that they are now a part of the MySQL picture, and I say good for them.The reason I get pissed off is the attitude that it's not that big of a deal. The MySQL trademark and the business around MySQL is a BIG DEAL to Oracle, and if I were to try to put forward the opinion that they should just, you know, stop caring about it, people would think I was crazy. Why is it so unreasonable then for me to care about the portion of this that I happen care about? Why is it not ok for me to NOT be in this for the money, for me to NOT be in this just as work?I think it might be worthwhile reading The Cathedral and The Bazaar again - because it describes the two different models you are talking about rather than being a single entity that one might confuse FOSS with. The Cathedral, as described in the book, is the model traditionally taken by the MIT and Gnu-derived projects,  (although emacs has a more open dev model now) and is currently also employed by Oracle on MySQL. In fact, it has been the MySQL model for quite some time - well before Oracle entered the picture. It involves a mostly closed dev process from which code drops are made unannounced and at the whim of the folks in the Cathedral. It's not de-facto a bad thing, it's just a description of a process. With the Cathedral, ironically enough, it is the ideals of Free Software (that the software itself be free) that are more important and that an open development process is less important. The Bazaar, on the other hand, is the process Linux uses - where all of the development is done in a distributed manner and in the open. The assertion in the book, and one of the philosophical differences between Free Software and Open Source (which makes the use of FLOSS or FOSS completely ludicrous) is that having an open development process is more valuable than just the software being free, although the by-product of an open development process is that your software sort of has to be Open Source. The irony here that I mentioned earlier is that, of course, Oracle approaching its Free Software offerings via the Cathedral model gives it none of the benefits you would think a corporation might want from an arrangement such as Eric Raymond's Open Source Bazaar model might afford them, and instead themselves choose to operate under a set of zealous ideals much more akin to Richard Stallman.I'm sure that analogy is not pleasing to either Stallman or Ellison.Although I understand that the ideals behind Free Software may not be important to you, I do not think that there is any constructive reason in the context of a discussion about Oracle's business practices asserting trademark ownership to imply me subscribing to those ideals is silly. It would be very difficult to accurately describe the success of any of the currently valuable pieces of Free Software as not due in any large part to those of us who routinely impale ourselves on the cross of Free Software. MySQL AB's business strategy itself, which involved attaching FUD to discussions of the GPL to incite people to buy licenses that they quite simply did not need ... (a perfectly valid if devious business strategy) was predicated on the existence of such an enormous shit-ton of users that they could focus on converting a percent of a percent of those users into customers and still wind up selling the business for a billion dollars. That shit-ton of users grew out of the emergence of LAMP as the dominant pattern for the Web. LAMP arose because it was technically much better than any of the alternatives... and the pieces of LAMP became dominant because of the work of a set of people who do, in fact, care about the ideals of either Free Software or Open Source.You seem to be quick to put things in business perspectives and to remind people that it's ok for Oracle to do business. I agree. It's ok. But we wouldn't have had MySQL to work in the first place for if it wasn't for a bunch of people for whom it was not just a job, for whom it was not just work and for whom the ideals you are looking down on are not silly things.So disagree with me all you want to about the effects of Oracle's choices on the health of MySQL. Defend Oracle all you want to on whatever terms you want, in whatever way you want to define a set of values such that they are positive. I'm right there with you on some of it, I might disagree with you on other bits, and that's just life and how we go on being people ... but please do not smirk and snicker and roll your eyes and tell me that the things that I think are important are not. I assure you, I find them to be very important and I do not believe I am the only person who does. [Less]
Posted almost 13 years ago
There are a number of different, and very valid patterns for handling objects of different types. This is not about that, this is about how to not mix a pattern. A very, very common bit of code that is in MySQL (and can therefor be found in Drizzle): ... [More] if ((cached_result_type == DECIMAL_RESULT) or (cached_result_type == INT_RESULT)) { do_something(); } else { do_something_else(); } DECIMAL_RESULT and INT_RESULT are each possible result types. Are there more? Why yes there are. In the above bit of code the original author thought about two cases, and assumed all other cases could just be lumped into the else. I’ve fixed dozens of bugs over the last few years based on similar assumptions. What assumptions?  1) The no one would ever add another result type. 2) That no other bug fix might create a case where the else no longer held true. 3) That the else was ever correct in the first place. Without changing the entire design, what would be better? Use a switch and make a case for each enum. That way if a new enum is added anywhere in the code where logic is required based on the enum you will catch it when you compile (assuming you have your warning flags turned up in your compiler).  Also? Skip “default”. Unless you are taking something off the wire/file/etc you can skip default because you aren’t going to end up with an invalid enum. If you are doing one of these actions? Sanitize the data first, don’t just cast it. [Less]
Posted almost 13 years ago by Brian Aker
There are a number of different, and very valid patterns for handling objects of different types. This is not about that, this is about how to not mix a pattern.A very, very common bit of code that is in MySQL (and can therefor be found in ... [More] Drizzle):if ((cached_result_type == DECIMAL_RESULT) or (cached_result_type == INT_RESULT)){ do_something();}else{ do_something_else();}DECIMAL_RESULT and INT_RESULT are each possible result types.Are there more?Why yes there are. In the above bit of code the original author thought about two cases, and assumed all other cases could just be lumped into the else.I’ve fixed dozens of bugs over the last few years based on similar assumptions.What assumptions? 1) The no one would ever add another result type.2) That no other bug fix might create a case where the else no longer held true.3) That the else was ever correct in the first place.Without changing the entire design, what would be better?Use a switch and make a case for each enum. That way if a new enum is added anywhere in the code where logic is required based on the enum you will catch it when you compile (assuming you have your warning flags turned up in your compiler). Also? Skip “default”. Unless you are taking something off the wire/file/etc you can skip default because you aren’t going to end up with an invalid enum. If you are doing one of these actions?Sanitize the data first, don’t just cast it. [Less]
Posted almost 13 years ago by Mark Atwood
The SQL standard says that table names are case insensitive. Drizzle table names are in Unicode with UTF8 encoding. boost::to_upper et al mangles UTF8 case. Down this path there is going to be a lot of pain. My own inclination is to tell the SQL ... [More] Standard to realize that its 2011, no longer 1961, and break all the apps that are lazy about table name case, but other people will probably disagree. [Less]
Posted almost 13 years ago by Mark Atwood
This last March, David Shrewsbury put together a basic implementation of multi-master replication into DrizzleDB link. We were able to actually merge it with the mainline trunk, but then had to remove it until we had refactored and fixed more ... [More] things. Today, we were able to put it back in. It's worth reading Shrew's original blog posts, and then trying it out. [Less]
Posted almost 13 years ago
Drizzle source tarball, version 2011.07.21 has been released. In this release: Continued code refactoring (thanks again to Olaf van der Spek) Continued work on the stored procedure interface (yay Vijay!) Improvements to the Storage Engine API tester from Stewart Various bug fixes The Drizzle download file can be found here
Posted almost 13 years ago
It’s notoriously hard to measure the usage of open-source software. Software that’s open-source or free can be redistributed far and wide, so the original creators have no idea how many times it’s installed, deployed, or distributed. As a proxy, we ... [More] often use downloads, but that’s woefully inadequate. I’ve recently begun trying to figure out how many job openings are mentioning various open-source projects. I think that this might be a better metric because it’s driven by the end result (usage), rather than intermediate processes (downloads, etc). I think that it’s likely that usage and demand for skilled people is somewhat realistically related. To be more concrete, I’ve been watching RSS feeds from job posting aggregators for several alternative versions of MySQL: Percona Server, MariaDB, and Drizzle. It appears that Percona Server is by far the most in-demand in terms of job skills. (I haven’t seen a job posting for the others at all, so far.) On the other hand, my sample is skewed; I think Percona Server is better known in America, but MariaDB might be more visible in Europe. And I’m not sure that the sample data set is large enough to be statistically significant. Percona Server jobs are utterly dwarfed by MySQL jobs. There are other flaws in my method: some software doesn’t really need as much manpower to run as others. I would say that given an equal number of WordPress and Drupal websites, more of the Drupal websites are going to be trying to hire experts to manage their sites. So nothing is apples to apples. What do you think about this metric and its merits or drawbacks? Is there a better way to figure out how much adoption a project really has? Related posts:Does MySQL really have an open-source business model? What does an open source sales model look like? Open-source database developer mailing lists Making Maatkit more Open Source one step at a time MySQL: Free Software but not Open Source [Less]
Posted almost 13 years ago
An ideal summer day is when the sun is shining, the warm sunshine refreshes your body, the light breeze becomes naught with your hair, the birds sitting on intoxicated leaves smile at you, and you to top all of that you get the latest hot issue of ... [More] the Log Buffer. Yes to put cherry on your cake, Log Buffer #227 is here. Oracle: David Kurts tells us about applying Hints to Objects inside Database Views. Jonathan Lewis answers another burning question on on multi-column bitmap indexes and the inability of Oracle to create a bitmap index join when (to the human eye) the strategy was an obvious choice. A blog post about the mapping of Physical Disk, LUNS, Cell Disks, and Grid Disks in Exadata by lovely Oracle. Assume that you had a detail table that contained several attributes for each of the unique key values.  How would one go about finding all of the unique key values that share the same set of attributes? Charles Hooper answers. Randolf Geist gives a short heads-up note regarding a bug that obviously has been introduced with 11.2.0.2. SQL Server: Mark Broadbent has posted a tribute to the blogger Jen Stirrup, how has just been recognized by Microsoft by their MVP Award program and become a Most Valuable Professional. ROW_NUMBER() can be used to generate a sequential number for each row in the result set. Unlike RANK() and DENSE_RANK(), ROW_NUMBER() in case of ties it does not generate same number, it simply ignores the tie and generates sequential numbers for each of the tied rows. Vishal gives an example. Jason Brimhall is giving a interesting spin in the realm of SQL statistics. Juneau is the code name for the new SQL Server Development Tool (SSDT), to be released along with the next version of SQL Server, codenamed “Denali“. James Serra has an interest overview. Wes Brown is looking at assembling a basic data dictionary from the column level meta data stored in SQL Server. Pradeep Adiga sheds light on SavetoSQLServer method error in his blogpost with a story to tell. MySQL: Mark Atwood shares his valuable thoughts on node.js and libdrizzle. Michael “Monty” Widenus blogs about his last MariaDB 5.3 feature before they go beta and that is Progress reporting for ALTER TABLE, LOAD DATA INFILE etc. In order to optimally size the amount of RAM to allocate to a set of new machines for running MTR, Jonathan Perkin ran a few tests to check the memory usage of an MTR run for mysql-trunk and cluster-7.1. By far, the most popular way for PDI users to load data into LucidDB is to use the PDI Streaming Loader. Nicholas Goodman has a good blog post about this. Haidong Ji has presented a comparison of HandlerSocket and mysql client libraries with Python. Happy Summer !!! [Less]
Posted almost 13 years ago by Mark Atwood
Today I was chatting with a technical friend, and she mentioned that she has a "todo" of writing a decent node.js driver for MySQL. A bit more chatting back and forth, and http://nodejsdb.org/db-drizzle/ was discovered. It was written to use ... [More] libdrizzle and drizzled, but since libdrizzle can talk to MySQL, it should work for her needs as well. I would love to see some work done on how well libmysql+mysqld, libdrizzle+mysqld, and libdrizzle+drizzled handle highly concurrent asynchronous event-oriented workloads such as those generated by all these new node.js applications. I suspect that all sorts of surprising bugs will be discovered. Please help us discover those bugs. [Less]