Bug #13735 database path case problem with create temporary table
Submitted: 4 Oct 2005 10:09 Modified: 16 Oct 2005 9:40
Reporter: [ name withheld ] Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:4.1.14 OS:Solaris (solaris)
Assigned to: CPU Architecture:Any

[4 Oct 2005 10:09] [ name withheld ]
Description:
with lower_case_table_names=1, create temporary table fails with "unknown database" if there are uppercase letters in the database path.

How to repeat:
1) configure mysql to put his databases in a path with uppercase letters (e.g. /B/mysql/var);

2) set lower_case_table_names=1;

3) create temporary table t (t integer);

4) "Unknown database"!
[5 Oct 2005 13:49] Valeriy Kravchuk
Can not repeat on the latest 4.1.15-BK build on Linux with the following sequence of actions:

[openxs@Fedora 4.1]$ bin/mysqld_safe --datadir=/home/openxs/dbs/4.1/Var --lower_case_table_names=1 &
[1] 29166
[openxs@Fedora 4.1]$ Starting mysqld daemon with databases from /home/openxs/dbs/4.1/Var

[openxs@Fedora 4.1]$ ps -ef | grep mysqld
openxs   29166 21790  0 16:38 pts/0    00:00:00 /bin/sh bin/mysqld_safe --datadir=/home/openxs/dbs/4.1/Var --lower_case_table_names=1
openxs   29185 29166  6 16:38 pts/0    00:00:00 /home/openxs/dbs/4.1/libexec/mysqld --basedir=/home/openxs/dbs/4.1 --datadir=/home/openxs/dbs/4.1/Var --pid-file=/home/openxs/dbs/4.1/Var/Fedora.pid --skip-locking --lower_case_table_names=1
openxs   29195 21790  0 16:38 pts/0    00:00:00 grep mysqld
[openxs@Fedora 4.1]$ bin/mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-debug

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

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create temporary table t (t integer);
Query OK, 0 rows affected (0.04 sec)

mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0.00 sec)

mysql> show tables;
+---------------------+
| Tables_in_test      |
+---------------------+
| ImageFile           |
| T1                  |
| T2                  |
| T3                  |
| addresses           |
| alarm               |
| b                   |
| customers2addresses |
| distmtimes          |
| l50_qry             |
| l50_roll            |
| l50_stat            |
| mytable             |
| t1                  |
| t2                  |
| test                |
| test_table          |
| test_table2         |
| ti1                 |
+---------------------+
19 rows in set (0.01 sec)

What exact set of steps did you perform to get the situation described? Just copy-paste them to the report.
[14 Oct 2005 8:56] [ name withheld ]
i include the configure parameters, maybe that's the problem: they're copied from config.log.

./configure --prefix=/B/highway/mysql --without-innodb --with-charset=latin1
[14 Oct 2005 16:18] Valeriy Kravchuk
I do not belive --prefix will change something vs. --datadir, but I'll try, this time - with 4.1.16-BK.
[16 Oct 2005 9:40] Valeriy Kravchuk
I've just configured and compiled latest 4.1.16-BK using the following configure:

./configure --prefix=/home/openxs/DBS/4.1 --with-debug

So, there is uppercase letters in the --prefix too. Then I performed (from fc -l results):

make
make install
cd /home/openxs/DBS/4.1
bin/mysql_install_db --datadir=/home/openxs/DBS/4.1/var
bin/mysqld_safe --datadir=/home/openxs/DBS/4.1/var --lower_case_table_names=1 &

And then just the same actions as before:

[openxs@Fedora 4.1]$ bin/mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.16-debug

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

mysql> show variables like 'data%';
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| datadir       | /home/openxs/DBS/4.1/var/ |
+---------------+---------------------------+
1 row in set (0,01 sec)

mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
2 rows in set (0,01 sec)

mysql> create temporary table t1 (c1 int);
ERROR 1046 (3D000): No database selected
mysql> use test;
Database changed
mysql> create temporary table t1 (c1 int);
Query OK, 0 rows affected (0,00 sec)

So, I still do not understand, how to repeat the problem you described. Try the same steps I perfromed...