/** * registered in the store manager. * The datamap is created using datamap name, datamap factory class and table identifier. */ // TODO: make it private public TableDataMap createAndRegisterDataMap(CarbonTable table, DataMapSchema dataMapSchema) throws MalformedDataMapCommandException { DataMapFactory dataMapFactory = getDataMapFactoryClass(table, dataMapSchema); return registerDataMap(table, dataMapSchema, dataMapFactory); }
@Override public void initMeta(String ctasSqlStatement) throws MalformedDataMapCommandException, IOException { CarbonTable mainTable = getMainTable(); DataMapSchema dataMapSchema = getDataMapSchema(); if (mainTable == null) { throw new MalformedDataMapCommandException( "Parent table is required to create index datamap"); } ArrayList<RelationIdentifier> relationIdentifiers = new ArrayList<>(); RelationIdentifier relationIdentifier = new RelationIdentifier(mainTable.getDatabaseName(), mainTable.getTableName(), mainTable.getTableInfo().getFactTable().getTableId()); relationIdentifiers.add(relationIdentifier); dataMapSchema.setRelationIdentifier(relationIdentifier); dataMapSchema.setParentTables(relationIdentifiers); DataMapStoreManager.getInstance().registerDataMap(mainTable, dataMapSchema, dataMapFactory); DataMapStoreManager.getInstance().saveDataMapSchema(dataMapSchema); }