Search the MySQL manual:

1.9.2 New Features Planned For 5.0

The following features are planned for inclusion into MySQL 5.0. Note that because we have many developers that are working on different projects, there will also be many additional features. There is also a small chance that some of these features will be added to MySQL 4.1. For a list what is already done in MySQL 4.1, see section 1.6.1 Features Available in MySQL 4.1.

For those wishing to take a look at the bleeding edge of MySQL development, we have already made our BitKeeper repository for MySQL version 5.0 publically available. See section 2.3.4 Installing from the Development Source Tree.

Stored Procedures
  • Stored procedures are currently being implemented. This effort is based on SQL-99, which has a basic syntax similar (but not identical) to Oracle PL/SQL. We will also implement the SQL-99 framework to hook in external languages, and (where possible) compatibility with, for example, PL/SQL and T-SQL.
New functionality
  • Elementary cursor support.
  • Visible RTREE index for MyISAM tables. In 4.1 RTREE indexes are used internally for geometrical data, but not directly usable.
  • Dynamic length rows for HEAP tables.
Standards compliance, portability and migration
  • Add true VARCHAR support (there is already support for this in MyISAM).
Speed enhancements
  • SHOW COLUMNS FROM table_name (used by mysql client to allow expansions of column names) should not open the table, only the definition file. This will require less memory and be much faster.
  • Allow DELETE on MyISAM tables to use the record cache. To do this, we need to update the threads record cache when we update the `.MYD' file.
  • Better in-memory (HEAP) tables:
    • Dynamic size rows.
    • Faster row handling (less copying).
Internationalisation
  • When using SET CHARACTER SET we should translate the whole query at once and not only strings. This will enable users to use the translated characters in database, table, and column names.
Usability enhancements
  • Resolving the issue of RENAME TABLE on a table used in an active MERGE table possibly corrupting the table.

User Comments

Posted by Raúl on Friday March 28 2003, @6:25am[Delete] [Edit]

Full-text search capabilities for BLOB fields over binary files stored in this fields with plugin support (.doc, .pdf, .xls...) like Microsoft SQL Server.

Posted by Thomas Baldauf on Tuesday April 8 2003, @12:31am[Delete] [Edit]

What about XML Support like Oracle? Creating Databases based on XML data and such things?

Posted by Mike on Tuesday April 8 2003, @6:50am[Delete] [Edit]

How about the ability to include more than 1 server in a query as you can with Microsoft Access and MS SQL Server?

Posted by Enrico Modanese on Friday April 11 2003, @2:44am[Delete] [Edit]

What about an OLAP support in MySQL? I think, GROUP_CONCAT function is a step in this direction... What about the query language? MDX or something more "open" (W3C compliant)? Bye

Posted by William Sun on Sunday April 20 2003, @12:50am[Delete] [Edit]

Any plan to add support for Java store procedures? I'm using
Oracle java store procedures for all my applications, I can
tell you that once you get use to java in the database, you
will never touch PL/SQL again.

Posted by Ajit Surendran on Sunday April 20 2003, @10:37pm[Delete] [Edit]

How about adding support for functions and triggers along with stored procedures. Esp. triggers which eases many of the arbitary db operations required by applications.

Posted by Anthony Durr on Monday April 21 2003, @5:07pm[Delete] [Edit]

Using BCD arithmetic rather than float when using fields which are described or converted as decimal.
This will become more important when procedures are implemented.
As a non oracle user, how about having a javascript option( which more people are familiar with ) for the procedure
language.

Posted by Karl Reitschuster on Tuesday April 22 2003, @11:42pm[Delete] [Edit]

Hi,
i am with Oracle, and a fan of PL/SQL. It would be great if some concepts like Packages, keywords, ...
would be near as possible to oracle-plsql. So a lot of PL/SQL-modules could be used immediatly.

Carl

Posted by Jody Whitlock on Wednesday April 23 2003, @6:49am[Delete] [Edit]

I have been in search for a replacement for both Ms SQL2000 and Oracle DBMS. Well, from seeing what is planned for 5.0 release, I think you have done it! Keep up the good work!

Posted by You are going to die like the all the other human beings on Wednesday April 23 2003, @5:08pm[Delete] [Edit]

how about cloned tables?

For convenience I like to split big tables into smaller
clones with different data but identical schema.

I guess I am looking for a view..

Posted by Rick Robinson on Tuesday April 29 2003, @8:24am[Delete] [Edit]

How about time zone support (as in Oracle 9i)? But with a better/slightly simplified interface than in Oracle.

Posted by Alireza Etezadi on Wednesday April 30 2003, @12:52am[Delete] [Edit]

Congratulations on such a nice project.I do hope your efforts provide developers with a new taste of using database servers in the Open way ..!

But how about "refrential integrity" in MYISAM databases? The use of "stored procedures" along with "refrential integrity" makes developing much more practical.

Good Luck.

Posted by Robert Grant on Wednesday April 30 2003, @3:42am[Delete] [Edit]

Nice improvements for 5.0! But we need referential integrity and optimizing, repairing for Innodb tables.

Thanks

Posted by Scott Kuberski on Thursday May 1 2003, @7:25am[Delete] [Edit]

-Select Time-Out
-Views

And my data warehouse will be a happier place.

Posted by Paolo Patelli on Thursday May 1 2003, @10:51pm[Delete] [Edit]

How about column based tables and SQL optimized for time series analisys?

Posted by xiejiayong xiejiayong on Friday May 2 2003, @9:51am[Delete] [Edit]

Oracle embedd JVM,Can MySQL embedd Mono?

Posted by Graham R on Sunday May 4 2003, @9:14am[Delete] [Edit]

I'll add my voice to "Mike on Tuesday" above. Connections to multiple servers simultaneously has a real wow! factor. I think Oracle does this with "database links"? Gets my vote.

Posted by Matt Mitchell on Sunday May 4 2003, @4:50pm[Delete] [Edit]

Views!

With full implementation of views and subselects, most of the main reasons for picking another platform are gone...

Posted by [name withheld] on Wednesday May 7 2003, @7:45am[Delete] [Edit]

Views, definitely need views.
Subselects would be nice, as well as set operations, Intersect, Union and so on.

Posted by Alejandro Ospina on Thursday May 8 2003, @7:30pm[Delete] [Edit]

For me:
* Views
* Support for Stored Procedures in C# or any other .net language though Mono
* Data Transformation Services, like MS-SQL Server 2000. It would be great to import and export directly from MySQL.

Bye!

Posted by Byung Choi on Tuesday May 13 2003, @11:36am[Delete] [Edit]

VIEW VIEW VIEW please ..... I need

Posted by Bob H on Wednesday May 14 2003, @1:10pm[Delete] [Edit]

"Any plan to add support for Java store procedures? I'm using
Oracle java store procedures for all my applications, I can
tell you that once you get use to java in the database, you
will never touch PL/SQL again."

Oracle itself states that Java is best used for intesive calculation type problems. Like compute some weird science formula then give the results to some PL/SQL to process the database inserts and what not. PL/SQL is best used used for database intensive things like returnign a record set and doing some logic and then inserting some results based on that logic. This is not to say you can't use Java for all stored procedures or PL/SQL for all stored procedures. The thing to keep in mind is one is better in certaion situations then the other if you get down to the nitty gritty.

Posted by [name withheld] on Tuesday May 20 2003, @11:24pm[Delete] [Edit]

How about a features that allows you to limit the amount of simultaneous connections by mysql user?

Posted by Roberto Spadim on Friday May 23 2003, @10:37am[Delete] [Edit]

How about Zend?! would be nice have a php into mysql... many sites could put they functions used in php into the mysql server... the zend accelerator could help too... and the zend encoder...

Posted by Christian Rufener on Tuesday May 27 2003, @7:59am[Delete] [Edit]

I've implemented User Definable Functions using Java by integrating the JVM and extending the SQL Create Function syntax. Anybody interested? (Still Version 3.x)

Posted by JUAN ANTONIO NAVARRO JIMENEZ on Wednesday May 28 2003, @3:13pm[Delete] [Edit]

- Views with union all
- Triggers

Posted by Shawn Lawe on Saturday May 31 2003, @12:33pm[Delete] [Edit]

If you are implementing stored procedure support in 5.0, and writing it from scratch, I would not bother using PL/SQL syntax at all. You should seriously look at integrating with the Mono project instead, to cut down on the development effort, and add support for virtually any language in stored procedures, including C#, VB, Java, etc. If someone really wants, they can make a Mono compliant PL/SQL compiler and you'd still get your PL/SQL stored procedures that way.

Posted by Pornthep Akkho on Wednesday August 6 2003, @10:37am[Delete] [Edit]

MySQL is great! Thanks to all of development team. But a few feature should be added as listed below
1. Transformation Service like SQL2000 Tools in order to transform from others database format suchas MSAccess, MSSQLServer, for examples to help user to accomplish their task.
2. Stored procedure, already in progress. thanks.
3. View
4. User Defined Datatype, function.
5. ************ Validation Text (like MSAccess) ***** I found that myself a very usefull for Database Designer in order to inform user what condition they've just violate to rules and how to correct those problems. Even MS SQL2000 doesn't have it (I don't know why?), Only Constraint exitst witout a place to input "Validation Text". That leave task of handling error to programmer (but DB Designer is responseible or database design and rules of each field).

With this features, and referential integrity, Others DB Server have great competitions.... Thanks

Posted by [name withheld] on Saturday June 7 2003, @9:50am[Delete] [Edit]

is it possible for MySQL to put in a TRUE DB Syncronization for MySQL 5.0 between server DB and Client Db, Server Db to server DB, Client DB to Client Db on any pc system. this would be something very nice to have if Db needs to syncronize between multiple computers and with syncronization of the dbs on these PCs.

i am not sure this features is implemented on the other Db Softwares such as Oracle or Postgres sql.

if MySQL doesn't have it, it should be implemented it to the 5.0 version.

Freeman

Posted by ,.- -., on Tuesday June 10 2003, @8:34am[Delete] [Edit]

i need views !!!
plz

Posted by Nick Milas on Wednesday June 11 2003, @1:39am[Delete] [Edit]

Enhanced Full-text support, esp. Proximity Operators, enhanced scoring of full-text search results, weight factors in indexed strings.

I have seen most of the above in the to-do list, but I haven't got a clue on what is the implementation schedule. Enhance full-text support is very important.

Also, I add my vote on Subselects, Views, Referential Integrity, Cursors, Stored Procedures and OLAP support (in this priority order).

Posted by Simon Windsor on Wednesday June 18 2003, @5:09am[Delete] [Edit]

For release 5.0

Could you consider adding a dblinks option within the MySQL table to allow other MySQL servers to be accessed within queries.

For example

create database link <dbaselink1> for <host>.<db> connect as <user> identified by <pwd>;

select db1.col1 from dbaselink1.table db1;


Posted by Max Luzin on Wednesday June 18 2003, @8:50am[Delete] [Edit]

Priority order of new features (IMHO):

1. Views
2. Referntial integrity
3. Triggers
4. Stored procedures
5. Multiserver connections

You can't name MySQL as "SQL server" without it, it still be only "ISAM file manger + SQL interpretator" and not more. Why you began investigations to Replication and to other things from "big RDBMS" World without support of the "must have" things?

Posted by Max Luzin on Wednesday June 18 2003, @8:57am[Delete] [Edit]

... And ple-e-e-ase do not implement PL/SQL-like syntax in triggers/stored procs. It will be better if you provide more wide Java support in MySQL. It more actually, I think.

Posted by nikola dimitrov on Friday June 20 2003, @8:42am[Delete] [Edit]

Please implement in this order

- Referntial integrity
- Views
- Triggers, Stored procedures
etc.

to call MySql an "SQL Server".

Posted by [name withheld] on Friday June 20 2003, @8:46am[Delete] [Edit]

What about an AUTO_INCREMENT extension "BY n"
I need it for safety to have different ID's
in several tables.

Posted by Nigel Jones on Thursday June 26 2003, @8:49pm[Delete] [Edit]

how about Auto Date like with Auto Increase IDs but it adds 'todays' date when adding a DB Feild

Posted by keith allpress on Thursday June 26 2003, @11:05pm[Delete] [Edit]

I would like to have a high level algebra that allows you to add or subtract databases themselves. A - B = C so that C is the difference between two schema, and then D = D + C allow you to update D with the difference between A and C. At least for the schema.

Posted by Stephen Knott on Saturday June 28 2003, @10:31am[Delete] [Edit]

Definitley PL/SQL for Stored Procedure support, but also for other languages like PHP, perl, python, and java. Forget about VB and C# and all other non-standard languages. That is about it. Any other request might make the product to bulky (Ref integrity, Triggers, Views, tool after tool). Right now mysql is a very fast database and I would like it to stay that way. A full blown database server with all the bells and whistles you can get at Micosoft and Oracle. It appears by looking at the responses that many are looking for a free Oracle or Free SQL server.

Posted by [name withheld] on Monday June 30 2003, @1:27am[Delete] [Edit]

How about internationalisation of (among others) the Date functions?
It would be nice to have Dutch dates by config, rather then by modifying the source.

Posted by [name withheld] on Wednesday July 2 2003, @2:23am[Delete] [Edit]

One let-down with Oracle is no priority. Resource limits dont allow for a big query to run "in the background" while more important (near real-time) transactions are occuring.

4 or 5 levels of priority would solve most problems in this area.

Posted by gopalarathnam on Wednesday July 2 2003, @11:51pm[Delete] [Edit]

How about displaying execution plan as in MS SQL Server or Oracle? I would love it. :-)

Posted by [name withheld] on Thursday July 3 2003, @9:10pm[Delete] [Edit]

Materialized views as an extension of views. This is essentially snapshot replication which you do now, but in the form of a view. E.g. you create a snapshot from a query (like a view), except it is kept in a table. It can be replicated to another server, or used on the same one as a manner of performance enhancement or a security tool or both. Views alone are good but are often too poor performing.

Database referential integrity is good, but in really large systems implementing it is a performance hit. If you constantly have to go to million+ row tables to check integrity, you application performance can be hurt. Many developers of larger systems would rather use application logic to ensure integrity, so I don't think integrity constraints would be high up there on priority.

It is good to see built in stored procedures coming along... triggers would be good too, since they are specialized stored procedures.

I agree with the request for some way to view query plans... and possibly a way to add query hints to aid performance.

Good stuff... no kidding.

Posted by Rogério Cunha on Saturday July 5 2003, @10:31pm[Delete] [Edit]

I think it would be very interesting if mysqldump could report the tables with order other than alphabetic, so foreign key settings, for example, could be generated from a dump.

Posted by Hank Fay on Tuesday July 8 2003, @9:03am[Delete] [Edit]

Having to change (when moving to MySQL) WHERE clause code to use CONCAT for adding strings is a pain: the rest of the world seems to be OK with using +, and hopefully this would become an option here, also.

Posted by [name withheld] on Wednesday July 9 2003, @5:38am[Delete] [Edit]

Please add creation of conditional index like clipper:

CREATE [UNIQUE|FULLTEXT] INDEX index_name
ON tbl_name (col_name[(length)],... )
WHERE <condition>

This save space reduzing size of index file and is more
powerful for speed searchs.

Posted by Clint Sheffield on Wednesday July 9 2003, @8:53am[Delete] [Edit]

Please can support for DOMAINs be added?

Posted by [name withheld] on Thursday July 17 2003, @2:35am[Delete] [Edit]

Please add
- subselects
- views

Posted by [name withheld] on Friday July 18 2003, @5:34am[Delete] [Edit]

My $ 0.02:

INTEGRITY CHECKS! INTEGRITY CHECKS! INTEGRITY CHECKS!

There's nothing more important for a serious DBMS - not even performance, in my opinion. (you can always keep the different table types for "security <=> performance" trade-offs)

With InnoDB referential integrity works quite well, the most important thing missing in MySQL -- and I mean, I _really_ miss this, it's fundamental -- are CHECK contraints, naturally with complete working subselects. (you should also point out in the current documentation that CHECK constraints are not supported at all, the documentation for v4.0.12 was so misunderstandable that it made me believe they work with InnoDB)

Other important things (in order of priority)
- udfs, triggers
- views

- domains
- (real) sequences
- materialized views
- ...all other stuff :o)

Posted by dayananda shenoy on Monday July 21 2003, @2:59am[Delete] [Edit]

hi,
its great to work with mysql innodb and bdb tables.
which is supporting transactions, but still there are some issues with mysql one of such is row level locking

it would be great if you can implement row level locking features in version 5.0,in oracle there is "for update nowait" clause.
i don’t know whether there is any such feature in mysql.
i am small baby in this town
since in multi-user environment row level locking plays a major role.
hope this feature will be a real boom for all mysql fans and developers like me, who are eagerly waiting for making a real time applications using mysql.


best Regards
Dayananda shenoy

Posted by [name withheld] on Friday July 25 2003, @2:22am[Delete] [Edit]

1. Referential integrity
2. Triggers
3. Stored procedures
4. Views

All above is a MUST for a database.

Posted by Ales Kavsek on Tuesday July 29 2003, @7:35pm[Delete] [Edit]

I agree with others, referential integrity, views and stored procedures are basic requirements if you want to call MySQL a real SQL server.
In my opinion even more important features are:
=> better space management (don't need to reinvent the wheel, look at Oracle tablespace, by far the most flexible storage management concept of all RDBMS!),
=> better backup/recovery mechanism (built-in hot backup is a must!),
=> more compact export dump (without INSERT statements that almost double the size of the file, at least in my case – lots of short fields) and finally,
=> LOAD DATA. We need functionality and features no more no less than that of Oracle SQL*Loader (easy handling of fixed record data (LOAD DATA is a PAIN in MySQL for fixed sized record files). Ok, I'm biased in my first complaint (99% of my input is in fixed sized record files), however not knowing what went wrong (and where) during the load is simply not acceptable – we need log capability such as that of Oracle SQL*Loader, this is more important than load speed!! What's good to load 10GB in a few machine minutes (cheap) then spend several man hours (expensive) to find out which records were faulty.

Unfortunately I'm not a programmer, so all I can do is to cry like a baby and hope that someone will hear me ;-)

Posted by Chris Friedel on Monday July 28 2003, @9:41am[Delete] [Edit]

What’s with everyone wanting VIEWS? This isn't MS ACCESS guys, we don't need views. MySQL has an EXCELENT priv system, the requirement for views is essentially gone. True, you may save yourself a itty bitty little space in your code, but over all your queries will be unnecessarily clunky then.

We actually have a developer here who makes an attempt to listen to the community, and what do we ask for? Views and RI (which they've said how many times that they not only don't plan to implement in the near future, they don't even really WANT to implement it). Come on guys, don't be lazy, do your RI in your code, and pick the right tool for your job.

For versions 5.x, I'd simply hope that we get replication air tight, and the ability to DELETE using a sub select, as having to put aside 100MB of ram for a temp table to delete child records gets really old, really quick.. especially considering MySQL is usually used in constrained environments.

As additional 'some day' features, I personally would love to see IOTs (just imagine the speed… just imagine), Table Partitioning (won’t hold my breath) and a full plan of what our good friend, the optimizer, plans to do with our SQL statements.

Sadly, as I am just one voice, I’m guessing we’ll just get views…!

At any rate, great job to everyone on the MySQL team; you guys should be proud.

Cheers,
Chris

Posted by Scott Ellsworth on Thursday July 31 2003, @12:01pm[Delete] [Edit]

For what we do, Java stored procedures are important. PL/SQL is also good, but all of ours are in Java in Oracle right now, even SQL intensive ones.

Views are also handy if you need to morph your data. For example, if you already have an address book, you can create a "phone log" table for a phonebook program without having to edit it. This lets you keep legacy software around without having to fiddle with the schema.

Scott

Posted by Joshua Wilson on Friday August 1 2003, @2:15pm[Delete] [Edit]

I need support for money type fields to move from sybase.

Posted by David Jeske on Sunday August 3 2003, @12:45am[Delete] [Edit]

I'd like to see the ablity to alter tables without rebuilding the table and without taking it offline. In particular, column additions, and index additions.

Posted by Federico Razzoli on Sunday August 3 2003, @7:36am[Delete] [Edit]

For Joshua Wilson:
if you need money types you can use DECIMAL with 2 decimals. There is no need for Ms types.

Posted by [name withheld] on Sunday August 3 2003, @7:56am[Delete] [Edit]

What about support for MS SQL's Uniqueidentifier datatype?

Posted by Javier Bermudez on Tuesday August 5 2003, @8:40am[Delete] [Edit]

Please can you add tree support like oracle "CONNECT BY"

Posted by Dan Liberatore on Tuesday August 5 2003, @2:50pm[Delete] [Edit]

It would be really nice to be able to INSERT into multiple tables with one statement, like this:

INSERT INTO users,contacts SET users.name=dan7, contacts.name=Dan, contacts.phone=etc, users.contactid=contacts.id

Where both tables have an auto_increment ID field, and they are InnoDB tables, and users has a required Foreign Key field called 'contactid' that refers to a contacts.id

Of course by the time this is implemented (if it is), I'll have a mess of Perl code that does it anyway.

Posted by Alexander Petty on Wednesday August 6 2003, @3:34pm[Delete] [Edit]

I would love to see some kind of native support for mysql clustering. It seems replication is perhaps not the best solution for scaling if an application is under massive load. Any thoughts about this?

Posted by Chetan Parekh on Thursday August 7 2003, @11:37pm[Delete] [Edit]

Hi

I guess VIEW is the most essential and needed thing in any database management system and not having view is taking so much development time. Without view code will have more redundancy.

I guess VIEW must be given the first priority.

Add your own comment.