in asterix-bad/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslator.java [387:411]
protected void handleIndexDropStatement(MetadataProvider metadataProvider, Statement stmt,
IHyracksClientConnection hcc, IRequestParameters requestParameters) throws Exception {
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
DataverseName dvId = getActiveDataverseName(((IndexDropStatement) stmt).getDataverseName());
Identifier dsId = ((IndexDropStatement) stmt).getDatasetName();
throwErrorIfDatasetUsed(mdTxnCtx, dvId, dsId.getValue());
List<Dataverse> dataverseList = MetadataManager.INSTANCE.getDataverses(mdTxnCtx);
for (Dataverse dv : dataverseList) {
List<Function> functions = MetadataManager.INSTANCE.getDataverseFunctions(mdTxnCtx, dv.getDataverseName());
for (Function function : functions) {
for (Triple<DataverseName, String, String> datasetDependency : function.getDependencies().get(0)) {
if (datasetDependency.first.equals(dvId) && datasetDependency.second.equals(dsId.getValue())) {
throwErrorIfFunctionUsed(mdTxnCtx, function.getDataverseName(), function.getName(),
Integer.toString(function.getArity()), null);
}
}
}
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
super.handleIndexDropStatement(metadataProvider, stmt, hcc, requestParameters);
}