## What have you changed? (mandatory)
Execute below SQL will panic
```SQL
create TABLE t1 (col1 int) partition by range(case when col1>0 then 10 else 20 end) (partition p0 values less than (2), partition p1 values less than (6));
```
TODO:
This PR just fix the panic, This SQL should return err:` ERROR 1564 (HY000): This partition function is not allowed`, issue[#7058](https://github.com/pingcap/tidb/issues/7058)
## What is the type of the changes? (mandatory)
Bug fix
## How has this PR been tested? (mandatory)
Unit test
## Does this PR affect documentation (docs/docs-cn) update? (mandatory)
No
## Does this PR affect tidb-ansible update? (mandatory)
No
## Does this PR need to be added to the release notes? (mandatory)
## Refer to a related PR or issue link (optional)
## Benchmark result if necessary (optional)
## Add a few positive/negative examples (optional)
Thank you for working on TiDB! Please read TiDB's [CONTRIBUTING](https://github.com/pingcap/tidb/blob/master/CONTRIBUTING.md) document **BEFORE** filing this PR.
## What have you changed? (mandatory)
During coprocessor dag task, it first uses timezone `name`, if non-empty, to get legitimate timezone variable. To achieve this, we need to push down such data into tikv which leads to change the logic of building pushdown request. The logic I mentioned mainly resides in `executor` package.
I change `timeZoneOffset` to `zone` and add second return parameter `name string`. The intentioned of doing this to adopt the convention of `time` package.
For the same purpose, I change `GetTimeZone` to `Location`. As you can see, in `time` package, timezone was bind to `Location`.
## What are the type of the changes (mandatory)?
- Bug fix (non-breaking change which fixes an issue)
## How has this PR been tested (mandatory)?
unit-test
integration-test will be added shortly
* *: remove non-prepared plan cache
non-prepared plan cache is not usable if we can only do full string match.
And further development doesn't worth the effort.