protocol: COM_MULTI command

Description

Implement COM_MULTI protocol command. Just as COM_QUERY support multiple queries in one packet, COM_MULTI will bundle many COM_xxx commands in one packet.

May be the server should only support COM_MULTI if CLIENT_MULTI_RESULTS flag is set? Probably not

Packets included in one COM_MULTI probably do not need packet number as well as separate compression, so only 3 bytes of length for each.

For prepared statement to be able prepare / execute / deallocate the command in one COM_MULTI batch will be special prepared statement ID (0 or -1) which mean ID of previous command.

Packet structure:

  • 4 or 7 bytes: of packet header (read by my_real_read())

  • 1 byte: COM_MULTI

    • 3 bytes: length of subcommand 1

    • N1 bytes: subcommand1

    • 3 bytes: length of subcommand 2

    • N2 bytes: subcommand 2
      ...

    • 3 bytes: length of subcommand m

    • Nm bytes: subcommand m

COM_MULTI should be numbered from the "end" i.e. 255

There should be capability flag for it.

Environment

None

Status

Assignee

Michael Widenius

Reporter

Sergei Golubchik

Labels

None

External issue ID

None

External issue ID

None

Time tracking

80h

Sprint

None

Fix versions

Priority

Major