**Describe the issue**
We have a table with URL table engine like described below.
And we want to insert into that table via a remote table function.
And if we used a non-existent column name, clickhouse would produce misleading error messages about that table not existing.

**How to reproduce**
Table ddl:
https://github.com/AlexAkulov/clickhouse-backup/releases/tag/v0.6.2
And if we try to execute query with wrong column name:
```
INSERT INTO TABLE FUNCTION remote('chi-backtest1-backtest1-0-0', 'system.backup_actions') (common) values ('create shard1-xxx');

Code: 60, e.displayText() = DB::Exception: Both table name and UUID are empty (version 20.8.7.15 (official build)
```

**Expected behavior**
Clickhouse would produce an error: "that column does not exist in destination table".

**Error message and/or stacktrace**
```
Code: 60, e.displayText() = DB::Exception: Both table name and UUID are empty (version 20.8.7.15 (official build)
```

{
            bool is_trivial_insert_select = false;
            if (settings.optimize_trivial_insert_select)
            {
                const auto & select_query = query.select->as<ASTSelectWithUnionQuery &>();
                const auto & selects = select_query.list_of_selects->children;
                const auto & union_modes = select_query.list_of_modes;
                
                is_trivial_insert_select
                    = std::all_of(
                          union_modes.begin(),
                          union_modes.end(),
                          [](const ASTSelectWithUnionQuery::Mode & mode) { return mode == ASTSelectWithUnionQuery::Mode::ALL; })
                    && std::all_of(selects.begin(), selects.end(), [](const ASTPtr & select) { return isTrivialSelect(select); });
            }
            if (is_trivial_insert_select)
            {
                /** When doing trivial INSERT INTO ... SELECT ... FROM table,
                  * don't need to process SELECT with more than max_insert_threads
                  * and it's reasonable to set block size for SELECT to the desired block size for INSERT
                  * to avoid unnecessary squashing.
                  */
                Settings new_settings = context.getSettings();
                new_settings.max_threads = std::max<UInt64>(1, settings.max_insert_threads);
                if (settings.min_insert_block_size_rows)
                    new_settings.max_block_size = settings.min_insert_block_size_rows;
                Context new_context = context;
                new_context.setSettings(new_settings);
                InterpreterSelectWithUnionQuery interpreter_select{
                    query.select, new_context, SelectQueryOptions(QueryProcessingStage::Complete, 1)};