private Map<String, Set<Object>> getEnumerates(Map<String, Comparative> sqlArgs, Object ctx) {
Set<AdvancedParameter> thisParam = cast(this.parameterSet);
Map<String, Set<Object>> enumerates;
SamplesCtx samplesCtx = (SamplesCtx) ctx;
if (samplesCtx != null) {
Samples commonSamples = samplesCtx.samples;
if (samplesCtx.dealType == SamplesCtx.replace) {
Set<AdvancedParameter> withoutCommon = new HashSet<AdvancedParameter>(thisParam.size());
for (AdvancedParameter p : thisParam) {
if (!commonSamples.getSubColumSet().contains(p.key)) {
withoutCommon.add(p);
}
}
enumerates = RuleUtils.getSamplingField(sqlArgs, withoutCommon);
for (String name : commonSamples.getSubColumSet()) {
enumerates.put(name, commonSamples.getColumnEnumerates(name)); //������ֻʹ����һ��������㣬ֵ����ķ���խ������
}
} else if (samplesCtx.dealType == SamplesCtx.merge) {
enumerates = RuleUtils.getSamplingField(sqlArgs, thisParam);
for (String diffType : commonSamples.getSubColumSet()) {
enumerates.get(diffType).addAll(commonSamples.getColumnEnumerates(diffType));
}
} else {
throw new IllegalStateException("Should not happen! SamplesCtx.dealType has a new Enum?");
}
} else {