# 
# Basic syntax related to primary keys 
#

--source have_engine.inc

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

let $create_definition =
  a $int_indexed_col PRIMARY KEY,
  b $char_col
;
--source create_table.inc
if ($mysql_errname)
{
  --let $my_last_stmt =  $create_statement
  --let $functionality = PRIMARY KEY
  --source unexpected_result.inc
}
if (!$mysql_errname)
{
  --replace_column 6 # 7 # 10 # 11 #
  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;
}

--let $error_codes = ER_MULTIPLE_PRI_KEY
let $create_definition = 
  a $int_indexed_col PRIMARY KEY,
  b $char_indexed_col PRIMARY KEY
;
--source create_table.inc
if ($mysql_errname != ER_MULTIPLE_PRI_KEY)
{
  --let $my_last_stmt = $create_statement
  --let $functionality = PRIMARY KEY
  --source unexpected_result.inc
}

let $create_definition = 
  a $int_indexed_col,
  b $char_indexed_col,
  PRIMARY KEY (a,b)
;
--source create_table.inc
if ($mysql_errname)
{
  --let $my_last_stmt =  $create_statement
  --let $functionality = Multi-part keys
  --source unexpected_result.inc
}
if (!$mysql_errname)
{
  --replace_column 6 # 7 # 10 # 11 #
  SHOW INDEX IN t1;
  INSERT INTO t1 (a,b) VALUES (1,'a'),(1,'b'),(2,'a'),(2,'b');
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
  INSERT INTO t1 (a,b) VALUES (1,'b');
  --source check_errors.inc
  DROP TABLE t1;
}


--let $continue = 1
--source have_default_index.inc
if ($have_default_index)
{
  # KEY in a column definition means PK!
  let $create_definition = 
    a $int_indexed_col KEY,
    b $char_indexed_col,
    $default_index (b)
  ;
  --source create_table.inc
  if ($mysql_errname)
  {
    --let $my_last_stmt =  $create_statement
    --let $functionality = Multiple keys or PK or keys on CHAR columns
    --source unexpected_result.inc
  }
  if (!$mysql_errname)
  {
    --replace_column 6 # 7 # 10 # 11 #
    SHOW INDEX IN t1;
    DROP TABLE t1;
  }
}

let $create_definition =
  a $int_indexed_col,
  b $char_indexed_col PRIMARY KEY
;
--source create_table.inc
if ($mysql_errname)
{
  --let $my_last_stmt =  $create_statement
  --source unexpected_result.inc
}
if (!$mysql_errname)
{

  --replace_column 6 # 7 # 10 # 11 #
  SHOW INDEX IN t1;

  --let $alter_definition = DROP INDEX `PRIMARY`
  --source alter_table.inc
  if ($mysql_errname)
  {
    --let $my_last_stmt =  $alter_statement
    --let $functionality = ALTER TABLE
    --source unexpected_result.inc
  }
  if (!$mysql_errname)
  {
    --let $alter_definition = ADD CONSTRAINT PRIMARY KEY pk (a)
    --source alter_table.inc
    --source mask_engine.inc
    --replace_column 6 # 7 # 10 # 11 #
    SHOW KEYS IN t1;
    --let $alter_definition = DROP PRIMARY KEY
    --source alter_table.inc
  }

  DROP TABLE t1;
}

--source cleanup_engine.inc

