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/update_table.test

--source ../include/xplugin_preamble.inc
CREATE DATABASE `ytest`;

## Test starts here
--let $xtest_file= $MYSQL_TMP_DIR/update_table.tmp
--write_file $xtest_file
-->quiet
-->sql
drop schema if exists xtest;
create schema xtest;
create table xtest.xtable_ (id int primary key, name varchar(40), price decimal(5,2));
insert into xtest.xtable_ values (1, 'banana', 1.20);
insert into xtest.xtable_ values (2, 'apple', 0.25);
insert into xtest.xtable_ values (3, 'tomato', 1.80);
insert into xtest.xtable_ values (4, 'mango', 3.14);
insert into xtest.xtable_ values (5, 'orange', 0.90);


drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update a valid row
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "name"
        }
      }
      param {
        type: LITERAL
        literal {
          type: V_OCTETS
          v_octets {value:"banana"}
        }
      }
    }
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update non-existing row
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: "=="
      param {
        type: IDENT
        identifier {
          name: "name"
        }
      }
      param {
        type: LITERAL
        literal {
          type: V_OCTETS
          v_octets {value:"lemon"}
        }
      }
    }
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update multiple rows
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          name: "price"
        }
      }
      param {
        type: LITERAL
        literal {
          type: V_DOUBLE
          v_double: 1.0
        }
      }
    }
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update all rows (no criteria)
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update two first rows in desc order
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          name: "price"
        }
      }
      param {
        type: LITERAL
        literal {
          type: V_DOUBLE
          v_double: 1.0
        }
      }
    }
  }
  limit {
    row_count: 2
  }
  order {
    expr {
      type: IDENT
      identifier {
        name: "price"
      }
    }
    direction: DESC
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update non-existing column
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "noname"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 1054
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update on a table with expression on invalid columns
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  criteria {
    type: OPERATOR
    operator {
      name: ">"
      param {
        type: IDENT
        identifier {
          name: "noprice"
        }
      }
      param {
        type: LITERAL
        literal {
          type: V_DOUBLE
          v_double: 1.0
        }
      }
    }
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 1054
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update with empty operations type
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
}
-->expecterror 5050
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update source column with table
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: ""
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 5052
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update source column with table
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
      table_name: "xtable"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 5052
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update source column with table and schema
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
      table_name: "xtable"
      schema_name: "xschema"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 5052
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update on an invalid schema
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "ytest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->expecterror 1146
-->recvresult


-->sql
select * from xtest.xtable;
drop table if exists xtest.xtable;
create table xtest.xtable as select * from xtest.xtable_;
-->endsql

-->echo Rel: Update on an invalid collection
Mysqlx.Crud.Update {
  collection {
    name: "ytable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}

-->expecterror 1146
-->recvresult

-->sql
select * from xtest.xtable;
-->endsql


-->echo Rel: Update one field twice
Mysqlx.Crud.Update {
  collection {
    name: "xtable"
    schema: "xtest"
  }
  data_model: TABLE
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "carrot"
        }
      }
    }
  }
  operation {
    source {
      name: "name"
    }
    operation: SET
    value {
      type: LITERAL
      literal {
        type: V_STRING
        v_string {
          value: "lemon"
        }
      }
    }
  }
}
-->recvresult

-->sql
select * from xtest.xtable;
-->endsql

EOF

--exec $MYSQLXTEST -uroot --password='' --file=$xtest_file 2>&1
--remove_file $xtest_file

## Postamble
drop schema ytest;
drop schema xtest;
uninstall plugin mysqlx;

Man Man