void computeAndAddSelParamIfPossible( CacheWA& cwa, BindWA& bindWA, ExprValueId& child, BaseColumn *base, ConstValue *val) { ColStatsSharedPtr cStatsPtr = (base->getTableDesc()->tableColStats()). getColStatsPtrForColumn(base->getValueId()); if (cStatsPtr == NULL ) return; HistogramSharedPtr hist = cStatsPtr->getHistogram(); if ( hist == NULL ) return; CostScalar sel; NABoolean canComputeSelectivity = hist -> computeSelectivityForEquality( val, cStatsPtr->getRowcount(), cStatsPtr->getTotalUec(), sel); if ( canComputeSelectivity == TRUE ) { const NAType * newType = base->getNAColumn()->getType(); // for char datatypes, assign the caseinsensitive attribute from // the const node. if (newType->getTypeQualifier() == NA_CHARACTER_TYPE) { newType = base->getNAColumn()->getType()->newCopy(cwa.wHeap()); ((CharType*)newType)->setCaseinsensitive(((CharType*)val->getType())->isCaseinsensitive()); } cwa.replaceWithNewOrOldSelParam(val, newType, Selectivity(sel), child, bindWA); } }