diff --git a/appveyor.yml b/appveyor.yml index 8e7b0fcb715..190627790a6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,6 +2,9 @@ version: build-{build}~branch-{branch} clone_depth: 1 +environment: + OPENSSL_ROOT_DIR: C:/OpenSSL-v32-Win64 + build_script: # dump some system info - echo processor='%PROCESSOR_IDENTIFIER%' , processor count= %NUMBER_OF_PROCESSORS% @@ -15,14 +18,15 @@ build_script: - mkdir _build - cd _build - set BUILD_TYPE=MinSizeRel + - set PATH=%OPENSSL_ROOT_DIR%;%PATH% - set GENERATOR=-GNinja - call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" - - cmake -E time cmake %GENERATOR% .. -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DMYSQL_MAINTAINER_MODE=ERR -DFAST_BUILD=1 -DBISON_EXECUTABLE=C:\cygwin64\bin\bison.exe -DPLUGIN_PERFSCHEMA=NO -DPLUGIN_FEEDBACK=NO + - cmake -E time cmake %GENERATOR% .. -DWITH_SSL=system -DHAVE_OPENSSL_APPLINK_C=1 -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT_DIR% -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DMYSQL_MAINTAINER_MODE=ERR -DFAST_BUILD=1 -DBISON_EXECUTABLE=C:\cygwin64\bin\bison.exe -DPLUGIN_PERFSCHEMA=NO -DPLUGIN_FEEDBACK=NO - set /A jobs=2*%NUMBER_OF_PROCESSORS% - cmake -E time cmake --build . -j %jobs% --config %BUILD_TYPE% --target minbuild test_script: - - set PATH=C:\Strawberry\perl\bin;%PATH%;C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 + - set PATH=C:\Strawberry\perl\bin;%OPENSSL_ROOT_DIR%;%PATH%;C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 - cd %APPVEYOR_BUILD_FOLDER%\_build\mysql-test - set /A parallel=4*%NUMBER_OF_PROCESSORS% - perl mysql-test-run.pl --force --max-test-fail=10 --retry=2 --parallel=%parallel% --testcase-timeout=4 --suite=main --skip-test-list=%APPVEYOR_BUILD_FOLDER%\win\appveyor_skip_tests.txt --mysqld=--loose-innodb-flush-log-at-trx-commit=2 diff --git a/mysql-test/suite/innodb/r/temp_truncate_freed.result b/mysql-test/suite/innodb/r/temp_truncate_freed.result new file mode 100644 index 00000000000..1ec26d6ada3 --- /dev/null +++ b/mysql-test/suite/innodb/r/temp_truncate_freed.result @@ -0,0 +1,11 @@ +set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size; +set @old_immediate_scrub_data_val= @@innodb_immediate_scrub_data_uncompressed; +SET GLOBAL innodb_immediate_scrub_data_uncompressed=1; +SET GLOBAL innodb_buffer_pool_size= 16777216; +CREATE TEMPORARY TABLE t1(c1 MEDIUMTEXT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (repeat(1,16777215)); +DROP TEMPORARY TABLE t1; +SET GLOBAL innodb_truncate_temporary_tablespace_now=1; +SET GLOBAL innodb_buffer_pool_size=10485760; +set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size; +set global innodb_immediate_scrub_data_uncompressed = @old_immediate_scrub_data_val; diff --git a/mysql-test/suite/innodb/t/temp_truncate_freed.test b/mysql-test/suite/innodb/t/temp_truncate_freed.test new file mode 100644 index 00000000000..d0a6b5fedf1 --- /dev/null +++ b/mysql-test/suite/innodb/t/temp_truncate_freed.test @@ -0,0 +1,25 @@ +--source include/have_innodb.inc + +set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size; +set @old_immediate_scrub_data_val= @@innodb_immediate_scrub_data_uncompressed; + +SET GLOBAL innodb_immediate_scrub_data_uncompressed=1; +SET GLOBAL innodb_buffer_pool_size= 16777216; + +CREATE TEMPORARY TABLE t1(c1 MEDIUMTEXT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (repeat(1,16777215)); +DROP TEMPORARY TABLE t1; +SET GLOBAL innodb_truncate_temporary_tablespace_now=1; + +let $wait_timeout = 180; +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 30) = 'Completed resizing buffer pool' + FROM information_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status'; + +SET GLOBAL innodb_buffer_pool_size=10485760; +--source include/wait_condition.inc + +set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size; +set global innodb_immediate_scrub_data_uncompressed = @old_immediate_scrub_data_val; +--source include/wait_condition.inc diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc index 1793ff44a2c..9555f0e6cfc 100644 --- a/storage/innobase/fsp/fsp0fsp.cc +++ b/storage/innobase/fsp/fsp0fsp.cc @@ -3714,7 +3714,7 @@ inline void fil_space_t::clear_freed_ranges(uint32_t threshold) { if (range.first >= threshold) continue; - else if (range.last > threshold) + else if (range.last >= threshold) { range_t new_range{range.first, threshold - 1}; current_ranges.add_range(new_range);