From ef3d04087d4435b31075747fcbdf98d7e85faa92 Mon Sep 17 00:00:00 2001 From: lysu Date: Thu, 28 Jun 2018 13:40:27 +0800 Subject: [PATCH] server: fix COM_FIELD_LIST response bug that make mariadb-client crash during `use db` (#6918) --- server/conn.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/conn.go b/server/conn.go index 5f21ca61d4969..c810f16d54f66 100644 --- a/server/conn.go +++ b/server/conn.go @@ -898,9 +898,15 @@ func (cc *clientConn) handleFieldList(sql string) (err error) { return errors.Trace(err) } data := make([]byte, 4, 1024) - for _, v := range columns { + for _, column := range columns { + // Current we doesn't output defaultValue but reserve defaultValue length byte to make mariadb client happy. + // https://dev.mysql.com/doc/internals/en/com-query-response.html#column-definition + // TODO: fill the right DefaultValues. + column.DefaultValueLength = 0 + column.DefaultValue = []byte{} + data = data[0:4] - data = v.Dump(data) + data = column.Dump(data) if err := cc.writePacket(data); err != nil { return errors.Trace(err) }