const ArrayDesc& LogicalQueryPlanNode::inferTypes(std::shared_ptr< Query> query) { std::vector<ArrayDesc> inputSchemas; ArrayDesc outputSchema; for (size_t i=0, end=_childNodes.size(); i<end; i++) { inputSchemas.push_back(_childNodes[i]->inferTypes(query)); } outputSchema = _logicalOperator->inferSchema(inputSchemas, query); //FIXME: May be cover inferSchema method with another one and assign alias there? if (!_logicalOperator->getAliasName().empty()) { outputSchema.addAlias(_logicalOperator->getAliasName()); } _logicalOperator->setSchema(outputSchema); LOG4CXX_DEBUG(logger, "Inferred schema for operator " << _logicalOperator->getLogicalName() << ": " << outputSchema); return _logicalOperator->getSchema(); }