// helper to change literals of a cacheable query into input parameters void BiRelat::parameterizeMe(CacheWA& cwa, BindWA& bindWA, ExprValueId& child, BaseColumn *base, ConstValue *val) { NABoolean parameterizableMVQRplan = cwa.hasRewriteEnabledMV() && CmpCommon::getDefault(MVQR_PARAMETERIZE_EQ_PRED) == DF_ON; NABoolean parameterizablePlan = parameterizableMVQRplan || !cwa.hasRewriteEnabledMV(); if (val->isNull()) { // val is null; keep null as is. // this is part of a fix to genesis case: 10-010618-3484. } else if (base->isKeyColumnValue(*val) // keyCol = constant && cwa.isParameterizable(base) && parameterizablePlan) { cwa.replaceWithNewOrOldConstParam(val, base->getNAColumn()->getType(), child, bindWA); if (parameterizableMVQRplan) cwa.setParameterizedPred(TRUE); } else if (!base->canSafelyCoerce(*val)) { // term is not parameterizable, keep it as is. } else { // nonKeyCol = constant if (parameterizablePlan) { computeAndAddSelParamIfPossible(cwa, bindWA, child, base, val); if (parameterizableMVQRplan) cwa.setParameterizedPred(TRUE); } } }