config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/x/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/x/t/create_index_crud.test

########### ../t/create_index_crud.test                  #############
##                                                                   #
## This test runs aims index creation using crud calls               #
## Test covers                                                       #
##  - Create index with crud calls                                   #
##  - create with different data type(TEXT/INT) for doc field        #
#######################################################################



# create_collection_index

# Creates an index on a given document field. Indexes on documents are 
# created by first creating a virtual generated column that extracts 
# the field from the document to an indexable column and then creating 
# the index on that column. JSN_EXTRACT() is used to extract the field 
# value and JSN_UNQUOTE() to remove the quoting from strings. 
# User must specify the datatype that the field must be extracted as. 
# The default is TEXT(64).

# If a virtual column for the requested column already exists, it 
# will be reused for the newly created index. If an index of the same name
# exists for the table, an error will be returned.

# Indexes are created as follows:

# ALTER TABLE table ADD COLUMN (v_field_name GENERATED ALWAYS AS 
# (JSN_EXTRACT(document, '$.field_name ')) VIRTUAL, ADD INDEX 
# table_field ON table.v_field_name

# Arguments for create_collection_index
#   - schema name of table on which table to be created
#    - table name - 
#    - name of the index( optional)
#    - unique - whether the index should be a unique index
#    - field_path : the document path to the field to be indexed
#                   of doc column
#    - datatype - datatype of the index
#    - not_null - whether the generated column will be created as NOT NULL

# Pre Conditions
#    User must have Index privileges on the schema
#    User must have Alter privileges on the table
#    The indexed field must be of a simple type. Multi-value indexes are currently not supported.

# Errors
#    XXXX - column already exists
#    XXXX - invalid field name (if _id or document are specified)
#    XXXX - field name too long
#    XXXX - other normal index errors

--source include/not_valgrind.inc
--source ../include/xplugin_preamble.inc
call mtr.add_suppression("Error parsing message of type 12: args");
call mtr.add_suppression("Error handling message: args");
call mtr.add_suppression("InnoDB: Compute virtual column values failed");

## Test starts here
--write_file $MYSQL_TMP_DIR/mysqlx-in.tmp
-->sql
-- "Creating database for testcase"
DROP DATABASE IF EXISTS xplugintest;
DROP DATABASE IF EXISTS xplugintest_1;
CREATE DATABASE xplugintest;
CREATE DATABASE xplugintest_1;
USE xplugintest;
CREATE TABLE table1 ( _id INT , doc JSON ) ;
-->endsql

-- "Create index on table2 in xplugintest "

Mysqlx.Sql.StmtExecute {
  stmt: "create_collection"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  namespace: "xplugin"
}
-->recvresult

-- "Index with  unique(true), index column NOT NULL (true)"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col1_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "TEXT(13)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  namespace: "xplugin"
}
-->recv

-- Insert the data exceeding index length
-->sql
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"01234567890123456789","_id":0}');
-->endsql

-- "Index with  unique(false), index column NOT NULL (false) , datatype (INT)"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col2_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv



-->sql
SHOW CREATE TABLE xplugintest.table2;
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"val1","col2":101,"_id":1}');
-- "non unique (duplicate) NOT allowed for col1"
-->endsql
-->expecterror ER_DUP_ENTRY
-->sql
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"val1","col2":102,"_id":2}');
-- " null value NOT allowed for col1"
-->endsql
-->expecterror ER_BAD_NULL_ERROR
-->sql
INSERT INTO xplugintest.table2(doc) VALUES('{"col2":103,"_id":3}');
SELECT * FROM xplugintest.table2;
-- "non unique (duplicate) allowed for col2"
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"val4","col2":102,"_id":4}');
-- " null value allowed for col2"
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"val5","_id":5}');
SELECT * FROM xplugintest.table2;
SELECT _id,doc, CONCAT("Prefix",$ix_t13_r_5E11219941D8F091BF6F252A48E0EEAA9D734FF9) , $ix_i_1C70785A292B9A2762EFA186DFCFB4F03C660E7F
   FROM xplugintest.table2;
-- "Error as virual column data type mismatch while inserting into JSON doc"
-->endsql
-->expecterror ER_INVALID_JSON_VALUE_FOR_CAST
-->sql
INSERT INTO xplugintest.table2(doc) VALUES('{"col1":"val6","col2":"non_int_val","_id":6}');
-->endsql

-- "Index name already exists"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col2_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col3"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-->sql
ALTER TABLE xplugintest.table2 ADD COLUMN $ix_t13_bf29f74d5ecec695774cb5b3f1ff979e7643bf36 TEXT;
-->endsql
-- "Column name exits - reuse"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col3_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col3"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "TEXT(13)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-- "Invalid field name , if we include _id for index"
-- "No error now - Fix result when behavior is fixed"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "_id_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$._id"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-- "Invalid path expression (.....col5) for document "
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col5_index"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.....col5"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-->sql
SHOW CREATE TABLE xplugintest.table2;
ALTER TABLE xplugintest.table2 DROP INDEX `col1_index`;
ALTER TABLE xplugintest.table2 DROP COLUMN `$ix_t13_r_5E11219941D8F091BF6F252A48E0EEAA9D734FF9`;
SHOW CREATE TABLE xplugintest.table2;
SELECT * FROM xplugintest.table2;
ALTER TABLE xplugintest.table2 ADD COLUMN `$col1_ix_t13` text
            GENERATED ALWAYS AS (LEFT(JSON_UNQUOTE(JSON_EXTRACT(doc, '$.col1')), 13)) STORED ;
SHOW CREATE TABLE xplugintest.table2;
SELECT * FROM xplugintest.table2;
-->endsql

#
-- "Not allowed to create index called _id "
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "_id"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col9"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv
-->sql
SHOW CREATE TABLE xplugintest.table2;
-->endsql
# vinay
-- "Missing args - column name"
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.col5"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-- testcase for JIRA issue MYP-287
-->sql
#DELETE FROM xplugintest.table2;
TRUNCATE xplugintest.table2;
INSERT INTO xplugintest.table2(doc) VALUES('{"F1":1, "F2":"abcd", "F3":1000, "_id":0}');
-->endsql
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "iX1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "BLOB(767)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-->echo Create index on two fields
-- should create second virtual column for F2 as required is true now! (JIRA issue MYP-325)
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "iX3"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F3"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "BIGINT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "BLOB(767)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  namespace: "xplugin"
}

-->recv

-- testcase for JIRA issue MYP-290
-->sql
#DELETE FROM xplugintest.table2;
TRUNCATE xplugintest.table2;
INSERT INTO xplugintest.table2(doc) VALUES('{"F2":"REQUIRED", "F3":"1", "KeyName_VeryLongKeyNameWithKeyNameLength_FiFtyFourAndEvenABitLonger": "abcdefgh", "_id":1}');
-->endsql
Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {       
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "iXLong"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.KeyName_VeryLongKeyNameWithKeyNameLength_FiFtyFourAndEvenABitLonger"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "BLOB(3000)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}
-->recv

-->sql
SHOW CREATE TABLE xplugintest.table2;
SELECT * FROM xplugintest.table2;
-->endsql





-- "Test different doc_path names "

Mysqlx.Sql.StmtExecute {
  stmt: "create_collection"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table3"
      }
    }
  }
  namespace: "xplugin"
}
-->recv

-->macro Create_index $INDEX_NAME% %DOC_PATH%

Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "table3"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$INDEX_NAME%"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "%DOC_PATH%"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "INT"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  namespace: "xplugin"
}
-->recv

-->endmacro

-->callmacro Create_index	IX	
-->callmacro Create_index	IX0	$
-->callmacro Create_index	IX1	$.`a#1`
-->callmacro Create_index	IX2	$.a'; drop datavase xplugintest; '
-->callmacro Create_index	IX3	$.`a'1`
-->callmacro Create_index	IX4	$.`a\'1`
-->callmacro Create_index	IX5	$.`a\\'1`
-->callmacro Create_index	IX6	$.a\' drop database xplugintest; \'
-->callmacro Create_index	IX7	$.b)) virtual not null; drop database xplugintest; alter table table3 add column x int GENERATED ALWAYS AS (JSON_EXTRACT(doc, $.c
-->callmacro Create_index	IX8	$.b')) virtual not null; drop database xplugintest; alter table table3 add column x int GENERATED ALWAYS AS (JSON_EXTRACT(doc, '$.c
-->callmacro Create_index	IX9	$.b\')) virtual not null; drop database xplugintest; alter table table3 add column x int GENERATED ALWAYS AS (JSON_EXTRACT(doc, \'$.c
-->callmacro Create_index	IX10	$.b\\')) virtual not null; drop database xplugintest; alter table table3 add column x int GENERATED ALWAYS AS (JSON_EXTRACT(doc, \\'$.c
-->callmacro Create_index	IX11	$.`b))` virtual not null; drop database xplugintest; alter table table3 add column x int GENERATED ALWAYS AS (JSON_EXTRACT(doc, $.`c`

-- Testing very long document path cases (JIRA issue MYP-204)

-->echo Document path 2k long
-->callmacro Create_index	IXLong1	$.a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

-->sql
SHOW CREATE TABLE xplugintest.table3;
-->endsql

-- Testing many multi-field indexes JIRA issue MYP-337


-->sql
CREATE TABLE col_myp337 ( _id INT , doc JSON ) ;
-->endsql


-->macro Create_3_field_index %NUM%

Mysqlx.Sql.StmtExecute {
  stmt: "create_collection_index"
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "xplugintest"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "col_myp337"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "index_%NUM%"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "Text(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "Text(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "int(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F2"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "int(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
 args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "blob(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: true
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "$.F1"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_STRING
      v_string {
        value: "blob(%NUM%)"
      }
    }
  }
  args {
    type: SCALAR
    scalar {
      type: V_BOOL
      v_bool: false
    }
  }
  namespace: "xplugin"
}

-->recv

-->endmacro

-->quiet

-->varlet %VALUE% 11
-->repeat 30
-->callmacro Create_3_field_index	%VALUE%
-->varinc %VALUE% 1
-->endrepeat

-->noquiet


-->sql
SHOW INDEX from xplugintest.col_myp337 where Key_name rlike '^index_[12][0-9]*';
SHOW INDEX from xplugintest.col_myp337 where Key_name rlike '^index_[34][0-9]*';
-->endsql

EOF

--exec $MYSQLXTEST -u root --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp


--write_file $MYSQL_TMP_DIR/mysqlx-in.tmp
## Cleanup
-->sql
DROP DATABASE IF EXISTS xplugintest;
DROP DATABASE IF EXISTS xplugintest_1;
-->endsql
EOF

--exec $MYSQLXTEST -u root --password='' --file=$MYSQL_TMP_DIR/mysqlx-in.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp


#
## Postamble
UNINSTALL PLUGIN mysqlx;

Man Man