diff --git a/mysql-test/r/windows.result b/mysql-test/r/windows.result index 7472b724f47..423123692e5 100644 --- a/mysql-test/r/windows.result +++ b/mysql-test/r/windows.result @@ -26,3 +26,18 @@ ERROR HY000: No paths allowed for shared library execute abc; ERROR HY000: No paths allowed for shared library deallocate prepare abc; +CREATE TABLE t1 ( +`pkid` int(11) NOT NULL AUTO_INCREMENT, +`SALES_DATE` date NOT NULL DEFAULT '0000-00-00', +KEY `pkid` (`pkid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +PARTITION BY RANGE (MONTH(SALES_DATE)) +( +PARTITION p0 VALUES LESS THAN (2) ENGINE=INNODB +data DIRECTORY='c:/tmp/' + index DIRECTORY = 'c:/tmp/', +PARTITION p1 VALUES LESS THAN (3) ENGINE=INNODB +data DIRECTORY='c:/tmp/' + index DIRECTORY = 'c:/tmp/' +); +drop table t1; diff --git a/mysql-test/t/windows.test b/mysql-test/t/windows.test index a10d54b5452..efdf0963b80 100644 --- a/mysql-test/t/windows.test +++ b/mysql-test/t/windows.test @@ -1,5 +1,6 @@ # Windows-specific tests --source include/windows.inc +-- source include/have_innodb.inc # # Bug 9148: Denial of service @@ -49,3 +50,23 @@ execute abc; execute abc; deallocate prepare abc; +# +# Bug #26074 Mysql crash when creating partitions +# + +CREATE TABLE t1 ( + `pkid` int(11) NOT NULL AUTO_INCREMENT, + `SALES_DATE` date NOT NULL DEFAULT '0000-00-00', + KEY `pkid` (`pkid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +PARTITION BY RANGE (MONTH(SALES_DATE)) +( + PARTITION p0 VALUES LESS THAN (2) ENGINE=INNODB + data DIRECTORY='c:/tmp/' + index DIRECTORY = 'c:/tmp/', + PARTITION p1 VALUES LESS THAN (3) ENGINE=INNODB + data DIRECTORY='c:/tmp/' + index DIRECTORY = 'c:/tmp/' +); + +DROP TABLE t1; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index d3979fa0718..3c25dcd202f 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1781,7 +1781,8 @@ int ha_partition::set_up_table_before_create(TABLE *table, } table->s->max_rows= part_elem->part_max_rows; table->s->min_rows= part_elem->part_min_rows; - partition_name= strrchr(partition_name_with_path, FN_LIBCHAR); + /* Here we have unified path so should always look for '/', not FN_LIBCHAR */ + partition_name= strrchr(partition_name_with_path, '/'); if ((part_elem->index_file_name && (error= append_file_to_dir(thd, (const char**)&part_elem->index_file_name,