public async Task Indexes()
        {
            using (var conn = CreateConnection())
            {
                await conn.ExecuteAsync(
                    $"drop table if exists {Escape}test{Escape}.{Escape}createtableindexes{Escape};");

                using (var builder = GetLocalSpiderHostBuilder())
                {
                    var provider = builder.Build();
                    var services = provider.CreateScopeServiceProvider();
                    var storage  = CreateStorage(StorageType.Insert);

                    var dfc      = new DataFlowContext(null, services);
                    var typeName = typeof(CreateTableEntity5).FullName;
                    var entity   = new CreateTableEntity9();
                    dfc.Add(typeName, entity.GetTableMetadata());
                    var items = new ParseResult <CreateTableEntity9> {
                        entity
                    };
                    dfc.AddParseData(typeName, items);
                    await storage.HandleAsync(dfc);

                    var indexes = (await conn.QueryAsync <IndexInfo>
                                       ("show index from test.createtableindexes")
                                   ).ToList();
                    Assert.Equal(6, indexes.Count);
                    Assert.Contains(indexes,
                                    x => x.Key_name == "INDEX_STR1" && x.Non_unique == 1 && x.Column_name == "str1");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "INDEX_STR1_STR2" && x.Non_unique == 1 && x.Column_name == "str1");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "INDEX_STR1_STR2" && x.Non_unique == 1 && x.Column_name == "str2");
                    Assert.Contains(indexes,
                                    x => x.Key_name == "UNIQUE_STR3" && x.Non_unique == 0 && x.Column_name == "str3");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "UNIQUE_STR3_STR4" && x.Non_unique == 0 && x.Column_name == "str3");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "UNIQUE_STR3_STR4" && x.Non_unique == 0 && x.Column_name == "str4");

                    await conn.ExecuteAsync(
                        $"drop table if exists {Escape}test{Escape}.{Escape}createtableindexes{Escape};");
                }
            }
        }
        public async Task Indexes()
        {
            using (var conn = CreateConnection())
            {
                await conn.ExecuteAsync(
                    $"drop table if exists {Escape}test{Escape}.{Escape}createtableindexes{Escape};");

                {
                    var storage = CreateStorage(StorageMode.Insert);

                    var context = new DataContext(null, new SpiderOptions(),
                                                  new Request(), new Response());
                    var typeName = typeof(CreateTableEntity5);
                    var entity   = new CreateTableEntity9();

                    var items = new List <CreateTableEntity9> {
                        entity
                    };
                    context.AddData(typeName, items);
                    await storage.HandleAsync(context);

                    var indexes = (await conn.QueryAsync <IndexInfo>
                                       ("show index from test.createtableindexes")
                                   ).ToList();
                    Assert.Equal(6, indexes.Count);
                    Assert.Contains(indexes,
                                    x => x.Key_name == "INDEX_STR1" && x.Non_unique == 1 && x.Column_name == "str1");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "INDEX_STR1_STR2" && x.Non_unique == 1 && x.Column_name == "str1");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "INDEX_STR1_STR2" && x.Non_unique == 1 && x.Column_name == "str2");
                    Assert.Contains(indexes,
                                    x => x.Key_name == "UNIQUE_STR3" && x.Non_unique == 0 && x.Column_name == "str3");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "UNIQUE_STR3_STR4" && x.Non_unique == 0 && x.Column_name == "str3");
                    Assert.Contains(indexes, x =>
                                    x.Key_name == "UNIQUE_STR3_STR4" && x.Non_unique == 0 && x.Column_name == "str4");

                    await conn.ExecuteAsync(
                        $"drop table if exists {Escape}test{Escape}.{Escape}createtableindexes{Escape};");
                }
            }
        }