 Alright, my name is Jorge O'Connor. I was told about what for the past six years, I was one of the first, among the first 10 of those that actually joined the company. Back then, when I joined, there was basically nobody in the company. It was just four developers, one marketing guy, and basically one of the others, which was a co-founder. Back then, the current version of the company was 3.19. It was a very long time ago. Our product was totally different than what it is today. Today, we've basically taken MySQL to an S level. We've been trying to endorse the enterprise market level, trying to make it fit for enterprise systems, and basically just to please each and every user. We've tried to make them happy, and we've followed a bunch of suggestions. So basically, what we're trying to accomplish is we're trying to do the best local source database in the world. I'm going to give you some of my presentation. I'm going to be talking about the cool features that were introduced in 5.0. There's been a lot of changes in 5.0 branch, for instance, the information scheme. The information scheme, I'm not sure if you're aware of all of it, that actually is a totally new concept from SQL. It has existed for a couple of years now on different databases, for instance, 4.0, DB2, SQL Server. All those databases have used the information scheme for a long time. MySQL just basically incorporated this design into the database. Basically, what this is, well, the information scheme is like a virtual database. It's used to access metadata, where metadata is actually information from the data itself. So for instance, an example of metadata would be the colors of the table, the record names, things like that. By the way, if you have any questions, feel free to ask. This is not totally different than what we accomplished in the previous versions with the show command. This is just a compliment. The show command, which actually does a bunch of things, which went into the information scheme, will still remain. And as a matter of fact, in the previous versions of 5.0, 5.0 branch, it actually modified the show command to enhance the show command a lot. So that's basically a very good show command. Now, the interesting part about the information scheme is, unlike the show command, one can actually specify each and every single field one must display. Because this is a virtual database, which by virtual I mean does not really exist in the hard drive, it is hard coded, it is in memory. One can actually perform several statements, join, revise, unions, and basically anything that you can actually accomplish using the set of statements. This way, you can display each and every single field you want. And for certain situations and scenarios, this is even actually better than the show command. For example, let's take group lines. Group lines are great in this case. Previously, if you developed a group line, you would be dependent on the show command. And that was a lot of overhead for the client. That accomplished things in the client machine, which worked actually as it was to be accomplished in the client machine. With the information scheme database, that is really tricky to accomplish. Well, just as any other database information scheme resembles each and every single database you have, the only difference is it's completely new and only. Each and every single user which has access to this database, specifically to the fields and the tables where one is allowed to access. And all that's basically about the information scheme. This is going to be a totally new change for us. It's going to make all the reporting and migration a lot easier. Because all the other databases do it this way. They use the information scheme of which it's going to be advised to allow a little bit more terms of migration. Do you have any questions for the information scheme? Next, this is one of my favorite subjects, precision math. Previously, precision math was not supported in Moscow. Precision math is just an amazing tool. I don't know if you've ever tried, the sequence is not around here. Did you ever try using the round command in Windows? And then in your Linux, and noticed how you received different results? Because in the rounding position. What about when you tried to do 32 bit platforms and then went back to the system? These are totally different. So with precision math, you can actually obtain the same values regardless of the platform, regardless of how many bits of the inlay the processor is working on. So if you're actually, if you're doing, first of all, geometrical data, you have floating points all over precision math all over. With this, you can be absolutely sure when we use mathematical functions, the results you receive are going to be exactly the same platform than you can. Which, this obviously takes a lot more than for us because previously that was impossible to accomplish. Now, another really nice part about precision math is it doesn't introduce floating point errors. Now, calculations are a lot more precise. I mean, let's say you divide by zero, for instance. In previous versions, we'd say, oh, you know, if you divided the value by zero, you would receive a more volume. Now, with precision math, you can actually say, this is a nerve, you can treat that as a nerve. So you say, this nerve, let's treat this in a certain specific manner. So that would obviously translate into less buggy software because after all, you're eliminating a bunch of possibilities. Another really interesting part is control over a high-level amount of volume. You probably saw a bunch of times when you're serving, let's say, a decimal 5, 2, and try to insert a value which was a lot bigger than what the field could actually hold. What happened previously is that it was chunking. It was chunking to actually fit into the column that it previously did not. Now, well, that was totally wrong because you could actually receive data which was totally false, was not correct. You can deny the assertion, you can insert in a field. You can actually specify what you want to insert. So, again, just like with alphabetic point errors, this takes mathematical handling of high-skill to a totally new level, which will make applications a lot safer and a lot faster. A lot faster without a device, a lot faster because of the above. And the question is, what are your own procedures? So, procedures is basically divided into, we have the procedures and procedures are basically, they work just like any other procedure in any procedure of language. They will not return values, they just modify and handle data inside. There are functions, most of the use depends on statements of inside data. Talking about the benefits of these two. Well, first of all, there's a bunch of benefits in the use of these sort of procedures. There's a lot of developers that can actually argue this point. Some of them say that all the logical part of the application should be presiding the server and then there's the other group of people that argue that it should be presiding the client. So, this is basically something for each and every one of us as application developers to decide. For instance, before MySQL supported sort of procedures, when each and every person that developed using MySQL implicitly used sort of procedures, if you always had the client side. Now, today, the procedures go over side of the server and there's a bunch of benefits. For instance, with so many procedures, one can be certain that they're going to be executing and running perfectly fine in their own environments. For instance, let's assume you had a Java application. Now, let's say you were using full employee numbers, position time. You did not have the absolute certainty that the result from a certain procedure in one platform was going to be exactly the same as in another platform. So procedures can take that part in the category and you can actually handle it. You can be certain it's going to return the exact same result regardless of the platform. Another thing with this is the platform that is, which is basically the same as vermin to all environments. This basically means you can actually have a system for the machine versus a 32-bit machine and it will basically accomplish the same task. And the most important part of the sort of procedures is to overcome the server trap. So procedures, they can take three parameters. It is the one you start with fault, out, and in out. I'm going to show a couple of examples, showing how each and every one of these... For instance, in this example, the reason we're in parameter, what this is is it basically just takes out an argument in the sort of procedure and uses it. As we're considering an example, we have a really simple sort of procedure which sets the value of variable x when we proceed to blow up the variable x. So for instance, assuming the sort of procedure, if you would call it with a depthconf 2006, and then sell it dead by again, you would receive depthconf 2006. The value would not be modified to make out. The out, basically, changes the argument. So in this particular example, we set the value of the variable x to get out of depthconf 2006. Create a sort of procedure, and we use an out parameter, a bar power, and it sets its value of p. So whenever we keep in mind we have a value set to get out of depthconf 2006, whenever we call this the sort of procedure, it sells the parameter variable, the result will be nice. And that's not based in and out arguments. These are basically just the mix between the other two. So in this example, for instance, we call the example sort of procedure with a 2, we multiply it by 2, and the sort of procedures are still in the early stages of development. They basically support everything that they're supposed to have in place. Now, the sort of functions. Functions is basically the same as the UDS used to accomplish, in other words, the sort of procedures that were supported. Basically what a function is, you can actually use it in the self statement, and use the result in the rest of the calculations. For instance, in this example, you create a worded average function, which returns an integer. It is determined this because a function almost almost kind of, out of the open term, depends on where it is. For instance, in this example, we have these arguments, the average function. We still have a bunch of mutations in our sort of procedures. Currently, we cannot install tables or develop tables. Neither can use load data nor load table. These mutations will probably be removed in your first semester, probably 5.2, will basically be dependent on what our current load is. Functions, functions do not have a bunch of mutations currently, that will also be removed sometime in the future. Statements that do implicitly, such as robots or anything. Statements that return a result, results that are not supported, as well as prepared statements, variables, statements, simple statements, and flush statements are only possible. Triggers are supported by the SQL5, before the server dawn, after the server dawn, before update dawn, before the lead-on and after the lead-on. Basically, triggers are going to be rewarded for destroying updated statements. What can be used, conflicts, simple statements, and triggers really can change the values of being in the server, in this case, for example, in this example, we created a table, we created a tiny variable, and we created a trigger, which basically, it does it for each row, and arguments will basically just value. So for instance, in this case, we will sort of bring the table, we will sort of run, and check the value of the variables if you will see. Triggers are working pretty well nowadays. They are pretty trustworthy in terms of liability and bugs. They're not the biggest types. These are also supported by SQL. All the last features are a bunch of questions asked What they basically are is that they work as virtual tables, which are defined using queries. The interesting thing about views is one can have really complex queries that didn't today represent data as if they were a table. They're not really subsets of tables because they can be first is active and passive. Now, in active views, the data is active used to be updated like passive views. Therefore, there's only four criteria which can be met by the viewer to be active, and those criteria are basically the data as facilitated in one single table. The self-statement time is not realistic, very. The self-statement may not contain all the services and no even operators can be expected. As long as you do those criteria then you will be active. Now, this one here is probably my favorite inclusion in the 5.1 status. This is actually a 5.1 feature. It is not a nasty standard and basically what it is, it's called an event spectrum. Basically what this is is kind of sad. First is let's go through this example and I'll explain exactly what that is. First is here we created a table and when we created an event we said hey, let's run a schedule something occurs each and every second that goes by. So we created an event specifying the 1.7 interval and each and every time the event occurs we will insert a value and we will enable the event scheduler and you can see from the results of the table you can see how an event is generated for each and every second. First is here you can see 1759.51 for D243 and you have this example taken in the long run and you can see this rule seven minutes hours, months, years this basically takes the new features out of the plan and you can see basically I still strive to provide a price grade or liability and of course the single 2003 standard. Do you have any questions any questions should I ask the audience? The question is pretty long are you working on that which price? We are working really close with Sean Finney Sean Finney has provided an address for women, teens and guys especially in the website where there is a lot of communication between between us and him that is basically what we are doing right now in terms of supporting