1162 lines
23 KiB
Plaintext
1162 lines
23 KiB
Plaintext
########### ../t/delete_crud_o.test ###########
|
|
### #
|
|
### This test runs aims to run DELETE operation statements #
|
|
### variant with mysqlxtest client for Table and Document data models. #
|
|
### Test covers #
|
|
### - delete with different operators #
|
|
### - delete multiple rows #
|
|
### - status variable Mysqlx_crud_delete for number of Delete #
|
|
### requests received #
|
|
### #
|
|
########################################################################
|
|
#
|
|
|
|
--echo ==============================================
|
|
--echo CRUD DELETE SCENARIOS
|
|
--echo ==============================================
|
|
--echo
|
|
|
|
## Preamble
|
|
--echo ================================================================================
|
|
--echo PREAMBLE
|
|
--echo ================================================================================
|
|
--source include/xplugin_preamble.inc
|
|
create user deletecruduser@localhost identified by 'deletecruduser';
|
|
grant all on *.* to deletecruduser@localhost;
|
|
|
|
## TEST STARTS HERE
|
|
--echo ================================================================================
|
|
--echo TEST START
|
|
--echo ================================================================================
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-delete_sql.tmp
|
|
-->sql
|
|
DROP SCHEMA if EXISTS mysqlxplugin;
|
|
CREATE SCHEMA mysqlxplugin DEFAULT CHARSET='utf8';
|
|
USE mysqlxplugin;
|
|
|
|
CREATE TABLE categories (
|
|
CategoryID int NOT NULL AUTO_INCREMENT,
|
|
CategoryName varchar(100),
|
|
CategoryDescription varchar(200),
|
|
CategoryIMEI tinyint,
|
|
CategoryDecimal decimal(5,2),
|
|
PRIMARY key (CategoryID)
|
|
);
|
|
|
|
INSERT INTO categories(CategoryID, CategoryName, CategoryDescription, CategoryIMEI, CategoryDecimal)
|
|
VALUES
|
|
(1,'Sports','Sports related category',1,235.15),
|
|
(2,'Entertaiment','Entertaiment related category',2,235.15),
|
|
(3, 'Home','Home related category',3,235.15),
|
|
(4, 'Kitchen','Kitchen related category',4,235.15),
|
|
(5, 'Garden','Garden related category',5,535.15),
|
|
(6, 'Toys','Toys related category',6,635.15);
|
|
|
|
CREATE TABLE extracategoryinfo (
|
|
extracategoryinfoID int NOT NULL AUTO_INCREMENT,
|
|
CategoryID int NOT NULL,
|
|
MainParentCategoryName varchar(100),
|
|
PRIMARY key (extracategoryinfoID)
|
|
);
|
|
|
|
INSERT INTO extracategoryinfo(extracategoryinfoID, CategoryID, MainParentCategoryName)
|
|
VALUES
|
|
(1,1,'People'),
|
|
(2,2,'People'),
|
|
(3,2,'House'),
|
|
(4,3,'House'),
|
|
(5,1,'People'),
|
|
(6,2,'People'),
|
|
(7,2,'House'),
|
|
(8,3,'House'),
|
|
(9,1,'People'),
|
|
(10,2,'House');
|
|
|
|
## SQL safe updates as 1 will allow to delete only when you use a key column in the wehere clause
|
|
SET SQL_SAFE_UPDATES = 1;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
-->endsql
|
|
|
|
-->echo Delete with In, && operators
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "extracategoryinfoID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 3
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with == operator
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "extracategoryinfoID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Error 1175 expected because of the safe mode = 1
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "MainParentCategoryName"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"People"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Error 1175 expected because of the safe mode = 1
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "MainParentCategoryName"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"House"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 4
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Error 1175 expected because of the safe mode = 1
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "categories"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryIMEI"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
-->endsql
|
|
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -u deletecruduser --password='deletecruduser' --file=$MYSQL_TMP_DIR/mysqlx-delete_sql.tmp 2>&1
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-delete_sql.tmp
|
|
|
|
--echo .
|
|
--echo #---------- START TEST WITH SAFE MODE OFF ----------#
|
|
--echo .
|
|
|
|
## ******************************************
|
|
## 2. Start test with safe mode off |
|
|
## |
|
|
## ******************************************
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-delete_sql_safemode_0.tmp
|
|
-->sql
|
|
USE mysqlxplugin;
|
|
## SQL safe updates as 0 will allow to delete without the need to use a key column
|
|
SET SQL_SAFE_UPDATES = 0;
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
-->endsql
|
|
|
|
-->echo Delete all
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
-->endsql
|
|
|
|
-->sql
|
|
INSERT INTO extracategoryinfo(extracategoryinfoID, CategoryID, MainParentCategoryName)
|
|
VALUES
|
|
(1,1,'People'),
|
|
(2,2,'People'),
|
|
(3,2,'House'),
|
|
(4,3,'House'),
|
|
(5,1,'People'),
|
|
(6,2,'People2'),
|
|
(7,2,'House2'),
|
|
(8,3,'House2'),
|
|
(9,9,'People2'),
|
|
(10,10,'House2'),
|
|
(11,11,'House3'),
|
|
(12,12,'House4'),
|
|
(13,13,'House5'),
|
|
(14,14,'House6');
|
|
-->endsql
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
-->endsql
|
|
|
|
-->echo Delete works ok because of the safe mode = 0
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "MainParentCategoryName"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"People"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with || operator and in
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "MainParentCategoryName"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"House"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 4
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with || operator and not in
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "MainParentCategoryName"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"House"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 8
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
select * from mysqlxplugin.categories;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with != operator
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "categories"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "!="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryIMEI"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.categories;
|
|
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
|
|
INSERT INTO extracategoryinfo(extracategoryinfoID, CategoryID, MainParentCategoryName)
|
|
VALUES
|
|
(9,9,'People'),
|
|
(10,10,'People'),
|
|
(11,11,'People'),
|
|
(12,12,'House'),
|
|
(13,13,'House'),
|
|
(14,14,'House');
|
|
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
-->endsql
|
|
|
|
-->echo Delete with > and < operators
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 11
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 9
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with >= and <= operators
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 14
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 13
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin.extracategoryinfo;
|
|
SHOW STATUS like 'Mysqlx_crud_delete';
|
|
-->endsql
|
|
|
|
-->echo Delete with wrong Schema
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "noavailableschema"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 14
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 13
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Delete with wrong Table
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "notavailabletable"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 14
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "CategoryID"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 13
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Delete with wrong Column
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "extracategoryinfo"
|
|
schema: "mysqlxplugin"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "notavailablecolumn"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 14
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "notavailablecolumn"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 13
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -u deletecruduser --password='deletecruduser' --file=$MYSQL_TMP_DIR/mysqlx-delete_sql_safemode_0.tmp 2>&1
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-delete_sql_safemode_0.tmp
|
|
|
|
|
|
## ******************************************
|
|
## 3. Delete Collection Statements |
|
|
## |
|
|
## ******************************************
|
|
|
|
--echo .
|
|
--echo #---------- START COLLECTION TESTING----------#
|
|
--echo .
|
|
|
|
CREATE SCHEMA mysqlxplugin_coll;
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-delete_collection_CRUD.tmp
|
|
-->stmtadmin create_collection {"schema":"mysqlxplugin_coll","name":"main_collection"}
|
|
-->recvresult
|
|
|
|
-->sql
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "1", "name": "Omar", "Last_Name":"Andrei"}');
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "2", "name": "Alfonso", "Last_Name":"Pavluchenko"}');
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "3", "name": "Rodrigo", "Last_Name":"Kernel"}');
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "4", "name": "Omar", "Last_Name":"Kerball"}');
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "5", "name": "Omar", "Last_Name":"Lopez"}');
|
|
insert into mysqlxplugin_coll.main_collection (doc) values ('{"_id": "6", "name": "Javier", "Last_Name":"Torres"}');
|
|
select * from mysqlxplugin_coll.main_collection;
|
|
-->endsql
|
|
|
|
-->echo Delete collection rows with in Operator and based in ID
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT identifier { name: "_id" }
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"1"}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"3"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin_coll.main_collection;
|
|
-->endsql
|
|
|
|
-->echo Delete collection row with == Operator
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "Last_Name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Pavluchenko"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin_coll.main_collection;
|
|
-->endsql
|
|
|
|
-->echo Delete collection row with != Operator
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "!="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Omar"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin_coll.main_collection;
|
|
-->endsql
|
|
|
|
-->echo Delete collection row with not in Operator
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "Last_Name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Lopez"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select * from mysqlxplugin_coll.main_collection;
|
|
-->endsql
|
|
|
|
-->echo Delete collection wrong schema
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "not_available_schema"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "Last_Name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Lopez"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Delete collection wrong collection
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "not_available_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "Last_Name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Lopez"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- Mysqlx.Error
|
|
-->recv
|
|
|
|
-->echo Delete collection wrong member
|
|
Mysqlx.Crud.Delete {
|
|
collection {
|
|
name: "main_collection"
|
|
schema: "mysqlxplugin_coll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "notavailablemember"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Lopez"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#-- No rows affected
|
|
-->recvresult
|
|
|
|
## Cleanup
|
|
-->echo ================================================================================
|
|
-->echo CLEAN UP
|
|
-->echo ================================================================================
|
|
-->sql
|
|
DROP USER deletecruduser@localhost;
|
|
SET SQL_SAFE_UPDATES = 1;
|
|
-->endsql
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -u deletecruduser --password='deletecruduser' --file=$MYSQL_TMP_DIR/mysqlx-delete_collection_CRUD.tmp 2>&1
|
|
|
|
## Cleanup
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-delete_collection_CRUD.tmp
|
|
DROP SCHEMA if EXISTS mysqlxplugin;
|
|
DROP SCHEMA if EXISTS mysqlxplugin_coll;
|
|
|
|
|