Currently there are two place where we construct the hash expression based on the partition fields:
1. InsertLocalExchangeVistor (generates RexExpr type)
2. PRelUtil.getHashExpression (generate LogicalExpression type)
Having this logic in two places makes them prone to errors and they can easily go out of sync causing hard to debug verification failures.