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:
Vladislav Vaintroub 2024-10-15 18:54:53 +02:00
parent 5ebda30ccc
commit c1fc59277a
4 changed files with 15 additions and 15 deletions

View file

@ -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;

View file

@ -0,0 +1 @@
--innodb-sys-tablespaces

View 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;

View file

@ -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;