protected async Task <TableFieldDef[]> GetFieldDefs(string tableName)
        {
            List <TableFieldDef> fields = new List <TableFieldDef>();
            string commandText          = $"DESCRIBE {tableName}";

            using (MySqlDataReader reader = await ExecuteReaderAsync(this.ConnectionString, commandText)) {
                while (reader.Read())
                {
                    string name          = reader[0].ToString();
                    string typeText      = reader[1].ToString();
                    string allowNullText = reader[2].ToString();
                    string key           = reader[3].ToString();
                    string extra         = reader[5].ToString();

                    (Type type, int maxLength) = BaseDatabase.ConvertMySqlType(typeText);
                    bool allowNull       = allowNullText.Equals("YES", StringComparison.OrdinalIgnoreCase);
                    bool isAutoIncrement = !string.IsNullOrEmpty(extra) && extra.Contains("auto_increment");
                    fields.Add(new TableFieldDef(name, type, maxLength, allowNull, isAutoIncrement));
                }
            }
            return(fields.ToArray());
        }