summaryrefslogtreecommitdiff
path: root/mysql-test/suite/storage_engine/index.inc
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/storage_engine/index.inc')
-rw-r--r--mysql-test/suite/storage_engine/index.inc194
1 files changed, 194 insertions, 0 deletions
diff --git a/mysql-test/suite/storage_engine/index.inc b/mysql-test/suite/storage_engine/index.inc
new file mode 100644
index 00000000000..ac7632fb2b4
--- /dev/null
+++ b/mysql-test/suite/storage_engine/index.inc
@@ -0,0 +1,194 @@
+#
+# Basic syntax related to indexes:
+# unique and non-unique keys,
+# single- and multi-column keys,
+# index option COMMENT.
+#
+# See other index* tests for operations
+# which are less likely to be supported
+#
+# PRIMARY KEY syntax is covered in index_primary test.
+# Index types BTREE|HASH -- in index_type_btree|hash tests.
+# SPATIAL -- in type_spatial_indexes test.
+# FULLTEXT -- in fulltext_search test.
+# KEY_BLOCK_SIZE -- in index_key_block_size test.
+#
+# Usage to call the test from another test:
+#
+# A calling test may define $index_type, in which case
+# USING clause will be added to the syntax.
+#
+
+let $using_index_type = ;
+if ($index_type)
+{
+ let $using_index_type = USING $index_type;
+}
+
+--source have_engine.inc
+
+--let $continue = 1
+--source have_default_index.inc
+
+if ($have_default_index)
+{
+
+ let $create_definition =
+ a $int_indexed_col,
+ b $char_col,
+ $default_index $using_index_type (a)
+ ;
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ # Cardinality is not the exact science, so here and further
+ # we'll be masking it
+ --replace_column 6 # 7 # 10 #
+ SHOW KEYS IN t1;
+ DROP TABLE t1;
+ }
+
+ let $create_definition =
+ a $int_indexed_col,
+ b $char_indexed_col,
+ $default_index a_b $using_index_type (a,b) COMMENT 'a_b index'
+ ;
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = Multi-part indexes
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ --replace_column 6 # 7 # 10 #
+ SHOW KEYS IN t1;
+ DROP TABLE t1;
+ }
+
+
+ let $create_definition =
+ a $int_indexed_col,
+ b $char_indexed_col,
+ $default_index $using_index_type (a),
+ $default_index $using_index_type (b)
+ ;
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = Multiple indexes
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ --replace_column 6 # 7 # 10 #
+ SHOW KEYS IN t1;
+ DROP TABLE t1;
+ }
+
+ let $create_definition =
+ a $int_indexed_col,
+ b $char_col,
+ UNIQUE INDEX $using_index_type (a)
+ ;
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = Unique indexes
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ --replace_column 6 # 7 # 10 #
+ SHOW KEYS IN t1;
+ INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
+ --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
+ INSERT INTO t1 (a,b) VALUES (1,'c');
+ --source check_errors.inc
+
+ DROP TABLE t1;
+ }
+
+
+ #
+ # ALTER TABLE
+ #
+
+ --let $create_definition = a $int_indexed_col, b $char_col
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = Column options
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ INSERT INTO t1 (a,b) VALUES (100,'z');
+
+ --let $alter_definition = ADD $default_index (a) $using_index_type COMMENT 'simple index on a'
+ --source alter_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = ALTER TABLE .. ADD INDEX
+ --let $my_last_stmt = $alter_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ --replace_column 6 # 7 # 10 #
+ SHOW INDEX FROM t1;
+ --let $alter_definition = DROP KEY a
+ --source alter_table.inc
+ }
+ DROP TABLE t1;
+ }
+
+ let $create_definition =
+ a $int_indexed_col,
+ b $char_col,
+ UNIQUE INDEX $using_index_type (a)
+ ;
+ --source create_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = Unique indexes
+ --let $my_last_stmt = $create_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ --replace_column 6 # 7 # 10 #
+ SHOW KEYS IN t1;
+ INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
+ --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
+ INSERT INTO t1 (a,b) VALUES (1,'c');
+ --source check_errors.inc
+
+ --let $alter_definition = DROP INDEX a
+ --source alter_table.inc
+ if ($mysql_errname)
+ {
+ --let $functionality = ALTER TABLE .. DROP INDEX
+ --let $my_last_stmt = $alter_statement
+ --source unexpected_result.inc
+ }
+ if (!$mysql_errname)
+ {
+ INSERT INTO t1 (a,b) VALUES (1,'c');
+ --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
+ --let $alter_definition = ADD UNIQUE INDEX a(a) $using_index_type
+ --source alter_table.inc
+ }
+ DROP TABLE t1;
+ }
+}
+