Currently sql client is stateless, it read config files into `Environment` and recorded all session changes into `SessionContext`.
Each time sql client want to execute a new command, we have to first construct `ExecutionContext` by combining `Environment` and `SessionContext`, and then transfer all information into a new `EnvironmentInstance`.
It works well before but kind of hard to extend now. One example is support creating table in sql client. We have to remember create statements and replay them every time we want to execute a new command.
If we can make sql client stateful, and table environment be the state of sql client, things will be much more easier.
This Jira should revisit all related classes, and define a clean relationship between old roles after making sql client stateful.