382 lines
16 KiB
Plaintext
382 lines
16 KiB
Plaintext
## Test document updates
|
|
|
|
--source include/xplugin_preamble.inc
|
|
--source include/xplugin_create_user.inc
|
|
|
|
## Test starts here
|
|
--let $xtest_file= $MYSQL_TMP_DIR/update_doc.tmp
|
|
--write_file $xtest_file
|
|
-->quiet
|
|
|
|
-->varlet %LITERAL% type: LITERAL literal
|
|
-->varlet %V_OCTETS% type: V_OCTETS v_octets
|
|
|
|
-->macro Insert %SCHEMA% %NAME% %ROW%
|
|
Mysqlx.Crud.Insert {
|
|
data_model: DOCUMENT
|
|
collection { name: '%NAME%' schema: '%SCHEMA%'}
|
|
row { field { %LITERAL% { %V_OCTETS% { value:'%ROW%' } } } }
|
|
}
|
|
-->recvresult be-quiet
|
|
-->endmacro
|
|
|
|
-->macro Setup %SCHEMA% %NAME% %ROW%
|
|
-->stmtadmin ensure_collection {"schema":"%SCHEMA%", "name":"%NAME%"}
|
|
-->recvresult be-quiet
|
|
-->stmtsql TRUNCATE `%SCHEMA%`.`%NAME%`
|
|
-->recvresult be-quiet
|
|
-->callmacro Insert %SCHEMA% %NAME% %ROW%
|
|
-->endmacro
|
|
|
|
|
|
-->macro Show %SCHEMA% %NAME%
|
|
Mysqlx.Crud.Find {
|
|
collection { name: "%NAME%" schema: "%SCHEMA%" }
|
|
data_model: DOCUMENT
|
|
}
|
|
-->recvresult
|
|
-->endmacro
|
|
|
|
-->macro Assert %SCHEMA% %NAME% %EXPECT%
|
|
Mysqlx.Crud.Find {
|
|
collection { name: "%NAME%" schema: "%SCHEMA%" }
|
|
data_model: DOCUMENT
|
|
}
|
|
-->recvtovar %RESULT% doc
|
|
-->varlet %QUOTED% %EXPECT%
|
|
-->assert_eq %QUOTED% %RESULT%
|
|
-->endmacro
|
|
|
|
|
|
-->macro Update_base %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% %OPERATIONS% %ERROR%
|
|
Mysqlx.Crud.Update {
|
|
collection { schema: '%SCHEMA%' name: '%NAME%' }
|
|
data_model: DOCUMENT
|
|
criteria {
|
|
type: OPERATOR operator {
|
|
name: '%CRITERIA%'
|
|
param { type: IDENT identifier { name: '_id' } }
|
|
param { %LITERAL% { %V_OCTETS% { value: '%CRITERIA_VALUE%' } } }
|
|
}
|
|
}
|
|
%OPERATIONS%
|
|
}
|
|
-->expecterror %ERROR%
|
|
-->recvresult
|
|
-->endmacro
|
|
|
|
|
|
-->macro Update %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% %OPERATION% %TARGET% %VALUE% %ERROR%
|
|
-->callmacro Update_base %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% operation{operation:%OPERATION% source{%TARGET%} value{%VALUE%}} %ERROR%
|
|
-->endmacro
|
|
|
|
-->macro Update_two %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% %OPERATION1% %TARGET1% %VALUE1% %OPERATION2% %TARGET2% %VALUE2% %ERROR%
|
|
-->callmacro Update_base %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% operation{operation:%OPERATION1% source{%TARGET1%} value{%VALUE1%}} operation{operation:%OPERATION2% source{%TARGET2%} value{%VALUE2%}} %ERROR%
|
|
-->endmacro
|
|
|
|
-->macro Update_no_value %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% %OPERATION% %TARGET% %ERROR%
|
|
-->callmacro Update_base %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% operation{operation:%OPERATION% source{%TARGET%}} %ERROR%
|
|
-->endmacro
|
|
|
|
-->macro Update_two_no_value %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% %OPERATION1% %TARGET1% %VALUE1% %OPERATION2% %TARGET2% %ERROR%
|
|
-->callmacro Update_base %SCHEMA% %NAME% %CRITERIA% %CRITERIA_VALUE% operation{operation:%OPERATION1% source{%TARGET1%} value{%VALUE1%}} operation{operation:%OPERATION2% source{%TARGET2%}} %ERROR%
|
|
-->endmacro
|
|
|
|
-->varlet %MEMBER_NAME% document_path { type: MEMBER value: 'name' }
|
|
-->varlet %LEMON% %LITERAL% { %V_OCTETS% { value: 'lemon' } }
|
|
|
|
-->title =Update by ARRAY_APPEND
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ARRAY_APPEND %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": ["banana", "lemon"], "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_ORIGIN% document_path { type: MEMBER value: 'origin' }
|
|
-->varlet %MEMBER_ORIGIN_1% %MEMBER_ORIGIN% document_path { type: ARRAY_INDEX index: 1 }
|
|
-->varlet %BRAZIL% %LITERAL% { %V_OCTETS% { value: 'brazil' } }
|
|
|
|
-->title =Update by ARRAY_INSERT
|
|
-->callmacro Setup xtest coll {"_id": "5", "name": "mango", "price": 0.90, "origin":["mexico", "philippines"]}
|
|
-->callmacro Update xtest coll == 5 ARRAY_INSERT %MEMBER_ORIGIN_1% %BRAZIL% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "5", "name": "mango", "price": 0.9, "origin": ["mexico", "brazil", "philippines"]}
|
|
|
|
|
|
-->title =Update by ARRAY_INSERT (invalid path)
|
|
-->callmacro Setup xtest coll {"_id": "5", "name": "mango", "price": 0.90, "origin":["mexico", "philippines"]}
|
|
-->callmacro Update xtest coll == 5 ARRAY_INSERT %MEMBER_ORIGIN% %BRAZIL% ER_INVALID_JSON_PATH_ARRAY_CELL
|
|
-->callmacro Assert xtest coll {"_id": "5", "name": "mango", "price": 0.9, "origin": ["mexico", "philippines"]}
|
|
|
|
|
|
-->title =Update by ITEM_REPLACE
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "lemon", "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_LOCATION% document_path { type: MEMBER value: 'location' }
|
|
-->varlet %PINEAPPLE% %LITERAL% { %V_OCTETS% { value: 'pineapple' } }
|
|
|
|
-->title =Update by ITEM_REPLACE non-existing member
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %MEMBER_LOCATION% %PINEAPPLE% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->varlet %NULL% %LITERAL% { type: V_NULL }
|
|
|
|
-->title =ITEM_SET to NULL
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_NAME% %NULL% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": null, "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_PRICE% document_path { type: MEMBER value: 'price' }
|
|
-->varlet %LEMON_FOR_FREE% %LITERAL% { %V_OCTETS% { value: 'lemon for free!' } }
|
|
|
|
-->title =Update by ITEM_SET twice
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update_two xtest coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ITEM_SET %MEMBER_PRICE% %LEMON_FOR_FREE% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "lemon", "price": "lemon for free!"}
|
|
|
|
|
|
-->title =Update by ITEM_SET non-existing member
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_LOCATION% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2, "location": "lemon"}
|
|
|
|
|
|
-->title =Update a valid document by _id (from field)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "lemon", "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_ID% document_path { type: MEMBER value: '_id' }
|
|
|
|
-->title =Update document with illegal _id change
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_ID% %LEMON% ER_X_BAD_MEMBER_TO_UPDATE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Update non-existing document
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 666 ITEM_SET %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Update multiple documents
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Insert xtest coll {"_id": "2", "name": "apple", "price": 0.25}
|
|
-->callmacro Insert xtest coll {"_id": "3", "name": "tomato", "price": 1.80}
|
|
-->callmacro Insert xtest coll {"_id": "4", "name": "mango", "price": 3.14}
|
|
-->callmacro Insert xtest coll {"_id": "5", "name": "mango", "price": 0.90, "origin":["mexico","philippines"]}
|
|
-->callmacro Show xtest coll
|
|
-->callmacro Update xtest coll < 5 ITEM_SET %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Show xtest coll
|
|
|
|
|
|
-->title =Update on an invalid schema (bad)
|
|
-->stmtsql CREATE SCHEMA ytest
|
|
-->recvresult
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update ytest coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ER_NO_SUCH_TABLE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
-->stmtsql DROP SCHEMA IF EXISTS ytest
|
|
-->recvresult
|
|
|
|
|
|
-->title =Update on an invalid collection (bad)
|
|
-->callmacro Update xtest no_coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ER_NO_SUCH_TABLE
|
|
|
|
|
|
-->varlet %MEMBER_NAME_COLUMN% %MEMBER_NAME% name:'xfield'
|
|
|
|
-->title =Update member with column (bad)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_NAME_COLUMN% %LEMON% ER_X_BAD_COLUMN_TO_UPDATE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_NAME_TABLE% %MEMBER_NAME% table_name: 'xtable'
|
|
|
|
-->title =Update member with table name (bad)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_NAME_TABLE% %LEMON% ER_X_BAD_COLUMN_TO_UPDATE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->varlet %MEMBER_NAME_SCHEMA% %MEMBER_NAME% schema_name: 'xschema'
|
|
|
|
-->title =Update member with schema name (bad)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %MEMBER_NAME_SCHEMA% %LEMON% ER_X_BAD_COLUMN_TO_UPDATE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Update by SET (not allowed)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 SET %MEMBER_NAME% %LEMON% ER_X_BAD_TYPE_OF_UPDATE
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Update by ITEM_REMOVE
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update_no_value xtest coll == 1 ITEM_REMOVE %MEMBER_NAME% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "price": 1.2}
|
|
|
|
|
|
-->title =Multiple chained operations
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update_two_no_value xtest coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ITEM_REMOVE %MEMBER_PRICE% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "lemon"}
|
|
|
|
|
|
-->varlet %ROOT_EMPTY%
|
|
-->varlet %DOC_WITHOUT_ID% %LITERAL% { %V_OCTETS% { value: '{"one":1, "two":"foo"}' content_type: 2 } }
|
|
|
|
-->title =Merge with another document
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_EMPTY% %DOC_WITHOUT_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->varlet %DOC_WITH_ID% %LITERAL% { %V_OCTETS% { value: '{"three":3, "four":"bar", "_id":"666"}' content_type: 2 } }
|
|
|
|
-->title =Merge with another document containing _id
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_EMPTY% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "name": "banana", "price": 1.2, "three": 3}
|
|
|
|
|
|
-->varlet %ROOT_MEMBER% document_path { type: MEMBER }
|
|
|
|
-->title =Merge with another document containing _id (differ root)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_MEMBER% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "name": "banana", "price": 1.2, "three": 3}
|
|
|
|
|
|
-->title =Set item and merge with another document
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update_two xtest coll == 1 ITEM_SET %MEMBER_NAME% %LEMON% ITEM_MERGE %ROOT_MEMBER% %DOC_WITHOUT_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo", "name": "lemon", "price": 1.2}
|
|
|
|
|
|
-->title =Merge with another document and set item
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update_two xtest coll == 1 ITEM_MERGE %ROOT_MEMBER% %DOC_WITHOUT_ID% ITEM_SET %MEMBER_NAME% %LEMON% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo", "name": "lemon", "price": 1.2}
|
|
|
|
|
|
-->title =Merge with NULL
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_MEMBER% %NULL% ER_X_DOC_ID_MISSING
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->varlet %ARRAY% %LITERAL% { %V_OCTETS% { value: '[1,2,3]' } }
|
|
|
|
-->title =Merge with non-document
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_MEMBER% %ARRAY% ER_X_DOC_ID_MISSING
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Merge with two documents
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Show xtest coll
|
|
-->callmacro Update_two xtest coll == 1 ITEM_MERGE %ROOT_EMPTY% %DOC_WITH_ID% ITEM_MERGE %ROOT_EMPTY% %DOC_WITHOUT_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo", "four": "bar", "name": "banana", "price": 1.2, "three": 3}
|
|
|
|
|
|
-->title =Merge with numeric literal
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %ROOT_EMPTY% %LEMON% ER_X_BAD_UPDATE_DATA
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Replace entire document (by empty source)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %ROOT_EMPTY% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "three": 3}
|
|
|
|
|
|
-->title =Replace entire document (by member)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %ROOT_MEMBER% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "three": 3}
|
|
|
|
|
|
-->title =Replace entire document, no _id (by member)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %ROOT_MEMBER% %DOC_WITHOUT_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo"}
|
|
|
|
|
|
-->title =Replace entire document by NULL
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_REPLACE %ROOT_MEMBER% %NULL% ER_X_DOC_ID_MISSING
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Set entire document (by empty source)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %ROOT_EMPTY% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "three": 3}
|
|
|
|
|
|
-->title =Set entire document (by member)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %ROOT_MEMBER% %DOC_WITH_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "four": "bar", "three": 3}
|
|
|
|
|
|
-->title =Set entire document, no _id (by member)
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Show xtest coll
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %ROOT_MEMBER% %DOC_WITHOUT_ID% ER_SUCCESS
|
|
-->callmacro Assert xtest coll {"_id": "1", "one": 1, "two": "foo"}
|
|
|
|
|
|
-->title =Set entire document to NULL
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_SET %ROOT_MEMBER% %NULL% ER_X_DOC_ID_MISSING
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Merge literal to member
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %MEMBER_NAME% %LEMON% ER_X_BAD_UPDATE_DATA
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Merge document to sub-document
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": {"one": 3.4}, "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %MEMBER_NAME% %DOC_WITHOUT_ID% ER_X_BAD_UPDATE_DATA
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": {"one": 3.4}, "price": 1.2}
|
|
|
|
|
|
-->title =Merge document to member
|
|
-->callmacro Setup xtest coll {"_id": "1", "name": "banana", "price": 1.20}
|
|
-->callmacro Update xtest coll == 1 ITEM_MERGE %MEMBER_NAME% %DOC_WITHOUT_ID% ER_X_BAD_UPDATE_DATA
|
|
-->callmacro Assert xtest coll {"_id": "1", "name": "banana", "price": 1.2}
|
|
|
|
|
|
-->title =Merge document to member of array
|
|
-->callmacro Setup xtest coll {"_id": "2", "origin": ["mexico", {"philippines": true}]}
|
|
-->callmacro Update xtest coll == 2 ITEM_MERGE %MEMBER_ORIGIN_1% %DOC_WITHOUT_ID% ER_X_BAD_UPDATE_DATA
|
|
-->callmacro Assert xtest coll {"_id": "2", "origin": ["mexico", {"philippines": true}]}
|
|
|
|
|
|
EOF
|
|
|
|
CREATE SCHEMA xtest;
|
|
|
|
--exec $MYSQLXTEST -ux_root --password='' --file=$xtest_file 2>&1
|
|
|
|
## Cleanup
|
|
DROP SCHEMA IF EXISTS xtest;
|
|
--remove_file $xtest_file
|
|
--source include/xplugin_drop_user.inc
|