1289 lines
24 KiB
Plaintext
1289 lines
24 KiB
Plaintext
########### ../t/find_crud_conditionalclauses_o.test #######
|
|
### #
|
|
### This test runs aims to run FIND operation statements #
|
|
### variant with mysqlxtest client for Table and Document data models. #
|
|
### Test covers #
|
|
### - find with different operators #
|
|
### - find with metadata result #
|
|
### - find with limit (row count and offset) #
|
|
### - find with Order Asc/Desc #
|
|
### #
|
|
########################################################################
|
|
#
|
|
|
|
--echo ==============================================
|
|
--echo CRUD FIND CONDITIONAL CLAUSES SCENARIOS
|
|
--echo ==============================================
|
|
--echo
|
|
|
|
--echo ================================================================================
|
|
--echo PREAMBLE
|
|
--echo ================================================================================
|
|
--source include/xplugin_preamble.inc
|
|
create user crudfinduser@localhost identified by 'crudfinduser';
|
|
grant all on *.* to crudfinduser@localhost;
|
|
|
|
## TEST STARTS HERE
|
|
--echo ================================================================================
|
|
--echo TEST START
|
|
--echo ================================================================================
|
|
--write_file $MYSQL_TMP_DIR/find_crud_table.tmp
|
|
-->sql
|
|
DROP SCHEMA if EXISTS minisakila;
|
|
CREATE SCHEMA minisakila;
|
|
USE minisakila;
|
|
|
|
CREATE TABLE actor (
|
|
actor_id int unsigned NOT NULL AUTO_INCREMENT,
|
|
first_name varchar(45) NOT NULL,
|
|
last_name varchar(45) NOT NULL,
|
|
is_active bit(1) NOT NULL,
|
|
PRIMARY KEY (actor_id)
|
|
);
|
|
|
|
INSERT INTO actor VALUES
|
|
(NULL,'Victor','Otero',true),
|
|
(NULL,'Gonzalo','Crhystens',false),
|
|
(NULL,'Abraham','Vega',true),
|
|
(NULL,'Jennifer','Leon',false),
|
|
(NULL,'Jhonny','Test',true);
|
|
-->endsql
|
|
|
|
-->echo Table based scenarios
|
|
|
|
-->echo Find all the rows including all the metadata
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
}
|
|
|
|
## expect Mysqlx.Sql.ColumnMetaData
|
|
-->recv
|
|
## expect Mysqlx.Sql.ColumnMetaData
|
|
-->recv
|
|
## expect Mysqlx.Sql.ColumnMetaData
|
|
-->recv
|
|
## expect Mysqlx.Sql.ColumnMetaData
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.CursorFetchDone
|
|
-->recv
|
|
## expect Mysqlx.Sql.StmtExecuteOk
|
|
-->recv
|
|
|
|
-->echo Find all the rows without the metadata
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find with limit row count and offset
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
limit {
|
|
row_count:1
|
|
offset:3
|
|
}
|
|
}
|
|
# From third row only one row
|
|
-->recvresult
|
|
|
|
-->echo Find with limit row count
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
limit {
|
|
row_count:4
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with == Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with != Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "!="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with like Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%on%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with && and like Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%on%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "last_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%ns%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with || and in Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%ham%"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with not_in Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 2
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%ham%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with &&, <= and >= Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 4
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 2
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with &&, < and > Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "<"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 4
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: ">"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 2
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with like Operator using string
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string
|
|
{
|
|
value: "%on%"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with != Operator with order desc
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "!="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "Omar"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
order {
|
|
expr {
|
|
type: IDENT
|
|
identifier {
|
|
name: "last_name"
|
|
}
|
|
}
|
|
direction: DESC
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with != Operator with order asc
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "!="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "first_name"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "Omar"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
order {
|
|
expr {
|
|
type: IDENT
|
|
identifier {
|
|
name: "last_name"
|
|
}
|
|
}
|
|
direction: ASC
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
## Negative test scenarios for Table
|
|
-->echo Find using not available schema name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "noavailableschema"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror 1049
|
|
-->recvresult
|
|
|
|
-->echo Find using not available table name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "notavailableatable"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "actor_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror 1146
|
|
-->recvresult
|
|
|
|
-->echo Find using not available column name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "actor"
|
|
schema: "minisakila"
|
|
}
|
|
data_model: TABLE
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "notavailablecolumn"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 1
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror 1054
|
|
-->recvresult
|
|
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -u crudfinduser --password='crudfinduser' --file=$MYSQL_TMP_DIR/find_crud_table.tmp 2>&1
|
|
--remove_file $MYSQL_TMP_DIR/find_crud_table.tmp
|
|
|
|
|
|
--write_file $MYSQL_TMP_DIR/find_crud_coll.tmp
|
|
CREATE SCHEMA mysqlxcoll;
|
|
|
|
-->stmtadmin create_collection {"schema":"mysqlxcoll","name":"maincoll"}
|
|
-->recvresult
|
|
|
|
USE mysqlxcoll;
|
|
|
|
INSERT INTO maincoll (doc) values
|
|
('{"_id": "1", "name": "Victor", "last_name": "Otero","amount": 4.99}'),
|
|
('{"_id": "2", "name": "Gonzalo", "last_name": "Crhystens","amount": 120.57}'),
|
|
('{"_id": "3", "name": "Abraham", "last_name": "Vega","amount": 74.56}'),
|
|
('{"_id": "4", "name": "Jennifer", "last_name": "Leon","amount": 387.14}'),
|
|
('{"_id": "5", "name": "Jhonny", "last_name": "Test","amount": 125.45}');
|
|
|
|
|
|
-->echo Collection based scenarios
|
|
-->echo Find all the rows including all metadata
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
}
|
|
## expect Mysqlx.Sql.ColumnMetaData
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.Row
|
|
-->recv
|
|
## expect Mysqlx.Sql.ResultFetchDone
|
|
-->recv
|
|
## expect Mysqlx.Sql.StmtExecuteOk
|
|
-->recv
|
|
|
|
-->echo Find all the rows without all metadata
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find with limit row count and offset
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
limit{
|
|
row_count:2
|
|
offset:3
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find with limit row count
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
limit{
|
|
row_count:3
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with == Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"1"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with != Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
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:"Jhonny"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with like Operator
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%er%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with && and like Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: "like"
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%er%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: "like"
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "last_name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"%on%"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with || and in Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "||"
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: "in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
name: "_id"
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 3
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: 4
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "like"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "name"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"Gonzalo"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with not_in Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_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:"2"}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"3"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with &&, <= and >= Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: "<="
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "amount"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 120.57
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: ">="
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "amount"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 4.99
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find specific row with &&, < and > Operators
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "&&"
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: "<"
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "amount"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 120.57
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: OPERATOR
|
|
operator{
|
|
name: ">"
|
|
param{
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "amount"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 4.99
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->echo Find with not available schema name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "notavailableschema"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "not_in"
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "=="
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"1"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror 1049
|
|
-->recvresult
|
|
|
|
-->echo Find with not available table name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "notavailabletable"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT identifier { name: "_id" }
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"1"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror 1146
|
|
-->recvresult
|
|
|
|
-->echo Find with not available column name
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "maincoll"
|
|
schema: "mysqlxcoll"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
document_path {
|
|
type: MEMBER
|
|
value: "notavailablecolumn"
|
|
}
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value:"1"}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
## Cleanup
|
|
-->echo ================================================================================
|
|
-->echo CLEAN UP
|
|
-->echo ================================================================================
|
|
-->sql
|
|
DROP SCHEMA IF EXISTS minisakila;
|
|
DROP SCHEMA IF EXISTS mysqlxcoll;
|
|
DROP USER crudfinduser@localhost;
|
|
-->endsql
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -u crudfinduser --password='crudfinduser' --file=$MYSQL_TMP_DIR/find_crud_coll.tmp 2>&1
|
|
|
|
## Cleanup
|
|
--remove_file $MYSQL_TMP_DIR/find_crud_coll.tmp
|
|
|