func protoFromResult(r Result) driver.Response_Result { drr := driver.Response_Result{} if r.PErr != nil { drr.Error = proto.String(r.PErr.String()) } switch r.Type { case parser.DDL: drr.Union = &driver.Response_Result_DDL_{ DDL: &driver.Response_Result_DDL{}, } case parser.RowsAffected: drr.Union = &driver.Response_Result_RowsAffected{ RowsAffected: uint32(r.RowsAffected), } case parser.Rows: rows := &driver.Response_Result_Rows{ Columns: make([]*driver.Response_Result_Rows_Column, 0, len(r.Columns)), Rows: make([]driver.Response_Result_Rows_Row, 0, len(r.Rows)), } for _, col := range r.Columns { rows.Columns = append(rows.Columns, protoFromColumn(col)) } for _, row := range r.Rows { rows.Rows = append(rows.Rows, protoFromRow(row)) } drr.Union = &driver.Response_Result_Rows_{ Rows: rows, } } return drr }