My code in get_actual_tablename was not checking to make sure SHOW TABLES LIKE % was returning rows. Now I check that the resultset is not null and has at least 1 row before I process the table.
mysqldump.c:
Add code to get_actual_tablename() to guard against SHOW TABLES LIKE not returning any rows
This is a modifiction of my previous patch after receiving feedback. This is a better way to fix the problem. With this patch, data directory and index directory will use only forward slashes (/) when on Windows.
mysqldump.c:
Removed fixPaths routine. Was improper fix for bug #6660
sql_show.cc:
Changed append_directory to convert backslashes to foward slashes when on Windows.
This really should not happen on Windows and part of the problem not fixed here is why show create table includes data directory when being run on Windows. However, this patch fixes the bug in mysqldump.c
mysqldump.c:
Added fixPaths function to convert \ to / in data directory and index directory entries only on Windows
Added the get_actual_table_name function that issues a SHOW TABLES LIKE '%s'. This will get the table
name in the proper case. We use this table name rather than the one given on the command line. This will
prevent problems when importing SQL on Linux that was generated on a Windows platform where case can be
an issue.
mysqldump.c:
call get_actual_table_name to get the table name in the proper case
(back to behaviour of 4.1.7). Warning was not fatal: mysqldump continued. And the good thing is that it helped spot that starting from 4.1.7,
SHOW CREATE DATABASE failed (if --single-transaction and first db has non-empty InnoDB table and there is a second db) and thus mysqldump
produced CREATE DATABASE statements missing the CHARACTER SET clause. Removing the bug which was in the server, and the warning reporting in
mysqldump (compatibility with old servers).
Renamed HA_VAR_LENGTH to HA_VAR_LENGTH_PART
Renamed in all files FIELD_TYPE_STRING and FIELD_TYPE_VAR_STRING to MYSQL_TYPE_STRING and MYSQL_TYPE_VAR_STRING to make it easy to catch all possible errors
Added support for VARCHAR KEYS to heap
Removed support for ISAM
Now only long VARCHAR columns are changed to TEXT on demand (not CHAR)
Internal temporary files can now use fixed length tables if the used VARCHAR columns are short