improve sql parser & add testcase & refactor