1#
2# Bug#21114 (Foreign key creation fails to table with name format)
3#
4# Trying to trick the parser into thinking $FCT(...) is a function call,
5# which is not in the CREATE TABLE and FOREIGN KEY ... REFERENCES syntax
6#
7# Usage :
8#
9# let $engine_type=InnoDb;
10# let $verbose=1;
11# let $FCT= <value_1>;
12# -- source parser_stress_func.inc
13# let $FCT= <value_2>;
14# -- source parser_stress_func.inc
15# let $verbose=0;
16# let $FCT= <value_3>;
17# -- source parser_stress_func.inc
18# let $FCT= <value_4>;
19# -- source parser_stress_func.inc
20
21-- disable_warnings
22eval drop table if exists $FCT;
23drop table if exists bug21114_child;
24-- enable_warnings
25
26--disable_query_log
27--disable_result_log
28
29eval CREATE TABLE $FCT(
30  col1 int not null,
31  col2 int not null,
32  col3 varchar(10),
33  CONSTRAINT pk PRIMARY KEY (col1, col2)
34) ENGINE $engine_type;
35
36eval CREATE TABLE bug21114_child(
37  pk int not null,
38  fk_col1 int not null,
39  fk_col2 int not null,
40  fk_col3 int not null,
41  fk_col4 int not null,
42  CONSTRAINT fk_fct FOREIGN KEY (fk_col1, fk_col2)
43    REFERENCES $FCT(col1, col2),
44  CONSTRAINT fk_fct_space FOREIGN KEY (fk_col3, fk_col4)
45    REFERENCES $FCT (col1, col2)
46) ENGINE $engine_type;
47
48--enable_query_log
49--enable_result_log
50
51if ($verbose)
52{
53  eval SHOW CREATE TABLE $FCT;
54  SHOW CREATE TABLE bug21114_child;
55}
56
57DROP TABLE bug21114_child;
58eval DROP TABLE $FCT;
59
60