This isn't a big deal and I don't think we should hold the patch for it, but I have a question. If I read the spec correctly a query like:
select * from (values((1, 2, 3),(4, 5, 6));
should be legal. At FromClauseParser.g, line 290 you are requiring a tableNameColList as part of the virtualTableSource. This means the user always has to do a table definition after the values clause, so the above would become:
select * from (values((1, 2, 3),(4, 5, 6)) as foo(a int, b int, c int);
This makes sense since the more common case is probably:
select a, count(b) from (values((1, 2, 3),(4, 5, 6)) as foo(a int, b int, c int) group by a where c > 4;
or something, in which case the table definition is required. But the main question is am I misreading the spec or are we just adding the requirement for the table definition in all cases? I think it's ok if we're adding it, as this is primarily for our own testing purposes.