public static Pair<String, String> getDatasetInfo(MetadataProvider metadata, String datasetArg) { String first; String second; int i = datasetArg.indexOf('.'); if (i > 0 && i < datasetArg.length() - 1) { first = datasetArg.substring(0, i); second = datasetArg.substring(i + 1); } else { first = metadata.getDefaultDataverse() == null ? null : metadata.getDefaultDataverse().getDataverseName(); second = datasetArg; } return new Pair<>(first, second); } }
private Pair<String, String> parseDatasetReference(MetadataProvider metadataProvider, String datasetArg) throws AlgebricksException { String[] datasetNameComponents = datasetArg.split("\\."); String dataverseName; String datasetName; if (datasetNameComponents.length == 1) { Dataverse defaultDataverse = metadataProvider.getDefaultDataverse(); if (defaultDataverse == null) { throw new AlgebricksException("Unresolved dataset " + datasetArg + " Dataverse not specified."); } dataverseName = defaultDataverse.getDataverseName(); datasetName = datasetNameComponents[0]; } else { dataverseName = datasetNameComponents[0]; datasetName = datasetNameComponents[1]; } return new Pair<>(dataverseName, datasetName); }
private Expression rewriteFunctionBody(FunctionDecl fnDecl) throws CompilationException { SourceLocation sourceLoc = fnDecl.getSourceLocation(); Query wrappedQuery = new Query(false); wrappedQuery.setSourceLocation(sourceLoc); wrappedQuery.setBody(fnDecl.getFuncBody()); wrappedQuery.setTopLevel(false); String fnNamespace = fnDecl.getSignature().getNamespace(); Dataverse defaultDataverse = metadataProvider.getDefaultDataverse(); Dataverse fnDataverse; if (fnNamespace == null || fnNamespace.equals(defaultDataverse.getDataverseName())) { fnDataverse = defaultDataverse; } else { try { fnDataverse = metadataProvider.findDataverse(fnNamespace); } catch (AlgebricksException e) { throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc, fnNamespace); } } metadataProvider.setDefaultDataverse(fnDataverse); try { IQueryRewriter queryRewriter = rewriterFactory.createQueryRewriter(); queryRewriter.rewrite(declaredFunctions, wrappedQuery, metadataProvider, context, true, fnDecl.getParamList()); return wrappedQuery.getBody(); } finally { metadataProvider.setDefaultDataverse(defaultDataverse); } }