config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/x/r/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : /home/usr.opt/mysql57/mysql-test/suite/x/r/crud_doc_criteria_args.result

=============================================
CRUD DOC CRITERIA ARGS SCENARIOS
=============================================

================================================================================
PREAMBLE
================================================================================
install plugin mysqlx soname "mysqlx.so";
call mtr.add_suppression("Plugin mysqlx reported: .Failed at SSL configuration: .SSL context is not usable without certificate and private key..");
call mtr.add_suppression("Plugin mysqlx reported: .SSL_CTX_load_verify_locations failed.");
================================================================================
TEST START
================================================================================
RUN drop schema if exists xtest

0 rows affected
RUN create schema xtest

1 rows affected
RUN use xtest

0 rows affected
RUN create table mycoll (doc JSON, _id VARCHAR(32) NOT NULL PRIMARY KEY)

0 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "1", "name": "Robb", "amount": 125.21}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "2", "name": "Bran", "amount": 542.75}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "3", "name": "Arya", "amount": 98.89}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "4", "name": "Tassadar", "amount": 57.52}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "5", "name": "Sansa", "amount": null}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Robb", "amount": 125.21}	1
{"_id": "2", "name": "Bran", "amount": 542.75}	2
{"_id": "3", "name": "Arya", "amount": 98.89}	3
{"_id": "4", "name": "Tassadar", "amount": 57.52}	4
{"_id": "5", "name": "Sansa", "amount": null}	5
0 rows affected
Find with > Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}

doc
{"_id": "1", "name": "Robb", "amount": 125.21}
{"_id": "2", "name": "Bran", "amount": 542.75}
command ok
Find with < Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "<"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}

doc
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "5", "name": "Sansa", "amount": null}
command ok
Find with >= Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}

doc
{"_id": "1", "name": "Robb", "amount": 125.21}
{"_id": "2", "name": "Bran", "amount": 542.75}
{"_id": "3", "name": "Arya", "amount": 98.89}
command ok
Find with <= Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "<="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}

doc
{"_id": "3", "name": "Arya", "amount": 98.89}
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "5", "name": "Sansa", "amount": null}
command ok
Find with <= Operator, placeholder and Order desc
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "!="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  order {
    expr {
      type: IDENT
      identifier {
        name: "_id"
      }
    }
    direction: DESC
  }
  args {
    type: V_DOUBLE
    v_double: 0
  }
}

doc
{"_id": "5", "name": "Sansa", "amount": null}
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "3", "name": "Arya", "amount": 98.89}
{"_id": "2", "name": "Bran", "amount": 542.75}
{"_id": "1", "name": "Robb", "amount": 125.21}
command ok
Find with <= Operator, placeholder and Order asc
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "!="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  order {
    expr {
      type: IDENT
      identifier {
        name: "_id"
      }
    }
    direction: ASC
  }
  args {
    type: V_DOUBLE
    v_double: 0
  }
}

doc
{"_id": "1", "name": "Robb", "amount": 125.21}
{"_id": "2", "name": "Bran", "amount": 542.75}
{"_id": "3", "name": "Arya", "amount": 98.89}
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "5", "name": "Sansa", "amount": null}
command ok
Find with == Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "Robb"
    }
  }
}

doc
{"_id": "1", "name": "Robb", "amount": 125.21}
command ok
Find with != Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "!="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "Robb"
    }
  }
}

doc
{"_id": "2", "name": "Bran", "amount": 542.75}
{"_id": "3", "name": "Arya", "amount": 98.89}
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "5", "name": "Sansa", "amount": null}
command ok
Find with in Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "in"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "_id"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "3"
    }
  }
}

doc
{"_id": "3", "name": "Arya", "amount": 98.89}
command ok
Find with not_in Operator and placeholder
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "not_in"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "_id"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "3"
    }
  }
}

doc
{"_id": "1", "name": "Robb", "amount": 125.21}
{"_id": "2", "name": "Bran", "amount": 542.75}
{"_id": "4", "name": "Tassadar", "amount": 57.52}
{"_id": "5", "name": "Sansa", "amount": null}
command ok
Update with == operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "Update_=="
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}


1 rows affected
Rows matched: 1  Changed: 1  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Robb", "amount": 125.21}	1
{"_id": "2", "name": "Bran", "amount": 542.75}	2
{"_id": "3", "name": "Update_==", "amount": 98.89}	3
{"_id": "4", "name": "Tassadar", "amount": 57.52}	4
{"_id": "5", "name": "Sansa", "amount": null}	5
0 rows affected
Update with > operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "Update_>"
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}


2 rows affected
Rows matched: 2  Changed: 2  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Update_>", "amount": 125.21}	1
{"_id": "2", "name": "Update_>", "amount": 542.75}	2
{"_id": "3", "name": "Update_==", "amount": 98.89}	3
{"_id": "4", "name": "Tassadar", "amount": 57.52}	4
{"_id": "5", "name": "Sansa", "amount": null}	5
0 rows affected
Update with >= operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "Update_>="
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}


3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Update_>=", "amount": 125.21}	1
{"_id": "2", "name": "Update_>=", "amount": 542.75}	2
{"_id": "3", "name": "Update_>=", "amount": 98.89}	3
{"_id": "4", "name": "Tassadar", "amount": 57.52}	4
{"_id": "5", "name": "Sansa", "amount": null}	5
0 rows affected
Update with <= operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "<="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "Update_<="
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 98.89
  }
}


3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Update_>=", "amount": 125.21}	1
{"_id": "2", "name": "Update_>=", "amount": 542.75}	2
{"_id": "3", "name": "Update_<=", "amount": 98.89}	3
{"_id": "4", "name": "Update_<=", "amount": 57.52}	4
{"_id": "5", "name": "Update_<=", "amount": null}	5
0 rows affected
Update with Float operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "amount"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_FLOAT
        v_float: 256.51
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "Update_<="
    }
  }
}


3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Update_>=", "amount": 125.21}	1
{"_id": "2", "name": "Update_>=", "amount": 542.75}	2
{"_id": "3", "name": "Update_<=", "amount": 256.51}	3
{"_id": "4", "name": "Update_<=", "amount": 256.51}	4
{"_id": "5", "name": "Update_<=", "amount": 256.51}	5
0 rows affected
Update with Double operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "amount"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_DOUBLE
        v_double: 256.51
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "Update_>="
    }
  }
}


2 rows affected
Rows matched: 2  Changed: 2  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "Update_>=", "amount": 256.51}	1
{"_id": "2", "name": "Update_>=", "amount": 256.51}	2
{"_id": "3", "name": "Update_<=", "amount": 256.51}	3
{"_id": "4", "name": "Update_<=", "amount": 256.51}	4
{"_id": "5", "name": "Update_<=", "amount": 256.51}	5
0 rows affected
Update with String operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "amount"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "watermelon"
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 256.51
  }
}


5 rows affected
Rows matched: 5  Changed: 5  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon", "amount": 256.51}	1
{"_id": "2", "name": "watermelon", "amount": 256.51}	2
{"_id": "3", "name": "watermelon", "amount": 256.51}	3
{"_id": "4", "name": "watermelon", "amount": 256.51}	4
{"_id": "5", "name": "watermelon", "amount": 256.51}	5
0 rows affected
Update with Null operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "amount"
      }
    }
    operation: ITEM_SET
    value {
      type: LITERAL
      literal {
        type: V_NULL
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "watermelon"
    }
  }
}


5 rows affected
Rows matched: 5  Changed: 5  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon", "amount": null}	1
{"_id": "2", "name": "watermelon", "amount": null}	2
{"_id": "3", "name": "watermelon", "amount": null}	3
{"_id": "4", "name": "watermelon", "amount": null}	4
{"_id": "5", "name": "watermelon", "amount": null}	5
0 rows affected
Update with ITEM_REPLACE operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_REPLACE
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "watermelon_replace"
        }
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "watermelon"
    }
  }
}


5 rows affected
Rows matched: 5  Changed: 5  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "2", "name": "watermelon_replace", "amount": null}	2
{"_id": "3", "name": "watermelon_replace", "amount": null}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
0 rows affected
Update with ITEM_REMOVE operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "_id"
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "name"
      }
    }
    operation: ITEM_REMOVE
  }
  args {
    type: V_DOUBLE
    v_double: 3
  }
}


1 rows affected
Rows matched: 1  Changed: 1  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "2", "name": "watermelon_replace", "amount": null}	2
{"_id": "3", "amount": null}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
0 rows affected
Update with ARRAY_APPEND operator and placeholder
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "_id"
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "amount"
      }
    }
    operation: ARRAY_APPEND
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "Update_ArrayAppend"
        }
      }
    }
  }
  args {
    type: V_DOUBLE
    v_double: 3
  }
}


1 rows affected
Rows matched: 1  Changed: 1  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "2", "name": "watermelon_replace", "amount": null}	2
{"_id": "3", "amount": [null, "Update_ArrayAppend"]}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
0 rows affected
Update with ITEM_MERGE value and placeholder 
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "_id"
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      name: "doc"
    }
    operation: ITEM_MERGE
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "{\"third\":3.0, \"fourth\": \"four\"}"
        }
      }
    }
  }
  args {
    type: V_UINT
    v_unsigned_int: 2
  }
}


1 rows affected
Rows matched: 1  Changed: 1  Warnings: 1
Warnings generated:
WARNING | 1287 | 'JSON_MERGE' is deprecated and will be removed in a future release. Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "2", "name": "watermelon_replace", "third": 3, "amount": null, "fourth": "four"}	2
{"_id": "3", "amount": [null, "Update_ArrayAppend"]}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
0 rows affected
RUN insert into mycoll (doc, _id) values ('{"_id": "6", "third": ["two"]}', json_unquote(json_extract(doc, '$._id')))

1 rows affected
Update with ARRAY_INSERT value and placeholder 
send Mysqlx.Crud.Update {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "_id"
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  operation {
    source {
      document_path {
        type: MEMBER
        value: "third"
      }
      document_path {
        type: ARRAY_INDEX
        index: 0
      }
      name: "doc"
    }
    operation: ARRAY_INSERT
    value {
      type: LITERAL
      literal {
        type: V_OCTETS
        v_octets {
          value: "two.1"
        }
      }
    }
  }
  args {
    type: V_UINT
    v_unsigned_int: 6
  }
}


1 rows affected
Rows matched: 1  Changed: 1  Warnings: 0
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "2", "name": "watermelon_replace", "third": 3, "amount": null, "fourth": "four"}	2
{"_id": "3", "amount": [null, "Update_ArrayAppend"]}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
{"_id": "6", "third": ["two.1", "two"]}	6
0 rows affected
Delete with == operator and placeholder
send Mysqlx.Crud.Delete {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "_id"
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_SINT
    v_signed_int: 2
  }
}


1 rows affected
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "1", "name": "watermelon_replace", "amount": null}	1
{"_id": "3", "amount": [null, "Update_ArrayAppend"]}	3
{"_id": "4", "name": "watermelon_replace", "amount": null}	4
{"_id": "5", "name": "watermelon_replace", "amount": null}	5
{"_id": "6", "third": ["two.1", "two"]}	6
0 rows affected
Delete with != operator and placeholder
send Mysqlx.Crud.Delete {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: "!="
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 0
      }
    }
  }
  args {
    type: V_STRING
    v_string {
      value: "Update_<="
    }
  }
}


3 rows affected
RUN SELECT * FROM xtest.mycoll
doc	_id
{"_id": "3", "amount": [null, "Update_ArrayAppend"]}	3
{"_id": "6", "third": ["two.1", "two"]}	6
0 rows affected
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 1
      }
    }
  }
  args {
    type: V_OCTETS
    v_octets {
      value: "Jon"
    }
  }
}

Got expected error: Invalid value of placeholder (code 5154)
send Mysqlx.Crud.Find {
  collection {
    name: "mycoll"
    schema: "xtest"
  }
  data_model: DOCUMENT
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          document_path {
            type: MEMBER
            value: "name"
          }
        }
      }
      param {
        type: PLACEHOLDER
        position: 1
      }
    }
  }
}

Got expected error: Invalid value of placeholder (code 5154)
================================================================================
CLEAN UP
================================================================================
RUN drop schema if exists xtest

1 rows affected
Mysqlx.Ok {
  msg: "bye!"
}
ok
================================================================================
POSTAMBLE
================================================================================
uninstall plugin mysqlx;

Man Man