Bug #35257 Falcon: tablespace names are case sensitive
Submitted: 12 Mar 2008 22:41 Modified: 15 May 2009 13:08
Reporter: Peter Gulutzan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S3 (Non-critical)
Version:6.0.5-alpha-debug OS:Linux (SUSE 10 | 32-bit)
Assigned to: Sergey Vojtovich CPU Architecture:Any
Tags: F_TABLESPACE

[12 Mar 2008 22:41] Peter Gulutzan
Description:
Falcon tablespace names are case insensitive,
that is, I can create a Falcon tablespace named
'X' and another Falcon tablespace named 'x'.

Comments on Bug#22166 "Falcon: case insensitive
table names" make it clear that the Falcon design
is to require case-insensitive object names.
I didn't agree with that, but I think we can all
agree that rules for Falcon table names and Falcon
tablespace names should be the same.

See also the comment on Bug#33719:
"[8 Jan 16:31] Ann Harrison
Falcon tables spaces should not be case sensitive."

See also Bug#27098 Cluster: tablespace names are case sensitive.

How to repeat:
mysql> create tablespace x add datafile 'x' engine=falcon;
Query OK, 0 rows affected (0.39 sec)

mysql> create tablespace X add datafile 'X' engine=falcon;
Query OK, 0 rows affected (0.05 sec)

mysql> show variables like '%table_name%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 0     |
+------------------------+-------+
1 row in set (0.03 sec)
[12 Mar 2008 23:25] MySQL Verification Team
Thank you for the bug report.
[13 Mar 2008 5:40] Jon Stephens
See my comments to Bug #33719.

I see no reason why individual storage engines should violate norms for the MySQL Server as a whole.
[13 Mar 2008 5:52] Kevin Lewis
Jim Starkey wrote;

Falcon currently (and incorrectly) preserves case of tablespace name.  
Hence,

    create tablespace foo ...
    create tablespace FOO ...

will create two tablespaces, one named "foo" and one named "FOO".  This 
is inconsistent with other object naming rules in Falcon.

I am fixing the code so that each of the two statements above create the 
table space FOO.  In a better world, we would preserve case for quoted 
identifiers, but the server doesn't pass through this information.

The change doesn't actually break anything, per se, but does make 
existing tablespaces inaccessible for DDL purposes.  If for example, a 
user executed the following statements in the first beta:

    create tablespace foo add file 'foo.fts' engine=falcon;
    create table t1 (n int) tablespace foo;

This would create the tablespace "foo" (lower case) with a table T1.  
This would continue to work in beta 2.  However, using the 2nd beta, the 
same user tried to execute

    create table t2 (n int) tablespace foo;

he would create an error 'tablespace "FOO" doesn't exist' (or something 
like that).  He could, however, execute:

    create tablespace foo add file "bar.fts" engine=falcon;
    create table t2 (n int) tablespace foo;

which would work like charm, leaving the user with two tablespaces, 
"foo" and "FOO".  He could also, if he wished, execute the statement

    alter table t1 tablespace foo;

to move T1 from "foo" to "FOO".

What he can't do is add any more tables to "foo" or even drop it.  He 
would be stuck with a useless, inaccessible, undroppable tablespace 
until we beefed up the server to indicate quoted names to storage engines. 

I think this is an acceptable workaound for an early beta....  Comments 
or questions?
[13 Mar 2008 13:24] Peter Gulutzan
Jon Stephens commented:
"I see no reason why individual storage engines should violate norms
for the MySQL Server as a whole."

I believe the applicable "norm" may be the case insensitivity of
most object names other than databases and tables.
[11 Nov 2008 22:27] Kevin Lewis
Sergey, Can you look into this?  It may be related to a Beta bug in Backup, Bug#35257.
[26 Nov 2008 11:30] Jørgen Løland
The backup bug that relies on this bug being fixed is bug#33569.
[10 Dec 2008 14:27] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/61219

2930 Sergey Vojtovich	2008-12-10
      BUG#35257 - Falcon: tablespace names are case sensitive
      
      Fixed that falcon tablespace names were case sensitive.
      With this fix the rules for tablespace names are the same
      as for table names, that is case insensitive.
      
      Fixed by performing case up on tablespace name whenever
      tablespace is created/dropped or a table is created/altered.
      
      Note that it is incompatible fix:
      - it is not possible to drop existing tablespace created
        by previous versions, if it's name wasn't in upper case.
      - it is not possible to create tables using tablespace
        created by previous versions, if tablespace name wasn't
        in upper case.
[15 Dec 2008 17:47] Kevin Lewis
Code looks good, OK to push
[17 Dec 2008 11:06] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/61850

2941 Sergey Vojtovich	2008-12-17
      An addition to fix for
      BUG#35257 - Falcon: tablespace names are case sensitive
      
      Fixed a test case - Falcon tablespace names are now
      in upper case.
[13 Feb 2009 7:24] Bugs System
Pushed into 6.0.10-alpha (revid:alik@sun.com-20090211182317-uagkyj01fk30p1f8) (version source revid:svoj@mysql.com-20081217100427-wyn8rhxammwm5a0p) (merge vers: 6.0.9-alpha) (pib:6)
[26 Feb 2009 13:57] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/67686

2784 Ingo Struewing	2009-02-26
      Post-merge fix due to Bug#35257 (Falcon: tablespace names are case sensitive)
     @ mysql-test/suite/backup/r/backup_client.result
        Post-merge fix due to Bug#35257 (Falcon: tablespace names are case sensitive)
[26 Mar 2009 12:35] Bugs System
Pushed into 6.0.11-alpha (revid:alik@sun.com-20090326121822-pt84kzxxayzho4mn) (version source revid:rafal.somla@sun.com-20090302164601-znhm4tadplfi2iqu) (merge vers: 6.0.11-alpha) (pib:6)
[15 May 2009 13:08] MC Brown
An entry has been added to the 6.0.10 changelog: 

Incompatible Change: Falcon supported case-sensitive tablespace names. The code has been changed so that all tablespace names are converted to uppercase names during creation. Because of this change:

It is not possible to drop existing tablespace created by previous versions, if it's name wasn't in upper case.

It is not possible to create tables using tablespace created by previous versions, if tablespace name wasn't in upper case.