ArrayDesc inferSchema(std::vector<ArrayDesc> schemas, std::shared_ptr<Query> query) { assert(schemas.size() == 0); assert(_parameters.size() == 2); assert(((std::shared_ptr<OperatorParam>&)_parameters[0])->getParamType() == PARAM_ARRAY_REF); assert(((std::shared_ptr<OperatorParam>&)_parameters[1])->getParamType() == PARAM_ARRAY_REF); std::string oldArrayName; std::string oldNamespaceName; std::string newArrayName; std::string newNamespaceName; const string &oldArrayNameOrg = ((std::shared_ptr<OperatorParamReference>&)_parameters[0])->getObjectName(); query->getNamespaceArrayNames(oldArrayNameOrg, oldNamespaceName, oldArrayName); const string &newArrayNameOrg = ((std::shared_ptr<OperatorParamReference>&)_parameters[1])->getObjectName(); query->getNamespaceArrayNames(newArrayNameOrg, newNamespaceName, newArrayName); if(newNamespaceName != oldNamespaceName) { throw USER_QUERY_EXCEPTION( SCIDB_SE_INFER_SCHEMA, SCIDB_LE_CANNOT_RENAME_ACROSS_NAMESPACES, _parameters[1]->getParsingContext()) << ArrayDesc::makeQualifiedArrayName(oldNamespaceName, oldArrayName) << ArrayDesc::makeQualifiedArrayName(newNamespaceName, newArrayName); } if (scidb::namespaces::Communicator::containsArray(newNamespaceName, newArrayName)) { throw USER_QUERY_EXCEPTION(SCIDB_SE_INFER_SCHEMA, SCIDB_LE_ARRAY_ALREADY_EXIST, _parameters[1]->getParsingContext()) << newArrayName; } ArrayDesc arrDesc; arrDesc.setDistribution(defaultPartitioning()); arrDesc.setResidency(query->getDefaultArrayResidency()); return arrDesc; }