mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 17:54:16 +01:00
MDEV-34929 page-compressed tables do not work on Windows
Remove workaround for MDEV-13941, it served for 5 years,and all affected pre-release 10.2 installation should have been already fixed in between. Apparently Innodb is using is_sparse parameter in os_file_set_size() inconsistently, and it passes is_sparse=false now during first file extension. With MDEV-13941 workaround in place, it would unsparse the file, which is makes compression not to work at all anymore.
This commit is contained in:
parent
5ebda30ccc
commit
c1fc59277a
4 changed files with 15 additions and 15 deletions
|
@ -0,0 +1,6 @@
|
|||
create table t_compressed(b longblob) engine=InnoDB page_compressed=1;
|
||||
insert into t_compressed values(repeat(1,1000000));
|
||||
select allocated_size < file_size from information_schema.innodb_sys_tablespaces where name='test/t_compressed';
|
||||
allocated_size < file_size
|
||||
1
|
||||
drop table t_compressed;
|
1
mysql-test/suite/innodb/t/page_compression_windows.opt
Normal file
1
mysql-test/suite/innodb/t/page_compression_windows.opt
Normal file
|
@ -0,0 +1 @@
|
|||
--innodb-sys-tablespaces
|
7
mysql-test/suite/innodb/t/page_compression_windows.test
Normal file
7
mysql-test/suite/innodb/t/page_compression_windows.test
Normal file
|
@ -0,0 +1,7 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/windows.inc
|
||||
create table t_compressed(b longblob) engine=InnoDB page_compressed=1;
|
||||
insert into t_compressed values(repeat(1,1000000));
|
||||
# Check that compression worked, i.e allocated size (physical file size) < logical file size
|
||||
select allocated_size < file_size from information_schema.innodb_sys_tablespaces where name='test/t_compressed';
|
||||
drop table t_compressed;
|
|
@ -3210,22 +3210,8 @@ os_file_set_size(
|
|||
|
||||
#ifdef _WIN32
|
||||
/* On Windows, changing file size works well and as expected for both
|
||||
sparse and normal files.
|
||||
|
||||
However, 10.2 up until 10.2.9 made every file sparse in innodb,
|
||||
causing NTFS fragmentation issues(MDEV-13941). We try to undo
|
||||
the damage, and unsparse the file.*/
|
||||
|
||||
if (!is_sparse && os_is_sparse_file_supported(file)) {
|
||||
if (!os_file_set_sparse_win32(file, false))
|
||||
/* Unsparsing file failed. Fallback to writing binary
|
||||
zeros, to avoid even higher fragmentation.*/
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
sparse and normal files. */
|
||||
return os_file_change_size_win32(name, file, size);
|
||||
|
||||
fallback:
|
||||
#else
|
||||
struct stat statbuf;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue