public void initializeMetadata()

in asterix-bad/src/main/java/org/apache/asterix/bad/extension/BADMetadataExtension.java [103:144]


    public void initializeMetadata(INCServiceContext appCtx)
            throws HyracksDataException, RemoteException, ACIDException {
        // enlist datasets
        MetadataBootstrap.enlistMetadataDataset(appCtx, BADMetadataIndexes.CHANNEL_DATASET);
        MetadataBootstrap.enlistMetadataDataset(appCtx, BADMetadataIndexes.BROKER_DATASET);
        MetadataBootstrap.enlistMetadataDataset(appCtx, BADMetadataIndexes.PROCEDURE_DATASET);
        if (MetadataBootstrap.isNewUniverse()) {
            MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
            try {
                // add metadata datasets
                MetadataBootstrap.insertMetadataDatasets(mdTxnCtx,
                        new IMetadataIndex[] { BADMetadataIndexes.CHANNEL_DATASET, BADMetadataIndexes.BROKER_DATASET,
                                BADMetadataIndexes.PROCEDURE_DATASET });
                // insert default dataverse
                // TODO prevent user from dropping this dataverse
                // MetadataManager.INSTANCE.addDataverse(mdTxnCtx, BAD_DATAVERSE);
                // insert default data type
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_RESULT_DATATYPE);
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_SUBSCRIPTION_DATATYPE);
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_BROKER_DATATYPE);
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_CHANNEL_DATATYPE);
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_PROCEDURE_DATATYPE);
                MetadataManager.INSTANCE.addDatatype(mdTxnCtx, BAD_ACTIVE_RECORD_TYPE);
                // TODO prevent user from dropping these types
                MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
            } catch (Exception e) {
                e.printStackTrace();
                MetadataManager.INSTANCE.abortTransaction(mdTxnCtx);
            }
        }
        // local recovery?
        // nothing for now
        BuiltinFunctions.addFunction(BADFunctions.CURRENT_CHANNEL_TIME, ADateTimeTypeComputer.INSTANCE, false);
        BuiltinFunctions.addFunction(BADFunctions.PREVIOUS_CHANNEL_TIME, ADateTimeTypeComputer.INSTANCE, false);
        BuiltinFunctions.addFunction(BADFunctions.IS_NEW, ABooleanTypeComputer.INSTANCE, true);
        BuiltinFunctions.addFunction(BADFunctions.ACTIVE_TIMESTAMP, ADateTimeTypeComputer.INSTANCE, true);

        // to shadow the master feed rewriter
        BuiltinFunctions.addPrivateFunction(BuiltinFunctions.FEED_COLLECT, BADFeedRewriter.INSTANCE, true);
        BuiltinFunctions.addUnnestFun(BuiltinFunctions.FEED_COLLECT, false);
        BuiltinFunctions.addDatasourceFunction(BuiltinFunctions.FEED_COLLECT, BADFeedRewriter.INSTANCE);
    }