Hey Reynold: I don't see a clear way of supporting the intended semantics without having a strategy and a physical plan -- specifically, if we want to enforce sql("set...").collect() to return the intended results (instead of the previous way of return 0 I think), it seems clearer to just make a strategy/plan for it, otherwise as Michael pointed out there are several weird places that need modifications.

Michael, do you mean moving SetCommandStrategy to this same file as well? I was actually thinking after this is merged, [SPARK-1704](https://issues.apache.org/jira/browse/SPARK-1704) can be solved by introducing a physical plan in this same file (`commands.scala`), and then renaming `SetCommandStrategy` to `CommandStrategy`. What do you think?