public MetadataProvider(ICcApplicationContext appCtx, Dataverse defaultDataverse) { this.appCtx = appCtx; setDefaultDataverse(defaultDataverse); this.storageComponentProvider = appCtx.getStorageComponentProvider(); storageProperties = appCtx.getStorageProperties(); functionManager = ((IFunctionExtensionManager) appCtx.getExtensionManager()).getFunctionManager(); locks = new LockList(); config = new HashMap<>(); }
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); } }
metadataProvider.setDefaultDataverse(dv); Query wrappedQuery = new Query(false); wrappedQuery.setSourceLocation(sourceLoc); } finally { metadataProvider.getLocks().unlock(); metadataProvider.setDefaultDataverse(activeDataverse);