As discussed with @kitaisreal 
{
    Block res;
    for (const auto & column : getColumns().getOrdinary())
        res.insert({column.type->createColumn(), column.type, column.name});
    return res;
}
Block StorageInMemoryMetadata::getSampleBlockWithVirtuals(const NamesAndTypesList & virtuals) const
{
    auto res = getSampleBlock();
    
    
    for (const auto & column : virtuals)
        res.insert({column.type->createColumn(), column.type, column.name});
    return res;
}
Block StorageInMemoryMetadata::getSampleBlock() const
{
    Block res;
    for (const auto & column : getColumns().getAllPhysical())
        res.insert({column.type->createColumn(), column.type, column.name});
    return res;
}
Block StorageInMemoryMetadata::getSampleBlockForColumns(