polardbxengine/mysql-test/suite/x/r/prep_stmt_performance_schem...

62 lines
4.0 KiB
Plaintext

CREATE DATABASE xtest;
## 1. Verify SQL preparation in performance_schema
## 2. Verify Crud.Find preparation in performance_schema
# a. check find on a table
# b. check find on a collection
## 3. Verify Crud.Insert preparation in performance_schema
# a. success for execute with one parameter
# b. success for execute with two parameters (more than needed)
Setup database
==============
command ok
1. Verify SQL
==============
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value SELECT 1]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
2.a. Verify Crud.Find on a table
=================================
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value SELECT '42' FROM `mysql`.`user`]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
2.b. Verify Crud.Find on a collection
======================================
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value SELECT doc FROM `coll`]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
3.a. Verify Crud.Insert on a table with literal
================================================
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value INSERT INTO `coll` (`doc`) VALUES ('{\"_id\":\"1\", \"pupil\":\"Alice\", \"pet\":\"cat\"}')]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
3.b. Verify Crud.Insert on a collection with literal
=====================================================
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value INSERT INTO `coll` (doc) VALUES ((SELECT JSON_INSERT(`_DERIVED_TABLE_`.`value`,'$._id',CONVERT(MYSQLX_GENERATE_DOCUMENT_ID(@@AUTO_INCREMENT_OFFSET,@@AUTO_INCREMENT_INCREMENT,JSON_CONTAINS_PATH(`_DERIVED_TABLE_`.`value`,'one','$._id')) USING utf8mb4)) FROM (SELECT '{\"_id\":\"1\", \"pupil\":\"Alice\", \"pet\":\"cat\"}' AS `value`) AS `_DERIVED_TABLE_`))]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
3.c. Verify Crud.Insert on a collection with object
====================================================
# Prepare stmt
Verify ["SELECT sql_text FROM performance_schema.prepared_statements_instances WHERE `STATEMENT_ID`=mysqlx_get_prepared_statement_id(42)" returns in "sql_text" column, following value INSERT INTO `coll` (doc) VALUES ((SELECT JSON_INSERT(`_DERIVED_TABLE_`.`value`,'$._id',CONVERT(MYSQLX_GENERATE_DOCUMENT_ID(@@AUTO_INCREMENT_OFFSET,@@AUTO_INCREMENT_INCREMENT,JSON_CONTAINS_PATH(`_DERIVED_TABLE_`.`value`,'one','$._id')) USING utf8mb4)) FROM (SELECT JSON_OBJECT('pupil',?,'pet',?) AS `value`) AS `_DERIVED_TABLE_`))]
# Deallocate the stmt
Verify ["SELECT count(sql_text) AS count_sql_text FROM performance_schema.prepared_statements_instances" returns in "count_sql_text" column, following value 0]
Mysqlx.Ok {
msg: "bye!"
}
ok
DROP DATABASE xtest;