Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions data/test/vtgate/dml_cases.txt
Original file line number Diff line number Diff line change
Expand Up @@ -921,6 +921,33 @@
}
}

# insert with multiple rows - multi-shard autocommit
"insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id) values (1), (2)"
{
"Original": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id) values (1), (2)",
"Instructions": {
"Opcode": "InsertSharded",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"Query": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id, Name, Costly) values (:_Id0, :_Name0, :_Costly0), (:_Id1, :_Name1, :_Costly1)",
"Values": [[[":__seq0",":__seq1"]],[[null,null]],[[null,null]]],
"Table": "user",
"Generate": {
"Keyspace": {
"Name": "main",
"Sharded": false
},
"Query": "select next :n values from seq",
"Values": [1,2]
},
"Prefix": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id, Name, Costly) values ",
"Mid": ["(:_Id0, :_Name0, :_Costly0)","(:_Id1, :_Name1, :_Costly1)"],
"MultiShardAutocommit": true
}
}

# simple replace unsharded
"replace into unsharded values(1, 2)"
{
Expand Down Expand Up @@ -1253,6 +1280,22 @@
}
}

# delete from with no index match - multi shard autocommit
"delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where name = 'jose'"
{
"Original": "delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where name = 'jose'",
"Instructions": {
"Opcode": "DeleteScatter",
"Keyspace": {
"Name": "user",
"Sharded": true
},
"Query": "delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where name = 'jose'",
"Table": "user_extra",
"MultiShardAutocommit": true
}
}

# delete from with primary id in through IN clause
"delete from user_extra where user_id in (1, 2)"
{
Expand Down
30 changes: 16 additions & 14 deletions go/vt/vtgate/engine/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,23 @@ func (del *Delete) MarshalJSON() ([]byte, error) {
vindexName = del.Vindex.String()
}
marshalDelete := struct {
Opcode DeleteOpcode
Keyspace *vindexes.Keyspace `json:",omitempty"`
Query string `json:",omitempty"`
Vindex string `json:",omitempty"`
Values []sqltypes.PlanValue `json:",omitempty"`
Table string `json:",omitempty"`
OwnedVindexQuery string `json:",omitempty"`
Opcode DeleteOpcode
Keyspace *vindexes.Keyspace `json:",omitempty"`
Query string `json:",omitempty"`
Vindex string `json:",omitempty"`
Values []sqltypes.PlanValue `json:",omitempty"`
Table string `json:",omitempty"`
OwnedVindexQuery string `json:",omitempty"`
MultiShardAutocommit bool `json:",omitempty"`
}{
Opcode: del.Opcode,
Keyspace: del.Keyspace,
Query: del.Query,
Vindex: vindexName,
Values: del.Values,
Table: tname,
OwnedVindexQuery: del.OwnedVindexQuery,
Opcode: del.Opcode,
Keyspace: del.Keyspace,
Query: del.Query,
Vindex: vindexName,
Values: del.Values,
Table: tname,
OwnedVindexQuery: del.OwnedVindexQuery,
MultiShardAutocommit: del.MultiShardAutocommit,
}
return jsonutil.MarshalNoEscape(marshalDelete)
}
Expand Down
38 changes: 20 additions & 18 deletions go/vt/vtgate/engine/insert.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,25 +86,27 @@ func (ins *Insert) MarshalJSON() ([]byte, error) {
tname = ins.Table.Name.String()
}
marshalInsert := struct {
Opcode InsertOpcode
Keyspace *vindexes.Keyspace `json:",omitempty"`
Query string `json:",omitempty"`
Values []sqltypes.PlanValue `json:",omitempty"`
Table string `json:",omitempty"`
Generate *Generate `json:",omitempty"`
Prefix string `json:",omitempty"`
Mid []string `json:",omitempty"`
Suffix string `json:",omitempty"`
Opcode InsertOpcode
Keyspace *vindexes.Keyspace `json:",omitempty"`
Query string `json:",omitempty"`
Values []sqltypes.PlanValue `json:",omitempty"`
Table string `json:",omitempty"`
Generate *Generate `json:",omitempty"`
Prefix string `json:",omitempty"`
Mid []string `json:",omitempty"`
Suffix string `json:",omitempty"`
MultiShardAutocommit bool `json:",omitempty"`
}{
Opcode: ins.Opcode,
Keyspace: ins.Keyspace,
Query: ins.Query,
Values: ins.VindexValues,
Table: tname,
Generate: ins.Generate,
Prefix: ins.Prefix,
Mid: ins.Mid,
Suffix: ins.Suffix,
Opcode: ins.Opcode,
Keyspace: ins.Keyspace,
Query: ins.Query,
Values: ins.VindexValues,
Table: tname,
Generate: ins.Generate,
Prefix: ins.Prefix,
Mid: ins.Mid,
Suffix: ins.Suffix,
MultiShardAutocommit: ins.MultiShardAutocommit,
}
return jsonutil.MarshalNoEscape(marshalInsert)
}
Expand Down