public Map<String, TableDesc> getAllTablesMap(String prj) { // avoid cyclic locks ProjectInstance project = (prj == null) ? null : ProjectManager.getInstance(config).getProject(prj); try (AutoLock lock = srcTableMapLock.lockForWrite()) { //TODO prj == null case is now only used by test case and CubeMetaIngester //should refactor these test case and tool ASAP and stop supporting null case if (prj == null) { Map<String, TableDesc> globalTables = new LinkedHashMap<>(); for (TableDesc t : srcTableMap.values()) { globalTables.put(t.getIdentity(), t); } return globalTables; } Set<String> prjTableNames = project.getTables(); Map<String, TableDesc> ret = new LinkedHashMap<>(); for (String tableName : prjTableNames) { String tableIdentity = getTableIdentity(tableName); ret.put(tableIdentity, getProjectSpecificTableDesc(tableIdentity, prj)); } return ret; } }
@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN) public void deleteProject(String projectName, ProjectInstance project) throws IOException { Set<String> tables = project.getTables(); for (String table : Sets.newTreeSet(tables)) { tableService.unloadHiveTable(table, projectName); getTableManager().removeTableExt(table, projectName); getTableACLManager().deleteTableACLByTbl(projectName, table); } getProjectManager().dropProject(projectName); accessService.clean(project, true); }
for (String tableName : pi.getTables()) { TableDesc tableDesc = metaMgr.getTableDesc(tableName, project); if (tableDesc != null) {
@Test public void testHappyIngest() { String srcPath = Thread.currentThread().getContextClassLoader().getResource("cloned_cube_and_model.zip").getPath(); CubeMetaIngester.main(new String[] { "-project", "default", "-srcPath", srcPath }); ProjectInstance project = ProjectManager.getInstance(KylinConfig.getInstanceFromEnv()).getProject("default"); Assert.assertEquals(1, Collections.frequency(project.getTables(), "DEFAULT.TEST_KYLIN_FACT")); Assert.assertTrue(project.getModels().contains("cloned_model")); Assert.assertTrue(project.getRealizationEntries().contains(RealizationEntry.create(RealizationType.CUBE, "cloned_cube"))); getTestConfig().clearManagers(); CubeInstance instance = CubeManager.getInstance(KylinConfig.getInstanceFromEnv()).getCube("cloned_cube"); Assert.assertTrue(instance != null); }
@Test public void testHappyIngest2() { String srcPath = Thread.currentThread().getContextClassLoader().getResource("benchmark_meta.zip").getPath(); CubeMetaIngester.main(new String[] { "-project", "default", "-srcPath", srcPath, "-overwriteTables", "true" }); ProjectInstance project = ProjectManager.getInstance(KylinConfig.getInstanceFromEnv()).getProject("default"); Assert.assertEquals(1, Collections.frequency(project.getTables(), "SSB.CUSTOMER")); Assert.assertTrue(project.getModels().contains("benchmark_model")); Assert.assertTrue(project.getRealizationEntries().contains(RealizationEntry.create(RealizationType.CUBE, "benchmark_cube"))); getTestConfig().clearManagers(); CubeInstance instance = CubeManager.getInstance(KylinConfig.getInstanceFromEnv()).getCube("benchmark_cube"); Assert.assertTrue(instance != null); }
/** * the project-specific table desc will be expand by computed columns from the projects' models * when the projects' model list changed, project-specific table should be reset and get expanded * again */ public void resetProjectSpecificTableDesc(String prj) throws IOException { // avoid cyclic locks ProjectInstance project = ProjectManager.getInstance(config).getProject(prj); try (AutoLock lock = srcTableMapLock.lockForWrite()) { for (String tableName : project.getTables()) { String tableIdentity = getTableIdentity(tableName); String key = mapKey(tableIdentity, prj); TableDesc originTableDesc = srcTableMap.get(key); if (originTableDesc == null) { continue; } if (originTableDesc.isBorrowedFromGlobal()) { srcTableMap.removeLocal(key);//delete it so that getProjectSpecificTableDesc will create again } else { srcTableCrud.reload(key); } } } }
public int getTablesCount() { return this.getTables().size(); }
public void addTable(String tableName) { this.getTables().add(tableName.toUpperCase()); }
for (String tableName : pi.getTables()) { TableDesc tableDesc = metaMgr.getTableDesc(tableName); if (tableDesc != null) {
public int getTablesCount() { return this.getTables().size(); }
public void addTable(String tableName) { this.getTables().add(tableName.toUpperCase()); }
public Map<String, TableDesc> getAllTablesMap(String prj) { // avoid cyclic locks ProjectInstance project = (prj == null) ? null : ProjectManager.getInstance(config).getProject(prj); try (AutoLock lock = srcTableMapLock.lockForWrite()) { //TODO prj == null case is now only used by test case and CubeMetaIngester //should refactor these test case and tool ASAP and stop supporting null case if (prj == null) { Map<String, TableDesc> globalTables = new LinkedHashMap<>(); for (TableDesc t : srcTableMap.values()) { globalTables.put(t.getIdentity(), t); } return globalTables; } Set<String> prjTableNames = project.getTables(); Map<String, TableDesc> ret = new LinkedHashMap<>(); for (String tableName : prjTableNames) { String tableIdentity = getTableIdentity(tableName); ret.put(tableIdentity, getProjectSpecificTableDesc(tableIdentity, prj)); } return ret; } }
for (String tableName : pi.getTables()) { TableDesc tableDesc = metaMgr.getTableDesc(tableName, project); if (tableDesc != null) {
for (String tableName : pi.getTables()) { TableDesc tableDesc = metaMgr.getTableDesc(tableName); if (tableDesc != null) {
/** * the project-specific table desc will be expand by computed columns from the projects' models * when the projects' model list changed, project-specific table should be reset and get expanded * again */ public void resetProjectSpecificTableDesc(String prj) throws IOException { // avoid cyclic locks ProjectInstance project = ProjectManager.getInstance(config).getProject(prj); try (AutoLock lock = srcTableMapLock.lockForWrite()) { for (String tableName : project.getTables()) { String tableIdentity = getTableIdentity(tableName); String key = mapKey(tableIdentity, prj); TableDesc originTableDesc = srcTableMap.get(key); if (originTableDesc == null) { continue; } if (originTableDesc.isBorrowedFromGlobal()) { srcTableMap.removeLocal(key);//delete it so that getProjectSpecificTableDesc will create again } else { srcTableCrud.reload(key); } } } }