Skip to content

Commit 8a2163c

Browse files
gopshankdahlerlend
authored andcommitted
WL#6599 New Data Dictionary and I_S integration
The value of INFORMATION_SCHEMA.COLUMNS.COLUMN_KEY was not reported when the column was used by a FULLTEXT and SPATIAL index. The patch fixes the same. The index_type cannot be specified for FULLTEXT and SPATIAL indexes and so they are mostly reported as 'MUL' (Multiple values) for column used in index. There was no test case covering the scenario in suite main. Added a test case in main.information_schema now. Notes: Issue found by Tarique in a RQG run. Reviewed by Praveen.
1 parent 92f8adc commit 8a2163c

File tree

4 files changed

+114
-0
lines changed

4 files changed

+114
-0
lines changed

mysql-test/r/information_schema.result

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,3 +2128,44 @@ SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'ndbinfo
21282128
SCHEMA_NAME
21292129
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'ndbinfo';
21302130
TABLE_NAME
2131+
#
2132+
# WL#6599: New Data Dictionary and I_S Integration.
2133+
#
2134+
# Test case to check INFORMATION_SCHEMA.COLUMNS.COLUMN_KEY
2135+
# value if reported for FULLTEXT and SPATIAL index.
2136+
#
2137+
CREATE TABLE t1 (
2138+
c1 INT,
2139+
c2 INT,
2140+
c3 CHAR(255),
2141+
c4 CHAR(255),
2142+
c5 CHAR(255),
2143+
c6 POINT NOT NULL,
2144+
c7 GEOMETRY NOT NULL,
2145+
SPATIAL INDEX(c7),
2146+
PRIMARY KEY (c1, c6),
2147+
KEY c2_key (c2),
2148+
FULLTEXT KEY c3_fts (c3),
2149+
FULLTEXT KEY c4_fts (c4, c5));
2150+
SELECT COLUMN_NAME, IS_NULLABLE,
2151+
DATA_TYPE, COLLATION_NAME, COLUMN_KEY
2152+
FROM INFORMATION_SCHEMA.COLUMNS
2153+
WHERE TABLE_SCHEMA='test';
2154+
COLUMN_NAME IS_NULLABLE DATA_TYPE COLLATION_NAME COLUMN_KEY
2155+
c1 NO int NULL PRI
2156+
c2 YES int NULL MUL
2157+
c3 YES char latin1_swedish_ci MUL
2158+
c4 YES char latin1_swedish_ci MUL
2159+
c5 YES char latin1_swedish_ci
2160+
c6 NO point NULL PRI
2161+
c7 NO geometry NULL MUL
2162+
SHOW COLUMNS FROM t1;
2163+
Field Type Null Key Default Extra
2164+
c1 int(11) NO PRI NULL
2165+
c2 int(11) YES MUL NULL
2166+
c3 char(255) YES MUL NULL
2167+
c4 char(255) YES MUL NULL
2168+
c5 char(255) YES NULL
2169+
c6 point NO PRI NULL
2170+
c7 geometry NO MUL NULL
2171+
DROP TABLE t1;

mysql-test/r/information_schema_ci.result

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,3 +2128,44 @@ SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'ndbinfo
21282128
SCHEMA_NAME
21292129
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'ndbinfo';
21302130
TABLE_NAME
2131+
#
2132+
# WL#6599: New Data Dictionary and I_S Integration.
2133+
#
2134+
# Test case to check INFORMATION_SCHEMA.COLUMNS.COLUMN_KEY
2135+
# value if reported for FULLTEXT and SPATIAL index.
2136+
#
2137+
CREATE TABLE t1 (
2138+
c1 INT,
2139+
c2 INT,
2140+
c3 CHAR(255),
2141+
c4 CHAR(255),
2142+
c5 CHAR(255),
2143+
c6 POINT NOT NULL,
2144+
c7 GEOMETRY NOT NULL,
2145+
SPATIAL INDEX(c7),
2146+
PRIMARY KEY (c1, c6),
2147+
KEY c2_key (c2),
2148+
FULLTEXT KEY c3_fts (c3),
2149+
FULLTEXT KEY c4_fts (c4, c5));
2150+
SELECT COLUMN_NAME, IS_NULLABLE,
2151+
DATA_TYPE, COLLATION_NAME, COLUMN_KEY
2152+
FROM INFORMATION_SCHEMA.COLUMNS
2153+
WHERE TABLE_SCHEMA='test';
2154+
COLUMN_NAME IS_NULLABLE DATA_TYPE COLLATION_NAME COLUMN_KEY
2155+
c1 NO int NULL PRI
2156+
c2 YES int NULL MUL
2157+
c3 YES char latin1_swedish_ci MUL
2158+
c4 YES char latin1_swedish_ci MUL
2159+
c5 YES char latin1_swedish_ci
2160+
c6 NO point NULL PRI
2161+
c7 NO geometry NULL MUL
2162+
SHOW COLUMNS FROM t1;
2163+
Field Type Null Key Default Extra
2164+
c1 int(11) NO PRI NULL
2165+
c2 int(11) YES MUL NULL
2166+
c3 char(255) YES MUL NULL
2167+
c4 char(255) YES MUL NULL
2168+
c5 char(255) YES NULL
2169+
c6 point NO PRI NULL
2170+
c7 geometry NO MUL NULL
2171+
DROP TABLE t1;

mysql-test/t/information_schema.test

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,3 +1958,32 @@ DROP VIEW v1;
19581958
SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'ndbinfo';
19591959
# tables of ndbinfo schema should not be listed.
19601960
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'ndbinfo';
1961+
1962+
1963+
--echo #
1964+
--echo # WL#6599: New Data Dictionary and I_S Integration.
1965+
--echo #
1966+
--echo # Test case to check INFORMATION_SCHEMA.COLUMNS.COLUMN_KEY
1967+
--echo # value if reported for FULLTEXT and SPATIAL index.
1968+
--echo #
1969+
CREATE TABLE t1 (
1970+
c1 INT,
1971+
c2 INT,
1972+
c3 CHAR(255),
1973+
c4 CHAR(255),
1974+
c5 CHAR(255),
1975+
c6 POINT NOT NULL,
1976+
c7 GEOMETRY NOT NULL,
1977+
SPATIAL INDEX(c7),
1978+
PRIMARY KEY (c1, c6),
1979+
KEY c2_key (c2),
1980+
FULLTEXT KEY c3_fts (c3),
1981+
FULLTEXT KEY c4_fts (c4, c5));
1982+
1983+
SELECT COLUMN_NAME, IS_NULLABLE,
1984+
DATA_TYPE, COLLATION_NAME, COLUMN_KEY
1985+
FROM INFORMATION_SCHEMA.COLUMNS
1986+
WHERE TABLE_SCHEMA='test';
1987+
SHOW COLUMNS FROM t1;
1988+
1989+
DROP TABLE t1;

sql/dd/dd_table.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -847,11 +847,14 @@ fill_dd_index_elements_from_key_parts(const dd::Table *tab_obj,
847847
}
848848
break;
849849
case dd::Index::IT_MULTIPLE:
850+
case dd::Index::IT_FULLTEXT:
851+
case dd::Index::IT_SPATIAL:
850852
if (key_part == key_parts)
851853
const_cast<dd::Column*>(key_col_obj)->set_column_key(
852854
dd::Column::CK_MULTIPLE);
853855
break;
854856
default:
857+
DBUG_ASSERT(!"Invalid index type");
855858
break;
856859
}
857860
}

0 commit comments

Comments
 (0)