Skip to content

Commit 874f8f3

Browse files
committed
Merge 10.2 into 10.3
2 parents be85d3e + 5099973 commit 874f8f3

31 files changed

+384
-338
lines changed

mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,14 +328,24 @@ the
328328
www
329329
select * from information_schema.innodb_ft_deleted;
330330
DOC_ID
331+
Warnings:
332+
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_ft_deleted but the InnoDB storage engine is not installed
331333
select * from information_schema.innodb_ft_being_deleted;
332334
DOC_ID
335+
Warnings:
336+
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_ft_being_deleted but the InnoDB storage engine is not installed
333337
select * from information_schema.innodb_ft_index_cache;
334338
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
339+
Warnings:
340+
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_ft_index_cache but the InnoDB storage engine is not installed
335341
select * from information_schema.innodb_ft_index_table;
336342
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
343+
Warnings:
344+
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_ft_index_table but the InnoDB storage engine is not installed
337345
select * from information_schema.innodb_ft_config;
338346
KEY VALUE
347+
Warnings:
348+
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.innodb_ft_config but the InnoDB storage engine is not installed
339349
select * from information_schema.innodb_buffer_page;
340350
POOL_ID BLOCK_ID SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE PAGE_STATE IO_FIX IS_OLD FREE_PAGE_CLOCK
341351
Warnings:
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
CREATE TABLE t1 (v VARCHAR(100), FULLTEXT INDEX (v)) ENGINE=InnoDB;
2+
insert into t1 VALUES('First record'),('Second record'),('Third record');
3+
SET @save_ft_aux_table = @@GLOBAL.innodb_ft_aux_table;
4+
connect con1,localhost,root,,;
5+
SET GLOBAL innodb_ft_aux_table = 'test/t0';
6+
ERROR 42000: Variable 'innodb_ft_aux_table' can't be set to the value of 'test/t0'
7+
connection default;
8+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
9+
value
10+
a
11+
about
12+
an
13+
are
14+
as
15+
at
16+
be
17+
by
18+
com
19+
de
20+
en
21+
for
22+
from
23+
how
24+
i
25+
in
26+
is
27+
it
28+
la
29+
of
30+
on
31+
or
32+
that
33+
the
34+
this
35+
to
36+
was
37+
what
38+
when
39+
where
40+
who
41+
will
42+
with
43+
und
44+
the
45+
www
46+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
47+
DOC_ID
48+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
49+
DOC_ID
50+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
51+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
52+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
53+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
54+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
55+
KEY VALUE
56+
connection con1;
57+
SET GLOBAL innodb_ft_aux_table = 'test/t1';
58+
disconnect con1;
59+
connection default;
60+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
61+
DOC_ID
62+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
63+
DOC_ID
64+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
65+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
66+
first 1 1 1 1 0
67+
record 1 3 3 1 6
68+
record 1 3 3 2 7
69+
record 1 3 3 3 6
70+
second 2 2 1 2 0
71+
third 3 3 1 3 0
72+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
73+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
74+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
75+
KEY VALUE
76+
optimize_checkpoint_limit 180
77+
synced_doc_id 0
78+
stopword_table_name
79+
use_stopword 1
80+
SELECT @@GLOBAL.innodb_ft_aux_table;
81+
@@GLOBAL.innodb_ft_aux_table
82+
test/t1
83+
RENAME TABLE t1 TO t2;
84+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
85+
DOC_ID
86+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
87+
DOC_ID
88+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
89+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
90+
first 1 1 1 1 0
91+
record 1 3 3 1 6
92+
record 1 3 3 2 7
93+
record 1 3 3 3 6
94+
second 2 2 1 2 0
95+
third 3 3 1 3 0
96+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
97+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
98+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
99+
KEY VALUE
100+
optimize_checkpoint_limit 180
101+
synced_doc_id 0
102+
stopword_table_name
103+
use_stopword 1
104+
SELECT @@GLOBAL.innodb_ft_aux_table;
105+
@@GLOBAL.innodb_ft_aux_table
106+
test/t1
107+
DROP TABLE t2;
108+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
109+
DOC_ID
110+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
111+
DOC_ID
112+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
113+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
114+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
115+
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
116+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
117+
KEY VALUE
118+
SELECT @@GLOBAL.innodb_ft_aux_table;
119+
@@GLOBAL.innodb_ft_aux_table
120+
test/t1
121+
SET GLOBAL innodb_ft_aux_table = @save_ft_aux_table;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
--innodb_ft_default_stopword
2+
--innodb_ft_deleted
3+
--innodb_ft_being_deleted
4+
--innodb_ft_index_cache
5+
--innodb_ft_index_table
6+
--innodb_ft_config
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
--source include/have_innodb.inc
2+
3+
CREATE TABLE t1 (v VARCHAR(100), FULLTEXT INDEX (v)) ENGINE=InnoDB;
4+
5+
insert into t1 VALUES('First record'),('Second record'),('Third record');
6+
7+
SET @save_ft_aux_table = @@GLOBAL.innodb_ft_aux_table;
8+
9+
connect (con1,localhost,root,,);
10+
--error ER_WRONG_VALUE_FOR_VAR
11+
SET GLOBAL innodb_ft_aux_table = 'test/t0';
12+
connection default;
13+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
14+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
15+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
16+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
17+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
18+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
19+
connection con1;
20+
SET GLOBAL innodb_ft_aux_table = 'test/t1';
21+
disconnect con1;
22+
connection default;
23+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
24+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
25+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
26+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
27+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
28+
SELECT @@GLOBAL.innodb_ft_aux_table;
29+
RENAME TABLE t1 TO t2;
30+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
31+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
32+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
33+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
34+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
35+
SELECT @@GLOBAL.innodb_ft_aux_table;
36+
DROP TABLE t2;
37+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
38+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
39+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
40+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
41+
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
42+
SELECT @@GLOBAL.innodb_ft_aux_table;
43+
SET GLOBAL innodb_ft_aux_table = @save_ft_aux_table;

storage/innobase/dict/dict0crea.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*****************************************************************************
22
33
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
4-
Copyright (c) 2017, 2018, MariaDB Corporation.
4+
Copyright (c) 2017, 2019, MariaDB Corporation.
55
66
This program is free software; you can redistribute it and/or modify it under
77
the terms of the GNU General Public License as published by the Free Software
@@ -2353,7 +2353,7 @@ dict_delete_tablespace_and_datafiles(
23532353
{
23542354
dberr_terr = DB_SUCCESS;
23552355

2356-
ut_ad(rw_lock_own(dict_operation_lock, RW_LOCK_X));
2356+
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_X));
23572357
ut_ad(mutex_own(&dict_sys->mutex));
23582358
ut_ad(srv_sys_tablespaces_open);
23592359

storage/innobase/dict/dict0defrag_bg.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*****************************************************************************
22
3-
Copyright (c) 2016, 2018, MariaDB Corporation.
3+
Copyright (c) 2016, 2019, MariaDB Corporation.
44
55
This program is free software; you can redistribute it and/or modify it under
66
the terms of the GNU General Public License as published by the Free Software
@@ -244,7 +244,7 @@ dict_stats_save_defrag_summary(
244244
return DB_SUCCESS;
245245
}
246246

247-
rw_lock_x_lock(dict_operation_lock);
247+
rw_lock_x_lock(&dict_operation_lock);
248248
mutex_enter(&dict_sys->mutex);
249249

250250
ret = dict_stats_save_index_stat(index, now, "n_pages_freed",
@@ -255,7 +255,7 @@ dict_stats_save_defrag_summary(
255255
NULL);
256256

257257
mutex_exit(&dict_sys->mutex);
258-
rw_lock_x_unlock(dict_operation_lock);
258+
rw_lock_x_unlock(&dict_operation_lock);
259259

260260
return (ret);
261261
}
@@ -295,7 +295,7 @@ dict_stats_save_defrag_stats(
295295
return DB_SUCCESS;
296296
}
297297

298-
rw_lock_x_lock(dict_operation_lock);
298+
rw_lock_x_lock(&dict_operation_lock);
299299

300300
mutex_enter(&dict_sys->mutex);
301301
ret = dict_stats_save_index_stat(index, now, "n_page_split",
@@ -328,7 +328,7 @@ dict_stats_save_defrag_stats(
328328

329329
end:
330330
mutex_exit(&dict_sys->mutex);
331-
rw_lock_x_unlock(dict_operation_lock);
331+
rw_lock_x_unlock(&dict_operation_lock);
332332

333333
return (ret);
334334
}

storage/innobase/dict/dict0dict.cc

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ in S-mode; we cannot trust that MySQL protects implicit or background
9595
operations a table drop since MySQL does not know of them; therefore
9696
we need this; NOTE: a transaction which reserves this must keep book
9797
on the mode in trx_t::dict_operation_lock_mode */
98-
rw_lock_t*dict_operation_lock;
98+
rw_lock_tdict_operation_lock;
9999

100100
/** Percentage of compression failures that are allowed in a single
101101
round */
@@ -549,7 +549,7 @@ dict_table_close_and_drop(
549549
dberr_t err = DB_SUCCESS;
550550

551551
ut_ad(mutex_own(&dict_sys->mutex));
552-
ut_ad(rw_lock_own(dict_operation_lock, RW_LOCK_X));
552+
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_X));
553553
ut_ad(trx->dict_operation != TRX_DICT_OP_NONE);
554554
ut_ad(trx_state_eq(trx, TRX_STATE_ACTIVE));
555555

@@ -1078,9 +1078,6 @@ void
10781078
dict_init(void)
10791079
/*===========*/
10801080
{
1081-
dict_operation_lock = static_cast<rw_lock_t*>(
1082-
ut_zalloc_nokey(sizeof(*dict_operation_lock)));
1083-
10841081
dict_sys = static_cast<dict_sys_t*>(ut_zalloc_nokey(sizeof(*dict_sys)));
10851082

10861083
UT_LIST_INIT(dict_sys->table_LRU, &dict_table_t::table_LRU);
@@ -1097,7 +1094,7 @@ dict_init(void)
10971094
/ (DICT_POOL_PER_TABLE_HASH * UNIV_WORD_SIZE));
10981095

10991096
rw_lock_create(dict_operation_lock_key,
1100-
dict_operation_lock, SYNC_DICT_OPERATION);
1097+
&dict_operation_lock, SYNC_DICT_OPERATION);
11011098

11021099
if (!srv_read_only_mode) {
11031100
dict_foreign_err_file = os_file_create_tmpfile();
@@ -1325,7 +1322,7 @@ dict_table_can_be_evicted(
13251322
dict_table_t* table)/*!< in: table to test */
13261323
{
13271324
ut_ad(mutex_own(&dict_sys->mutex));
1328-
ut_ad(rw_lock_own(dict_operation_lock, RW_LOCK_X));
1325+
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_X));
13291326

13301327
ut_a(table->can_be_evicted);
13311328
ut_a(table->foreign_set.empty());
@@ -1393,7 +1390,7 @@ dict_make_room_in_cache(
13931390
ut_a(pct_check > 0);
13941391
ut_a(pct_check <= 100);
13951392
ut_ad(mutex_own(&dict_sys->mutex));
1396-
ut_ad(rw_lock_own(dict_operation_lock, RW_LOCK_X));
1393+
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_X));
13971394
ut_ad(dict_lru_validate());
13981395

13991396
i = len = UT_LIST_GET_LEN(dict_sys->table_LRU);
@@ -2030,7 +2027,7 @@ dict_table_remove_from_cache_low(
20302027
trx_t* trx = trx_create();
20312028

20322029
ut_ad(mutex_own(&dict_sys->mutex));
2033-
ut_ad(rw_lock_own(dict_operation_lock, RW_LOCK_X));
2030+
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_X));
20342031

20352032
/* Mimic row_mysql_lock_data_dictionary(). */
20362033
trx->dict_operation_lock_mode = RW_X_LATCH;
@@ -5956,7 +5953,7 @@ dict_index_set_merge_threshold(
59565953
ut_ad(!dict_table_is_comp(dict_sys->sys_tables));
59575954
ut_ad(!dict_table_is_comp(dict_sys->sys_indexes));
59585955

5959-
rw_lock_x_lock(dict_operation_lock);
5956+
rw_lock_x_lock(&dict_operation_lock);
59605957
mutex_enter(&(dict_sys->mutex));
59615958

59625959
heap = mem_heap_create(sizeof(dtuple_t) + 2 * (sizeof(dfield_t)
@@ -6006,7 +6003,7 @@ dict_index_set_merge_threshold(
60066003
mem_heap_free(heap);
60076004

60086005
mutex_exit(&(dict_sys->mutex));
6009-
rw_lock_x_unlock(dict_operation_lock);
6006+
rw_lock_x_unlock(&dict_operation_lock);
60106007
}
60116008

60126009
#ifdef UNIV_DEBUG
@@ -6600,10 +6597,7 @@ dict_close(void)
66006597
mutex_exit(&dict_sys->mutex);
66016598
mutex_free(&dict_sys->mutex);
66026599

6603-
rw_lock_free(dict_operation_lock);
6604-
6605-
ut_free(dict_operation_lock);
6606-
dict_operation_lock = NULL;
6600+
rw_lock_free(&dict_operation_lock);
66076601

66086602
mutex_free(&dict_foreign_err_mutex);
66096603

@@ -7014,7 +7008,7 @@ dict_space_is_empty(
70147008
mtr_tmtr;
70157009
boolfound = false;
70167010

7017-
rw_lock_x_lock(dict_operation_lock);
7011+
rw_lock_x_lock(&dict_operation_lock);
70187012
mutex_enter(&dict_sys->mutex);
70197013
mtr_start(&mtr);
70207014

@@ -7037,7 +7031,7 @@ dict_space_is_empty(
70377031

70387032
mtr_commit(&mtr);
70397033
mutex_exit(&dict_sys->mutex);
7040-
rw_lock_x_unlock(dict_operation_lock);
7034+
rw_lock_x_unlock(&dict_operation_lock);
70417035

70427036
return(!found);
70437037
}
@@ -7055,7 +7049,7 @@ dict_space_get_id(
70557049
ulint name_len = strlen(name);
70567050
ulint id = ULINT_UNDEFINED;
70577051

7058-
rw_lock_x_lock(dict_operation_lock);
7052+
rw_lock_x_lock(&dict_operation_lock);
70597053
mutex_enter(&dict_sys->mutex);
70607054
mtr_start(&mtr);
70617055

@@ -7086,7 +7080,7 @@ dict_space_get_id(
70867080

70877081
mtr_commit(&mtr);
70887082
mutex_exit(&dict_sys->mutex);
7089-
rw_lock_x_unlock(dict_operation_lock);
7083+
rw_lock_x_unlock(&dict_operation_lock);
70907084

70917085
return(id);
70927086
}

0 commit comments

Comments
 (0)