config root man

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

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/t/crud_sundries.test

## Varius tests related to manipulation on json members 

## Preamble
--source ../include/xplugin_preamble.inc

## Test data
DROP SCHEMA IF EXISTS xtest;
CREATE SCHEMA xtest;
USE xtest;
CREATE TABLE xtable (doc JSON);
INSERT INTO xtable (doc) VALUES ('{"a":10, "b":20, "c":"30", "d":"40", "e":"foo", "f":"bar", "g":"2015.10.05"}');

## Test starts here
--write_file $MYSQL_TMP_DIR/crud_sundries.tmp

##-- function concat
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: FUNC_CALL function_call {
        name { name: "concat" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: FUNC_CALL function_call {
        name { name: "concat" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
      }
    }
  }
}
-->recvresult

##-- function concat-in-concat
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: FUNC_CALL function_call {
        name { name: "concat" }
        param {
          type: FUNC_CALL function_call {
            name { name: "concat" }
            param {
              type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
            }
            param {
              type: LITERAL literal { type: V_OCTETS v_octets {value:"-in-"} }
            }
          }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: FUNC_CALL function_call {
        name { name: "concat" }
        param {
          type: FUNC_CALL function_call {
            name { name: "concat" }
            param {
              type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
            }
            param {
              type: LITERAL literal { type: V_OCTETS v_octets {value:"-in-"} }
            }
          }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
      }
    }
  }
}
-->recvresult

##-- function sqrt
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: FUNC_CALL function_call {
        name { name: "sqrt" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "c" } }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: FUNC_CALL function_call {
        name { name: "sqrt" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
      }
    }
  }
}
-->recvresult

##-- function adddate, operator date_add
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "fun"
    source {
      type: FUNC_CALL function_call {
        name { name: "adddate" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "g" } }
        }
        param {
          type: LITERAL literal {type: V_SINT v_signed_int: 3}
        }
      }
    }
  }
  projection {
    alias: "oper"
    source {
      type: OPERATOR operator {
        name: "date_add"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "g" } }
        }
        param {
          type: LITERAL literal {type: V_SINT v_signed_int: 3}
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"DAY"} }
        }
      }
    }
  }
}
-->recvresult

##-- function subdate, operator date_sub
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "fun"
    source {
      type: FUNC_CALL function_call {
        name { name: "subdate" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "g" } }
        }
        param {
          type: LITERAL literal {type: V_SINT v_signed_int: 3}
        }
      }
    }
  }
  projection {
    alias: "oper"
    source {
      type: OPERATOR operator {
        name: "date_sub"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "g" } }
        }
        param {
          type: LITERAL literal {type: V_SINT v_signed_int: 3}
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"DAY"} }
        }
      }
    }
  }
}
-->recvresult

##-- operator cast to number
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "cast"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "d" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"DECIMAL"} }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "cast"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"DECIMAL"} }
        }
      }
    }
  }
}
-->recvresult

##-- operator cast to string
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "cast"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "d" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"CHAR"} }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "cast"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"CHAR"} }
        }
      }
    }
  }
}
-->recvresult

##-- operator in (check member)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 10}
        }
      }
    }
  }
}
-->recvresult

##-- operator in (check literal)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 10}
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
      }
    }
  }
}
-->recvresult

##-- operator between (check member)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "between"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"zoo"} }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "between"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 100}
        }
      }
    }
  }
}
-->recvresult

##-- operator between (check literal)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "string"
    source {
      type: OPERATOR operator {
        name: "between"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"cent"} }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
      }
    }
  }
  projection {
    alias: "number"
    source {
      type: OPERATOR operator {
        name: "between"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 15}
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
      }
    }
  }
}
-->recvresult

##-- operator like, regex (check literal)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "like"
    source {
      type: OPERATOR operator {
        name: "like"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"bar"} }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
      }
    }
  }
  projection {
    alias: "regex"
    source {
      type: OPERATOR operator {
        name: "regexp"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"2015A10B05"} }
        }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "g" } }
        }
      }
    }
  }
}
-->recvresult

##-- operator like, regex (check member)
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "like"
    source {
      type: OPERATOR operator {
        name: "like"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"BAR"} }
        }
      }
    }
  }
  projection {
    alias: "regex"
    source {
      type: OPERATOR operator {
        name: "regexp"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"^f.*"} }
        }
      }
    }
  }
}
-->recvresult

##-- updating with function result
Mysqlx.Crud.Update {
  collection { name: "xtable" schema: "xtest"}
  data_model: TABLE
  operation {
    source { name: 'doc' document_path {type: MEMBER value: 'extra'}
    }
    operation: ITEM_SET
    value: {
      type: FUNC_CALL function_call {
        name { name: "upper" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
      }
    }
  }
  operation {
    source { name: 'doc' document_path {type: MEMBER value: 'sqrt'}
    }
    operation: ITEM_SET
    value: {
      type: FUNC_CALL function_call {
        name { name: "sqrt" }
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" } }
        }
      }
    }
  }
}
-->recvresult
-->sql
SELECT * FROM xtest.xtable;
-->endsql


##-- find number in array of literals
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 2 }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_SINT v_signed_int: 1 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 2 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 3 } }
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 0 }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_SINT v_signed_int: 1 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 2 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 3 } }
          }
        }
      }
    }
  }
}
-->recvresult


##-- find string in array of literals
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }}
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"bar"} }}
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"far"} }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }}
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"bar"} }}
          }
        }
      }
    }
  }
}
-->recvresult


##-- find member (number) in array of literals
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" } }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_SINT v_signed_int: 10 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 20 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 30 } }
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "d" } }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_SINT v_signed_int: 10 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 20 } }
            value {type: LITERAL literal { type: V_SINT v_signed_int: 30 } }
          }
        }
      }
    }
  }
}
-->recvresult


##-- find member (string) in array of literals
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" } }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }}
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"bar"} }}
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "d" } }
        }
        param {
          type: ARRAY array {
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }}
            value {type: LITERAL literal { type: V_OCTETS v_octets {value:"bar"} }}
          }
        }
      }
    }
  }
}
-->recvresult


##-- find number in array of members
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 20 }        
        }
        param {
          type: ARRAY array {
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "c" }}}
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: LITERAL literal { type: V_SINT v_signed_int: 40 }        
        }
        param {
          type: ARRAY array {
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "a" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "b" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "c" }}}
          }
        }
      }
    }
  }
}
-->recvresult


##-- find string in array of members
Mysqlx.Crud.Find {
  collection { name: "xtable" schema: "xtest" }
  data_model: TABLE
  projection {
    alias: "result-in"
    source {
      type: OPERATOR operator {
        name: "in"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"foo"} }
        }
        param {
          type: ARRAY array {
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" }}}
          }
        }
      }
    }
  }
  projection {
    alias: "result-not_in"
    source {
      type: OPERATOR operator {
        name: "not_in"
        param {
          type: LITERAL literal { type: V_OCTETS v_octets {value:"boo"} }
        }
        param {
          type: ARRAY array {
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "e" }}}
            value {type: IDENT identifier { name: "doc" document_path { type: MEMBER value: "f" }}}
          }
        }
      }
    }
  }
}
-->recvresult
EOF

--exec $MYSQLXTEST -uroot --password='' --file=$MYSQL_TMP_DIR/crud_sundries.tmp 2>&1
--remove_file $MYSQL_TMP_DIR/crud_sundries.tmp

## Postamble
DROP SCHEMA IF EXISTS xtest;
UNINSTALL PLUGIN mysqlx;

Man Man