Bug #17501 TYPE= no longer works in CREATE/ALTER TABLE
Submitted: 17 Feb 2006 5:18 Modified: 5 Feb 0:44
Reporter: Arjen Lentz
Status: Open
Category:Server Severity:S3 (Non-critical)
Version:5.1.7-BK,6.0.9 OS:Any (any)
Assigned to: Sergei Golubchik Target Version:
Tags: type, engine, ALTER TABLE, CREATE TABLE

[17 Feb 2006 5:18] Arjen Lentz
Description:
CREATE/ALTER TABLE ... ( ... ) TYPE=MyISAM
no longer works. The TYPE keyword is no longer accepted in this context.

I'm aware that TYPE= is deprecated since 4.1 and generates a warning. That is fine.
However, existing applications (some not open source) rely on this syntax, and so it would
actually hinder adoption of MySQL 5.1 and beyond if we were to remove this keyword.
Surely that can't be the intention.

The 5.1 manual still mentions ENGINE|TYPE, so I'm not sure whether the abovementioned
behaviour was an intentiontional change or a mistake. Either way, I hope it can be
rectified.

How to repeat:
mysql> CREATE TABLE t1 ( a INT ) TYPE=MyISAM;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at
line 1

Suggested fix:
Keep in TYPE= syntax, there's no technical/syntactical reason to refuse it, and there are
very good commercial reasons to keep supporting it. We want people to use 5.1 and
beyond!
[17 Feb 2006 15:42] Valeriy Kravchuk
Verified just as described:

openxs@suse:~/dbs/5.1> bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.1.7-beta

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE TABLE t1 ( a INT ) TYPE=MyISAM;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at
line 1
[18 Feb 2006 4:18] Brian Aker
We need to get this in the manual that it has been removed.
[18 Feb 2006 4:32] Peter Laursen
However it works in 5.1.6 here.
I suggest that it should stay that way.
People are using all sorts of third-party clients that for historical reason use TYPE and
not ENGINE.
[21 Feb 2006 2:06] Paul DuBois
I've added a note to the 5.1.7 changelog and the 5.1
upgrading sections that TYPE support has been removed,
and removed other mentions of TYPE in the 5.1 manual as
well.
[21 Feb 2006 6:29] Jeremy Cole
Is there a good reason to drop support for TYPE completely?  This makes application
support really difficult.  ENGINE wasn't even introduced all that long ago.
[2 Mar 2006 11:25] Sergei Golubchik
Ok, TYPE= was restored.

A warning for all deprecated features now specifies in what precisely version this feature
will be removed. For all features that were marked as deprecate in 5.1.7 it is 5.2
[2 Mar 2006 12:05] Jon Stephens
Thank you for your bug report. This issue has been addressed in the
documentation. The updated documentation will appear on our website
shortly, and will be included in the next release of the relevant
product(s).

Additional info:

I've updated the 5.1.8 changelog and related documentation pursuant to the latest
developer notes above.
[2 Mar 2006 12:37] Arjen Lentz
Thanks - but this just moves the same problem forward so we'll be back her later.
Please specify WHY it needs to be removed, rather than keeping it around deprecated?
I believe others have asked this also and I think it is a relevant question.
It's not extra "old" code we need to keep around, it's just a few extra chars in the
parser.
[2 Mar 2006 13:41] Jon Stephens
Due to a lost packet or somesuch thing, I only saw the first half of the last developer
comment when I viewed this bug previously, so to clarify what I've done:

1. I updated ONLY the material relevant to TYPE/ENGINE.

2. Before this proceeds any farther, I'm asking for an internal discussion/ruling.

3. I've changed this bug's status to In Progress pending resolution of this issue.
[11 May 2006 22:26] jurgen DEBO
using 5.1.7-beta

Well Joomla (Mambo) 1.0.8 use many 3th party extensions.  
And I can imagine some people do want to have backwards 
compatibility too.  And what to do with encrypted scripts ?

Most source does rely on:
create table.....TYPE=MyISAM

Some solutions: 
a) Warnings should be generated, no fatal errors. 
b) a setting in Mysql to be less strict.
c) a setting in Mysq to auto correct, with warning
d) a grep/sed/awk based pre-parser to auto correct queries
    which can be defined in an ini file (like preparse.ini)
[4 Feb 17:45] Anton Anikin
Same problem again with latest MySQL 6.0.9
[5 Feb 0:44] Arjen Lentz
Here we go again. There's legacy foo out there that can't be changed.
The advantage of removing the TYPE keyword from the parser is really irrelevant compared
to the amount of hassle this causes in the dozens of millions of deployments that MySQL
has!

So please just leave it in - yes, do keep noting it's deprecated, that's good.
But please don't remove it.