85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
## Doc: Find using docpaths in expression
|
|
--source include/xplugin_preamble.inc
|
|
--source include/xplugin_create_user.inc
|
|
|
|
CREATE SCHEMA xtest DEFAULT CHARSET 'utf8mb4';
|
|
|
|
## Test starts here
|
|
--write_file $MYSQL_TMP_DIR/crud_find_doc_criteria.tmp
|
|
## Test data
|
|
-->quiet
|
|
|
|
-->stmtadmin create_collection {"schema":"xtest","name":"xcoll"}
|
|
-->recvresult
|
|
|
|
-->sql
|
|
INSERT INTO xtest.xcoll (doc) VALUES ('{"_id": "1", "name": "Anabel"}');
|
|
CREATE TABLE xtest.ycoll (ydoc JSON, _id VARBINARY(16) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(ydoc, '$._id'))) STORED PRIMARY KEY);
|
|
INSERT INTO xtest.ycoll (ydoc) VALUES ('{"_id": "1", "name": "Anabel"}');
|
|
CREATE TABLE xtest.zcoll (doc JSON, _zid VARBINARY(16) GENERATED ALWAYS AS (JSON_UNQUOTE(JSON_EXTRACT(doc, '$._id'))) STORED PRIMARY KEY);
|
|
INSERT INTO xtest.zcoll (doc) VALUES ('{"_id": "1", "name": "Anabel"}');
|
|
-->endsql
|
|
|
|
-->macro Find_value %COLL% %IDENT% %VALUE% %ERROR%
|
|
Mysqlx.Crud.Find {
|
|
collection {
|
|
name: "%COLL%"
|
|
schema: "xtest"
|
|
}
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR
|
|
operator {
|
|
name: "=="
|
|
param {
|
|
type: IDENT
|
|
identifier {
|
|
%IDENT%
|
|
}
|
|
}
|
|
param {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_OCTETS
|
|
v_octets {value: "%VALUE%"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->expecterror %ERROR%
|
|
-->recvresult
|
|
-->endmacro
|
|
|
|
-->title * xcoll is corect collection
|
|
-->callmacro Find_value xcoll name:"_id" 1 ER_SUCCESS
|
|
-->callmacro Find_value xcoll name:"_id" no_data ER_SUCCESS
|
|
-->callmacro Find_value xcoll name:"doc" no_data ER_SUCCESS
|
|
-->callmacro Find_value xcoll document_path{type:MEMBER value:"name"} Anabel ER_SUCCESS
|
|
-->callmacro Find_value xcoll document_path{type:MEMBER value:"name"} no_data ER_SUCCESS
|
|
-->callmacro Find_value xcoll name:"name" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
|
|
-->title * ycoll is not corect collection; missing `doc` column
|
|
-->callmacro Find_value ycoll name:"_id" 1 ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value ycoll name:"_id" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value ycoll name:"doc" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value ycoll document_path{type:MEMBER value:"name"} Anabel ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value ycoll document_path{type:MEMBER value:"name"} no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value ycoll name:"name" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
|
|
-->title * zcoll is not corect collection; missing `_id` column
|
|
-->callmacro Find_value zcoll name:"_id" 1 ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value zcoll name:"_id" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
-->callmacro Find_value zcoll name:"doc" no_data ER_SUCCESS
|
|
-->callmacro Find_value zcoll document_path{type:MEMBER value:"name"} Anabel ER_SUCCESS
|
|
-->callmacro Find_value zcoll document_path{type:MEMBER value:"name"} no_data ER_SUCCESS
|
|
-->callmacro Find_value zcoll name:"name" no_data ER_X_DOC_REQUIRED_FIELD_MISSING
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -ux_root --password='' --file=$MYSQL_TMP_DIR/crud_find_doc_criteria.tmp 2>&1
|
|
|
|
## Cleanup
|
|
DROP SCHEMA IF EXISTS xtest;
|
|
--remove_file $MYSQL_TMP_DIR/crud_find_doc_criteria.tmp
|
|
--source include/xplugin_drop_user.inc
|