From d7a484b04feb184cf697122f63f821f338c35769 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Wed, 4 Oct 2017 13:36:31 +0300 Subject: [PATCH] SQL: segfault after make_select() in VTMD --- mysql-test/suite/versioning/r/vtmd.result | 4 ++++ mysql-test/suite/versioning/t/vtmd.test | 4 ++++ sql/vtmd.cc | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/versioning/r/vtmd.result b/mysql-test/suite/versioning/r/vtmd.result index 68037697a36..47f0dfd3491 100644 --- a/mysql-test/suite/versioning/r/vtmd.result +++ b/mysql-test/suite/versioning/r/vtmd.result @@ -354,6 +354,10 @@ u0_vtmd u0_vtmd_vtmd Warnings: Warning 4088 Table `test.u0_vtmd` is not a VTMD table +set versioning_alter_history= survive; +create or replace table t (x int) with system versioning; +select * from t for system_time all; +x sys_trx_start sys_trx_end drop database db0; drop database db1; drop database test; diff --git a/mysql-test/suite/versioning/t/vtmd.test b/mysql-test/suite/versioning/t/vtmd.test index c7d6883b0b9..c5483c182cc 100644 --- a/mysql-test/suite/versioning/t/vtmd.test +++ b/mysql-test/suite/versioning/t/vtmd.test @@ -193,6 +193,10 @@ set versioning_hide= auto; create or replace table u0_vtmd (x int) with system versioning; show tables; +set versioning_alter_history= survive; +create or replace table t (x int) with system versioning; +select * from t for system_time all; + drop database db0; drop database db1; drop database test; diff --git a/sql/vtmd.cc b/sql/vtmd.cc index 0f008fc1e91..a1d7375dfef 100644 --- a/sql/vtmd.cc +++ b/sql/vtmd.cc @@ -547,7 +547,7 @@ VTMD_table::find_archive_name(THD *thd, String &out) while (!(error= info.read_record(&info)) && !thd->killed && !thd->is_error()) { - if (select->skip_record(thd) > 0) + if (!select || select->skip_record(thd) > 0) { vtmd.table->field[FLD_ARCHIVE_NAME]->val_str(&out); break;