541 lines
8.1 KiB
Plaintext
541 lines
8.1 KiB
Plaintext
## generated
|
|
## Rel: Insert 0 rows
|
|
|
|
--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/insert_table_empty.tmp
|
|
## Test data
|
|
-->sql
|
|
use xtest;
|
|
create table simpletable (id int auto_increment primary key, value int);
|
|
create table mytable (i int NOT NULL, ui int unsigned, vc varchar(100), f float, d double, dt datetime, ts timestamp(5), j json);
|
|
-->endsql
|
|
|
|
## Insert nothing (to get an error)
|
|
Mysqlx.Crud.Insert {
|
|
collection {
|
|
name: "mytable"
|
|
schema: "xtest"
|
|
}
|
|
data_model: TABLE
|
|
projection {
|
|
name: "i"
|
|
}
|
|
projection {
|
|
name: "ui"
|
|
}
|
|
projection {
|
|
name: "vc"
|
|
}
|
|
projection {
|
|
name: "f"
|
|
}
|
|
projection {
|
|
name: "d"
|
|
}
|
|
projection {
|
|
name: "dt"
|
|
}
|
|
projection {
|
|
name: "ts"
|
|
}
|
|
projection {
|
|
name: "j"
|
|
}
|
|
}
|
|
## expect Mysqlx.Error
|
|
-->recv
|
|
|
|
-->sql
|
|
select count(*) from xtest.mytable;
|
|
truncate table xtest.mytable;
|
|
-->endsql
|
|
|
|
## Insert wrong type values
|
|
Mysqlx.Crud.Insert {
|
|
collection {
|
|
name: "mytable"
|
|
schema: "xtest"
|
|
}
|
|
data_model: TABLE
|
|
projection {
|
|
name: "i"
|
|
}
|
|
projection {
|
|
name: "ui"
|
|
}
|
|
projection {
|
|
name: "vc"
|
|
}
|
|
projection {
|
|
name: "f"
|
|
}
|
|
projection {
|
|
name: "d"
|
|
}
|
|
projection {
|
|
name: "dt"
|
|
}
|
|
projection {
|
|
name: "ts"
|
|
}
|
|
projection {
|
|
name: "j"
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: -100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_UINT
|
|
v_unsigned_int: 100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: ""
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_FLOAT
|
|
v_float: 0.333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 0.333333333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-05-05 1:20:30"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-06-06 03:10:20.12345"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "{\"name\":\"Me\"}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_NULL
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_UINT
|
|
v_unsigned_int: 50
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "new\'string"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_FLOAT
|
|
v_float: 0
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 1
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2000-1-1 1:1:1"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "1999-2-2 2:2:2.22222"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_NULL
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
## expect Mysqlx.Error
|
|
-->recv
|
|
|
|
-->sql
|
|
select count(*) from xtest.mytable;
|
|
truncate table xtest.mytable;
|
|
-->endsql
|
|
|
|
|
|
## valid cases
|
|
-->echo Valid cases
|
|
|
|
Mysqlx.Crud.Insert {
|
|
collection {
|
|
name: "mytable"
|
|
schema: "xtest"
|
|
}
|
|
data_model: TABLE
|
|
projection {
|
|
name: "i"
|
|
}
|
|
projection {
|
|
name: "ui"
|
|
}
|
|
projection {
|
|
name: "vc"
|
|
}
|
|
projection {
|
|
name: "f"
|
|
}
|
|
projection {
|
|
name: "d"
|
|
}
|
|
projection {
|
|
name: "dt"
|
|
}
|
|
projection {
|
|
name: "ts"
|
|
}
|
|
projection {
|
|
name: "j"
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: -100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_UINT
|
|
v_unsigned_int: 100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "string"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_FLOAT
|
|
v_float: 0.333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 0.333333333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-05-05 1:20:30"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-06-06 03:10:20.12345"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "{\"name\":\"Me\"}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## expect Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select count(*) from xtest.mytable;
|
|
truncate table xtest.mytable;
|
|
-->endsql
|
|
|
|
Mysqlx.Crud.Insert {
|
|
collection {
|
|
name: "mytable"
|
|
schema: "xtest"
|
|
}
|
|
data_model: TABLE
|
|
projection {
|
|
name: "i"
|
|
}
|
|
projection {
|
|
name: "ui"
|
|
}
|
|
projection {
|
|
name: "vc"
|
|
}
|
|
projection {
|
|
name: "f"
|
|
}
|
|
projection {
|
|
name: "d"
|
|
}
|
|
projection {
|
|
name: "dt"
|
|
}
|
|
projection {
|
|
name: "ts"
|
|
}
|
|
projection {
|
|
name: "j"
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: -100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_UINT
|
|
v_unsigned_int: 100
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: ""
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_FLOAT
|
|
v_float: 0.333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 0.333333333333
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-05-05 1:20:30"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2015-06-06 03:10:20.12345"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "{\"name\":\"Me\"}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_signed_int: -50
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_UINT
|
|
v_unsigned_int: 50
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "new\'string"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_FLOAT
|
|
v_float: 0
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_DOUBLE
|
|
v_double: 1
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "2000-1-1 1:1:1"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_STRING
|
|
v_string {
|
|
value: "1999-2-2 2:2:2.22222"
|
|
}
|
|
}
|
|
}
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_NULL
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## expect Mysqlx.Sql.StmtExecuteOk
|
|
-->recvresult
|
|
|
|
## multiple rows with auto_increment
|
|
Mysqlx.Crud.Insert {
|
|
collection {
|
|
name: "simpletable"
|
|
schema: "xtest"
|
|
}
|
|
data_model: TABLE
|
|
projection {
|
|
name: "value"
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_double: 5
|
|
}
|
|
}
|
|
}
|
|
row {
|
|
field {
|
|
type: LITERAL
|
|
literal {
|
|
type: V_SINT
|
|
v_double: 6
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-->recvresult
|
|
|
|
-->sql
|
|
select count(*) from xtest.mytable;
|
|
-->endsql
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST -ux_root --password='' --file=$MYSQL_TMP_DIR/insert_table_empty.tmp 2>&1
|
|
|
|
## Cleanup
|
|
drop schema if exists xtest;
|
|
--remove_file $MYSQL_TMP_DIR/insert_table_empty.tmp
|
|
--source include/xplugin_drop_user.inc
|