You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/07/22 06:12:52 UTC
[02/47] incubator-kylin git commit: KYLIN-875 rename modules:
core-common, core-cube, core-dictionary, core-cube
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java b/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
deleted file mode 100644
index 6c153ad..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.kylin.metadata.MetadataManager;
-import org.apache.kylin.metadata.model.*;
-import org.apache.kylin.metadata.realization.IRealization;
-import org.apache.kylin.metadata.realization.RealizationRegistry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-/**
- * This is a second level cache that is built on top of first level cached objects,
- * including Realization, TableDesc, ColumnDesc etc, to speed up query time metadata lookup.
- * <p/>
- * On any object update, the L2 cache simply gets wiped out because it's cheap to rebuild.
- */
-class ProjectL2Cache {
-
- private static final Logger logger = LoggerFactory.getLogger(ProjectL2Cache.class);
-
- private ProjectManager mgr;
- private Map<String, ProjectCache> projectCaches = Maps.newConcurrentMap();
-
- ProjectL2Cache(ProjectManager mgr) {
- this.mgr = mgr;
- }
-
- public void clear() {
- projectCaches.clear();
- }
-
- public List<TableDesc> listDefinedTables(String project) {
- ProjectCache prjCache = getCache(project);
- List<TableDesc> result = Lists.newArrayListWithCapacity(prjCache.tables.size());
- for (TableCache tableCache : prjCache.tables.values()) {
- result.add(tableCache.tableDesc);
- }
- return result;
- }
-
- public Set<TableDesc> listExposedTables(String project) {
- ProjectCache prjCache = getCache(project);
- return Collections.unmodifiableSet(prjCache.exposedTables);
- }
-
- public Set<ColumnDesc> listExposedColumns(String project, String table) {
- TableCache tableCache = getCache(project).tables.get(table);
- if (tableCache == null)
- return Collections.emptySet();
- else
- return Collections.unmodifiableSet(tableCache.exposedColumns);
- }
-
- public boolean isExposedTable(String project, String table) {
- TableCache tableCache = getCache(project).tables.get(table);
- if (tableCache == null)
- return false;
- else
- return tableCache.exposed;
- }
-
- public boolean isExposedColumn(String project, String table, String col) {
- TableCache tableCache = getCache(project).tables.get(table);
- if (tableCache == null)
- return false;
-
-
- for (ColumnDesc colDesc : tableCache.exposedColumns) {
- if (colDesc.getName().equals(col))
- return true;
- }
- return false;
- }
-
- public Set<IRealization> listAllRealizations(String project) {
- ProjectCache prjCache = getCache(project);
- return Collections.unmodifiableSet(prjCache.realizations);
- }
-
- public Set<IRealization> getRealizationsByTable(String project, String table) {
- TableCache tableCache = getCache(project).tables.get(table);
- if (tableCache == null)
- return Collections.emptySet();
- else
- return Collections.unmodifiableSet(tableCache.realizations);
- }
-
- public List<IRealization> getOnlineRealizationByFactTable(String project, String factTable) {
- Set<IRealization> realizations = getRealizationsByTable(project, factTable);
- List<IRealization> result = Lists.newArrayListWithCapacity(realizations.size());
- for (IRealization r : realizations) {
- if (r.getFactTable().equalsIgnoreCase(factTable) && r.isReady()) {
- result.add(r);
- }
- }
- return result;
- }
-
- public List<MeasureDesc> listEffectiveRewriteMeasures(String project, String factTable) {
- Set<IRealization> realizations = getRealizationsByTable(project, factTable);
- List<MeasureDesc> result = Lists.newArrayList();
- for (IRealization r : realizations) {
- if (r.getFactTable().equalsIgnoreCase(factTable) && r.isReady()) {
- for (MeasureDesc m : r.getMeasures()) {
- FunctionDesc func = m.getFunction();
- if (func.needRewrite())
- result.add(m);
- }
- }
- }
- return result;
- }
-
- // ============================================================================
- // build the cache
- // ----------------------------------------------------------------------------
-
- private ProjectCache getCache(String project) {
- ProjectCache result = projectCaches.get(project);
- if (result == null) {
- result = loadCache(project);
- projectCaches.put(project, result);
- }
- return result;
- }
-
- private ProjectCache loadCache(String project) {
- logger.info("Loading L2 project cache for " + project);
- ProjectCache result = new ProjectCache(project);
-
- ProjectInstance pi = mgr.getProject(project);
-
- if (pi == null)
- throw new IllegalArgumentException("Project '" + project + "' does not exist;");
-
- MetadataManager metaMgr = mgr.getMetadataManager();
-
- for (String tableName : pi.getTables()) {
- TableDesc tableDesc = metaMgr.getTableDesc(tableName);
- if (tableDesc != null) {
- result.tables.put(tableDesc.getIdentity(), new TableCache(tableDesc));
- } else {
- logger.warn("Table '" + tableName + "' defined under project '" + project + "' is not found");
- }
- }
-
- RealizationRegistry registry = RealizationRegistry.getInstance(mgr.getConfig());
- for (RealizationEntry entry : pi.getRealizationEntries()) {
- IRealization realization = registry.getRealization(entry.getType(), entry.getRealization());
- if (realization != null) {
- result.realizations.add(realization);
- } else {
- logger.warn("Realization '" + entry + "' defined under project '" + project + "' is not found");
- }
- }
-
- for (IRealization realization : result.realizations) {
- if (sanityCheck(result, realization)) {
- mapTableToRealization(result, realization);
- markExposedTablesAndColumns(result, realization);
- }
- }
-
- return result;
- }
-
- // check all columns reported by realization does exists
- private boolean sanityCheck(ProjectCache prjCache, IRealization realization) {
- if(realization == null)
- return false;
-
- MetadataManager metaMgr = mgr.getMetadataManager();
-
- List<TblColRef> allColumns = realization.getAllColumns();
- if (allColumns == null || allColumns.isEmpty()) {
- logger.error("Realization '" + realization.getCanonicalName() + "' does not report any columns");
- return false;
- }
-
- for (TblColRef col : allColumns) {
- TableDesc table = metaMgr.getTableDesc(col.getTable());
- if (table == null) {
- logger.error("Realization '" + realization.getCanonicalName() + "' reports column '" + col.getCanonicalName() + "', but its table is not found by MetadataManager");
- return false;
- }
- ColumnDesc foundCol = table.findColumnByName(col.getName());
- if (col.getColumnDesc().equals(foundCol) == false) {
- logger.error("Realization '" + realization.getCanonicalName() + "' reports column '" + col.getCanonicalName() + "', but it is not equal to '" + foundCol + "' according to MetadataManager");
- return false;
- }
-
- // auto-define table required by realization for some legacy test case
- if (prjCache.tables.get(table.getIdentity()) == null) {
- prjCache.tables.put(table.getIdentity(), new TableCache(table));
- logger.warn("Realization '" + realization.getCanonicalName() + "' reports columcn '" + col.getCanonicalName() + "' whose table is not defined in project '" + prjCache.project + "'");
- }
- }
-
- return true;
- }
-
- private void mapTableToRealization(ProjectCache prjCache, IRealization realization) {
- for (TblColRef col : realization.getAllColumns()) {
- TableCache tableCache = prjCache.tables.get(col.getTable());
- tableCache.realizations.add(realization);
- }
- }
-
- private void markExposedTablesAndColumns(ProjectCache prjCache, IRealization realization) {
- if (!realization.isReady()) {
- return;
- }
-
- for (TblColRef col : realization.getAllColumns()) {
- TableCache tableCache = prjCache.tables.get(col.getTable());
- prjCache.exposedTables.add(tableCache.tableDesc);
- tableCache.exposed = true;
- tableCache.exposedColumns.add(col.getColumnDesc());
- }
- }
-
- private static class ProjectCache {
- private String project;
- private Map<String, TableCache> tables = Maps.newHashMap();
- private Set<TableDesc> exposedTables = Sets.newHashSet();
- private Set<IRealization> realizations = Sets.newHashSet();
-
- ProjectCache(String project) {
- this.project = project;
- }
- }
-
- private static class TableCache {
- private boolean exposed = false;
- private TableDesc tableDesc;
- private Set<ColumnDesc> exposedColumns = Sets.newLinkedHashSet();
- private Set<IRealization> realizations = Sets.newLinkedHashSet();
-
- TableCache(TableDesc tableDesc) {
- this.tableDesc = tableDesc;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java b/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
deleted file mode 100644
index dd146d9..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-import com.google.common.collect.Lists;
-import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.common.persistence.JsonSerializer;
-import org.apache.kylin.common.persistence.ResourceStore;
-import org.apache.kylin.common.persistence.Serializer;
-import org.apache.kylin.common.restclient.Broadcaster;
-import org.apache.kylin.common.restclient.CaseInsensitiveStringCache;
-import org.apache.kylin.metadata.MetadataManager;
-import org.apache.kylin.metadata.model.ColumnDesc;
-import org.apache.kylin.metadata.model.MeasureDesc;
-import org.apache.kylin.metadata.model.TableDesc;
-import org.apache.kylin.metadata.realization.IRealization;
-import org.apache.kylin.metadata.realization.RealizationRegistry;
-import org.apache.kylin.metadata.realization.RealizationType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class ProjectManager {
- private static final Logger logger = LoggerFactory.getLogger(ProjectManager.class);
- private static final ConcurrentHashMap<KylinConfig, ProjectManager> CACHE = new ConcurrentHashMap<KylinConfig, ProjectManager>();
- public static final Serializer<ProjectInstance> PROJECT_SERIALIZER = new JsonSerializer<ProjectInstance>(ProjectInstance.class);
-
- public static ProjectManager getInstance(KylinConfig config) {
- ProjectManager r = CACHE.get(config);
- if (r != null) {
- return r;
- }
-
- synchronized (ProjectManager.class) {
- r = CACHE.get(config);
- if (r != null) {
- return r;
- }
- try {
- r = new ProjectManager(config);
- CACHE.put(config, r);
- if (CACHE.size() > 1) {
- logger.warn("More than one singleton exist");
- }
- return r;
- } catch (IOException e) {
- throw new IllegalStateException("Failed to init ProjectManager from " + config, e);
- }
- }
- }
-
- public static void clearCache() {
- CACHE.clear();
- }
-
- // ============================================================================
-
- private KylinConfig config;
- private ProjectL2Cache l2Cache;
- // project name => ProjrectInstance
- private CaseInsensitiveStringCache<ProjectInstance> projectMap = new CaseInsensitiveStringCache<ProjectInstance>(Broadcaster.TYPE.PROJECT);
-
- private ProjectManager(KylinConfig config) throws IOException {
- logger.info("Initializing ProjectManager with metadata url " + config);
- this.config = config;
- this.l2Cache = new ProjectL2Cache(this);
-
- reloadAllProjects();
- }
-
- public void clearL2Cache() {
- l2Cache.clear();
- }
-
- private void reloadAllProjects() throws IOException {
- ResourceStore store = getStore();
- List<String> paths = store.collectResourceRecursively(ResourceStore.PROJECT_RESOURCE_ROOT, ".json");
-
- logger.debug("Loading Project from folder " + store.getReadableResourcePath(ResourceStore.PROJECT_RESOURCE_ROOT));
-
- for (String path : paths) {
- reloadProjectLocalAt(path);
- }
- wireProjectAndRealizations(projectMap.values());
- logger.debug("Loaded " + projectMap.size() + " Project(s)");
- }
-
- public ProjectInstance reloadProjectLocal(String project) throws IOException {
- return reloadProjectLocalAt(ProjectInstance.concatResourcePath(project));
- }
-
- private ProjectInstance reloadProjectLocalAt(String path) throws IOException {
-
- ProjectInstance projectInstance = getStore().getResource(path, ProjectInstance.class, PROJECT_SERIALIZER);
- if (projectInstance == null) {
- logger.warn("reload project at path:" + path + " not found, this:" + this.toString());
- return null;
- }
-
- projectInstance.init();
-
- projectMap.putLocal(projectInstance.getName(), projectInstance);
- clearL2Cache();
-
- return projectInstance;
- }
-
- private void wireProjectAndRealizations(Collection<ProjectInstance> projectInstances) {
- if (projectInstances.isEmpty())
- return;
-
- RealizationRegistry registry = RealizationRegistry.getInstance(config);
- for (ProjectInstance projectInstance : projectInstances) {
- for (RealizationEntry realization : projectInstance.getRealizationEntries()) {
- IRealization rel = registry.getRealization(realization.getType(), realization.getRealization());
- if (rel != null) {
- rel.setProjectName(projectInstance.getName());
- } else {
- logger.warn("Realization '" + realization + "' defined under project '" + projectInstance + "' is not found");
- }
- }
- }
- }
-
- public List<ProjectInstance> listAllProjects() {
- return new ArrayList<ProjectInstance>(projectMap.values());
- }
-
- public ProjectInstance getProject(String projectName) {
- projectName = norm(projectName);
- return projectMap.get(projectName);
- }
-
- public ProjectInstance createProject(String projectName, String owner, String description) throws IOException {
- logger.info("Creating project " + projectName);
-
- ProjectInstance currentProject = getProject(projectName);
- if (currentProject == null) {
- currentProject = ProjectInstance.create(projectName, owner, description, null, null);
- } else {
- throw new IllegalStateException("The project named " + projectName + "already exists");
- }
-
- updateProject(currentProject);
-
- return currentProject;
- }
-
- public ProjectInstance dropProject(String projectName) throws IOException {
- if (projectName == null)
- throw new IllegalArgumentException("Project name not given");
-
- ProjectInstance projectInstance = getProject(projectName);
-
- if (projectInstance == null) {
- throw new IllegalStateException("The project named " + projectName + " does not exist");
- }
-
- if (projectInstance.getRealizationCount(null) != 0) {
- throw new IllegalStateException("The project named " + projectName + " can not be deleted because there's still realizations in it. Delete them first.");
- }
-
- logger.info("Dropping project '" + projectInstance.getName() + "'");
-
- removeProject(projectInstance);
-
- return projectInstance;
- }
-
- //passive update due to underlying realization update
- public void updateProject(RealizationType type, String realizationName) throws IOException {
- for (ProjectInstance proj : findProjects(type, realizationName)) {
- updateProject(proj);
- }
- }
-
- //update project itself
- public ProjectInstance updateProject(ProjectInstance project, String newName, String newDesc) throws IOException {
- if (!project.getName().equals(newName)) {
- ProjectInstance newProject = this.createProject(newName, project.getOwner(), newDesc);
-
- newProject.setCreateTimeUTC(project.getCreateTimeUTC());
- newProject.recordUpdateTime(System.currentTimeMillis());
- newProject.setRealizationEntries(project.getRealizationEntries());
- newProject.setTables(project.getTables());
-
- removeProject(project);
- updateProject(newProject);
-
- return newProject;
- } else {
- project.setName(newName);
- project.setDescription(newDesc);
-
- if (project.getUuid() == null)
- project.updateRandomUuid();
-
- updateProject(project);
-
- return project;
- }
- }
-
- private void updateProject(ProjectInstance prj) throws IOException {
- synchronized (prj) {
- getStore().putResource(prj.getResourcePath(), prj, PROJECT_SERIALIZER);
- projectMap.put(norm(prj.getName()), prj); // triggers update broadcast
- clearL2Cache();
- }
- }
-
- private void removeProject(ProjectInstance proj) throws IOException {
- getStore().deleteResource(proj.getResourcePath());
- projectMap.remove(norm(proj.getName()));
- clearL2Cache();
- }
-
- public boolean isModelInProject(String projectName, String modelName) {
- return this.getProject(projectName).containsModel(modelName);
- }
-
- public ProjectInstance updateModelToProject(String modelName, String newProjectName) throws IOException {
- removeModelFromProjects(modelName);
- return addModelToProject(modelName, newProjectName);
- }
-
- public void removeModelFromProjects(String modelName) throws IOException {
- for (ProjectInstance projectInstance : findProjects(modelName)) {
- projectInstance.removeModel(modelName);
- updateProject(projectInstance);
- }
- }
-
- private ProjectInstance addModelToProject(String modelName, String project) throws IOException {
- String newProjectName = ProjectInstance.getNormalizedProjectName(project);
- ProjectInstance newProject = getProject(newProjectName);
- if (newProject == null) {
- throw new IllegalArgumentException("Project " + newProjectName + " does not exist.");
- }
- newProject.addModel(modelName);
- updateProject(newProject);
-
- return newProject;
- }
-
- public ProjectInstance moveRealizationToProject(RealizationType type, String realizationName, String newProjectName, String owner) throws IOException {
- removeRealizationsFromProjects(type, realizationName);
- return addRealizationToProject(type, realizationName, newProjectName, owner);
- }
-
- private ProjectInstance addRealizationToProject(RealizationType type, String realizationName, String project, String user) throws IOException {
- String newProjectName = norm(project);
- ProjectInstance newProject = getProject(newProjectName);
- if (newProject == null) {
- newProject = this.createProject(newProjectName, user, "This is a project automatically added when adding realization " + realizationName + "(" + type + ")");
- }
- newProject.addRealizationEntry(type, realizationName);
- updateProject(newProject);
-
- return newProject;
- }
-
- public void removeRealizationsFromProjects(RealizationType type, String realizationName) throws IOException {
- for (ProjectInstance projectInstance : findProjects(type, realizationName)) {
- projectInstance.removeRealization(type, realizationName);
- updateProject(projectInstance);
- }
- }
-
- public ProjectInstance addTableDescToProject(String[] tableIdentities, String projectName) throws IOException {
- MetadataManager metaMgr = getMetadataManager();
- ProjectInstance projectInstance = getProject(projectName);
- for (String tableId : tableIdentities) {
- TableDesc table = metaMgr.getTableDesc(tableId);
- if (table == null) {
- throw new IllegalStateException("Cannot find table '" + table + "' in metadata manager");
- }
- projectInstance.addTable(table.getIdentity());
- }
-
- updateProject(projectInstance);
- return projectInstance;
- }
-
- public List<ProjectInstance> findProjects(RealizationType type, String realizationName) {
- List<ProjectInstance> result = Lists.newArrayList();
- for (ProjectInstance prj : projectMap.values()) {
- for (RealizationEntry entry : prj.getRealizationEntries()) {
- if (entry.getType().equals(type) && entry.getRealization().equalsIgnoreCase(realizationName)) {
- result.add(prj);
- break;
- }
- }
- }
- return result;
- }
-
- private List<ProjectInstance> findProjects(String modelName) {
- List<ProjectInstance> projects = new ArrayList<ProjectInstance>();
- for (ProjectInstance projectInstance : projectMap.values()) {
- if (projectInstance.containsModel(modelName)) {
- projects.add(projectInstance);
- }
- }
-
- return projects;
- }
-
- public List<TableDesc> listDefinedTables(String project) throws IOException {
- return l2Cache.listDefinedTables(norm(project));
- }
-
- public Set<TableDesc> listExposedTables(String project) {
- return l2Cache.listExposedTables(norm(project));
- }
-
- public Set<ColumnDesc> listExposedColumns(String project, String table) {
- return l2Cache.listExposedColumns(norm(project), table);
- }
-
- public boolean isExposedTable(String project, String table) {
- return l2Cache.isExposedTable(norm(project), table);
- }
-
- public boolean isExposedColumn(String project, String table, String col) {
- return l2Cache.isExposedColumn(norm(project), table, col);
- }
-
- public Set<IRealization> listAllRealizations(String project) {
- return l2Cache.listAllRealizations(norm(project));
- }
-
- public Set<IRealization> getRealizationsByTable(String project, String tableName) {
- return l2Cache.getRealizationsByTable(norm(project), tableName.toUpperCase());
- }
-
- public List<IRealization> getOnlineRealizationByFactTable(String project, String factTable) {
- return l2Cache.getOnlineRealizationByFactTable(norm(project), factTable.toUpperCase());
- }
-
- public List<MeasureDesc> listEffectiveRewriteMeasures(String project, String factTable) {
- return l2Cache.listEffectiveRewriteMeasures(norm(project), factTable.toUpperCase());
- }
-
- KylinConfig getConfig() {
- return config;
- }
-
- ResourceStore getStore() {
- return ResourceStore.getStore(this.config);
- }
-
- MetadataManager getMetadataManager() {
- return MetadataManager.getInstance(config);
- }
-
- private String norm(String project) {
- return project;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectStatusEnum.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectStatusEnum.java b/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectStatusEnum.java
deleted file mode 100644
index 25f7329..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectStatusEnum.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-public enum ProjectStatusEnum {
-
- DISABLED, ENABLED
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectTable.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectTable.java b/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectTable.java
deleted file mode 100644
index 036fcc6..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectTable.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-import com.google.common.collect.HashMultiset;
-import com.google.common.collect.Multiset;
-import org.apache.kylin.metadata.realization.IRealization;
-
-/**
- * @author xduo
- */
-public class ProjectTable {
-
- private final String name;
-
- private Multiset<String> columns = HashMultiset.create();
-
- private Multiset<IRealization> realizations = HashMultiset.create();
-
- /**
- * @param name
- */
- public ProjectTable(String name) {
- super();
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public Multiset<String> getColumns() {
- return columns;
- }
-
- public void setColumns(Multiset<String> columns) {
- this.columns = columns;
- }
-
- public Multiset<IRealization> getRealizations() {
- return realizations;
- }
-
- public void setRealizations(Multiset<IRealization> realizations) {
- this.realizations = realizations;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ProjectTable other = (ProjectTable) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equalsIgnoreCase(other.name))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- return "ProjectTable [name=" + name + ", columns=" + columns + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/RealizationEntry.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/RealizationEntry.java b/metadata/src/main/java/org/apache/kylin/metadata/project/RealizationEntry.java
deleted file mode 100644
index 7541d77..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/RealizationEntry.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.kylin.metadata.realization.RealizationType;
-
-/**
- */
-@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
-public class RealizationEntry {
-
- @JsonProperty("type")
- private RealizationType type;
-
- @JsonProperty("realization")
- private String realization;
-
- public RealizationType getType() {
- return type;
- }
-
- public void setType(RealizationType type) {
- this.type = type;
- }
-
- public String getRealization() {
- return realization;
- }
-
- public void setRealization(String realization) {
- this.realization = realization;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- RealizationEntry entry = (RealizationEntry) o;
-
- if (realization != null ? !realization.equalsIgnoreCase(entry.realization) : entry.realization != null)
- return false;
- if (type != entry.type) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = type != null ? type.hashCode() : 0;
- result = 31 * result + (realization != null ? realization.hashCode() : 0);
- return result;
- }
-
- @Override
- public String toString() {
- return "" + type.name() + "." + realization;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
deleted file mode 100644
index ef80b39..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-import org.apache.kylin.metadata.model.DataModelDesc;
-import org.apache.kylin.metadata.model.MeasureDesc;
-import org.apache.kylin.metadata.model.TblColRef;
-
-import java.util.List;
-
-public interface IRealization {
-
- public boolean isCapable(SQLDigest digest);
-
- /**
- * Given the features of a query, return an integer indicating how capable the realization
- * is to answer the query.
- *
- * @return -1 if the realization cannot fulfill the query;
- * or a number between 0-100 if the realization can answer the query, the smaller
- * the number, the more efficient the realization.
- * Especially,
- * 0 - means the realization has the exact result pre-calculated, no less no more;
- * 100 - means the realization will scan the full table with little or no indexing.
- */
- public int getCost(SQLDigest digest);
-
- /**
- * Get whether this specific realization is a cube or InvertedIndex
- *
- * @return
- */
- public RealizationType getType();
-
- public DataModelDesc getDataModelDesc();
-
- public String getFactTable();
-
- public List<TblColRef> getAllColumns();
-
- public List<TblColRef> getAllDimensions();
-
- public List<MeasureDesc> getMeasures();
-
- public boolean isReady();
-
- public String getName();
-
- public String getCanonicalName();
-
- public String getProjectName();
-
- public void setProjectName(String prjName);
-
- public long getDateRangeStart();
-
- public long getDateRangeEnd();
-
- public String getModelName();
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationConstants.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationConstants.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationConstants.java
deleted file mode 100644
index 0f2c012..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationConstants.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-/**
- */
-public class IRealizationConstants {
-
- public final static String SharedHbaseStorageLocationPrefix = "KYLIN_";
- public final static String CubeHbaseStorageLocationPrefix = "KYLIN_";
- public final static String IIHbaseStorageLocationPrefix = "KYLIN_II_";
-
- /**
- * For each cube htable, we leverage htable's metadata to keep track of
- * which kylin server(represented by its kylin_metadata prefix) owns this htable
- */
- public final static String HTableTag = "KYLIN_HOST";
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationProvider.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationProvider.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationProvider.java
deleted file mode 100644
index 802dfb3..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationProvider.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-public interface IRealizationProvider {
-
- RealizationType getRealizationType();
-
- IRealization getRealization(String name);
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
deleted file mode 100644
index 618dff5..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-import com.google.common.collect.*;
-import org.apache.kylin.common.KylinConfig;
-
-import org.reflections.Reflections;
-import org.reflections.scanners.SubTypesScanner;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- */
-public class RealizationRegistry {
-
- private static final Logger logger = LoggerFactory.getLogger(RealizationRegistry.class);
- private static final ConcurrentHashMap<KylinConfig, RealizationRegistry> CACHE = new ConcurrentHashMap<KylinConfig, RealizationRegistry>();
-
- public static RealizationRegistry getInstance(KylinConfig config) {
- RealizationRegistry r = CACHE.get(config);
- if (r != null) {
- return r;
- }
-
- synchronized (RealizationRegistry.class) {
- r = CACHE.get(config);
- if (r != null) {
- return r;
- }
- try {
- r = new RealizationRegistry(config);
- CACHE.put(config, r);
- return r;
- } catch (IOException e) {
- throw new IllegalStateException("Failed to init CubeManager from " + config, e);
- }
- }
- }
-
- public static void clearCache() {
- CACHE.clear();
- }
-
- // ============================================================================
-
- private Map<RealizationType, IRealizationProvider> providers;
- private KylinConfig config;
-
- private RealizationRegistry(KylinConfig config) throws IOException {
- logger.info("Initializing RealizationRegistry with metadata url " + config);
- this.config = config;
- init();
- }
-
- private void init() {
- providers = Maps.newConcurrentMap();
-
- // use reflection to load providers
- final Set<Class<? extends IRealizationProvider>> realizationProviders = new Reflections("org.apache.kylin", new SubTypesScanner()).getSubTypesOf(IRealizationProvider.class);
- List<Throwable> es = Lists.newArrayList();
- for (Class<? extends IRealizationProvider> cls : realizationProviders) {
- try {
- IRealizationProvider p = (IRealizationProvider) cls.getMethod("getInstance", KylinConfig.class).invoke(null, config);
- providers.put(p.getRealizationType(), p);
-
- } catch (Exception | NoClassDefFoundError e) {
- es.add(e);
- }
-
- if (es.size() > 0) {
- for (Throwable exceptionOrError : es) {
- logger.error("Create new store instance failed ", exceptionOrError);
- }
- throw new IllegalArgumentException("Failed to find metadata store by url: " + config.getMetadataUrl());
- }
- }
-
- logger.info("RealizationRegistry is " + providers);
- }
-
- public Set<RealizationType> getRealizationTypes() {
- return Collections.unmodifiableSet(providers.keySet());
- }
-
- public IRealization getRealization(RealizationType type, String name) {
- IRealizationProvider p = providers.get(type);
- if (p == null) {
- logger.warn("No provider for realization type " + type);
- return null;
- }
-
- try {
- return p.getRealization(name);
- } catch (Exception ex) {
- // exception is possible if e.g. cube metadata is wrong
- logger.warn("Failed to load realization " + type + ":" + name, ex);
- return null;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationStatusEnum.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationStatusEnum.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationStatusEnum.java
deleted file mode 100644
index e4583f2..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationStatusEnum.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-public enum RealizationStatusEnum {
-
- DISABLED, BUILDING, READY, DESCBROKEN
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationType.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationType.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationType.java
deleted file mode 100644
index 3fcfe63..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationType.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-/**
- */
-
-//TODO: change to String for plugin
-public enum RealizationType {
- CUBE, INVERTED_INDEX, HYBRID
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
deleted file mode 100644
index 7811858..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.realization;
-
-import java.util.Collection;
-
-import org.apache.kylin.metadata.filter.TupleFilter;
-import org.apache.kylin.metadata.model.FunctionDesc;
-import org.apache.kylin.metadata.model.JoinDesc;
-import org.apache.kylin.metadata.model.TblColRef;
-
-/**
- */
-public class SQLDigest {
- public String factTable;
- public TupleFilter filter;
- public Collection<JoinDesc> joinDescs;
- public Collection<TblColRef> allColumns;
- public Collection<TblColRef> groupbyColumns;
- public Collection<TblColRef> filterColumns;
- public Collection<TblColRef> metricColumns;
- public Collection<FunctionDesc> aggregations;
-
- public SQLDigest(String factTable, TupleFilter filter, Collection<JoinDesc> joinDescs, Collection<TblColRef> allColumns, //
- Collection<TblColRef> groupbyColumns, Collection<TblColRef> filterColumns, Collection<TblColRef> aggregatedColumns, Collection<FunctionDesc> aggregateFunnc) {
- this.factTable = factTable;
- this.filter = filter;
- this.joinDescs = joinDescs;
- this.allColumns = allColumns;
- this.groupbyColumns = groupbyColumns;
- this.filterColumns = filterColumns;
- this.metricColumns = aggregatedColumns;
- this.aggregations = aggregateFunnc;
- }
-
- @Override
- public String toString() {
- return "fact table " + this.factTable + "," + //
- "group by " + this.groupbyColumns + "," + //
- "filter on " + this.filterColumns + "," + //
- "with aggregates" + this.aggregations + ".";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigestUtil.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigestUtil.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigestUtil.java
deleted file mode 100644
index 19b9ee7..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigestUtil.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.apache.kylin.metadata.realization;
-
-import org.apache.kylin.common.util.DateFormat;
-import org.apache.kylin.metadata.filter.*;
-import org.apache.kylin.metadata.model.DataType;
-import org.apache.kylin.metadata.model.TblColRef;
-
-import com.google.common.base.Function;
-import com.google.common.collect.BoundType;
-import com.google.common.collect.Range;
-
-/**
- */
-public class SQLDigestUtil {
-
- public static <F, T> T appendTsFilterToExecute(SQLDigest sqlDigest, TblColRef partitionColRef, Range<Long> tsRange, Function<F, T> action) {
-
- // add the boundary condition to query real-time
- TupleFilter originalFilter = sqlDigest.filter;
- sqlDigest.filter = createFilterForRealtime(originalFilter, partitionColRef, tsRange);
-
- boolean addFilterColumn = false, addAllColumn = false;
-
- if (!sqlDigest.filterColumns.contains(partitionColRef)) {
- sqlDigest.filterColumns.add(partitionColRef);
- addFilterColumn = true;
- }
-
- if (!sqlDigest.allColumns.contains(partitionColRef)) {
- sqlDigest.allColumns.add(partitionColRef);
- addAllColumn = true;
- }
-
- T ret = action.apply(null);
-
- // restore the sqlDigest
- sqlDigest.filter = originalFilter;
-
- if (addFilterColumn)
- sqlDigest.filterColumns.remove(partitionColRef);
-
- if (addAllColumn)
- sqlDigest.allColumns.remove(partitionColRef);
-
- return ret;
- }
-
- //ts column type differentiate
- private static String formatTimeStr(DataType type, long ts) {
- String ret;
- if (type == DataType.getInstance("date")) {
- ret = DateFormat.formatToDateStr(ts);
- } else if (type == DataType.getInstance("long")) {
- ret = String.valueOf(ts);
- } else {
- throw new IllegalArgumentException("Illegal type for partition column " + type);
- }
- return ret;
- }
-
- private static TupleFilter createFilterForRealtime(TupleFilter originFilter, TblColRef partitionColRef, Range<Long> tsRange) {
- DataType type = partitionColRef.getColumnDesc().getType();
-
- String startTimeStr, endTimeStr;
- CompareTupleFilter startFilter = null, endFilter = null;
- if (tsRange.hasLowerBound()) {
- startTimeStr = formatTimeStr(type, tsRange.lowerEndpoint());
- if (tsRange.lowerBoundType() == BoundType.CLOSED) {
- startFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GTE);
- } else {
- startFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.GT);
- }
- ColumnTupleFilter columnTupleFilter = new ColumnTupleFilter(partitionColRef);
- ConstantTupleFilter constantTupleFilter = new ConstantTupleFilter(startTimeStr);
- startFilter.addChild(columnTupleFilter);
- startFilter.addChild(constantTupleFilter);
- }
-
- if (tsRange.hasUpperBound()) {
- endTimeStr = formatTimeStr(type, tsRange.upperEndpoint());
- if (tsRange.upperBoundType() == BoundType.CLOSED) {
- endFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.LTE);
- } else {
- endFilter = new CompareTupleFilter(TupleFilter.FilterOperatorEnum.LT);
- }
- ColumnTupleFilter columnTupleFilter = new ColumnTupleFilter(partitionColRef);
- ConstantTupleFilter constantTupleFilter = new ConstantTupleFilter(endTimeStr);
- endFilter.addChild(columnTupleFilter);
- endFilter.addChild(constantTupleFilter);
- }
-
- if (originFilter == null) {
- if (endFilter == null) {
- return startFilter;
- }
- if (startFilter == null) {
- return endFilter;
- }
- }
-
- LogicalTupleFilter logicalTupleFilter = new LogicalTupleFilter(TupleFilter.FilterOperatorEnum.AND);
-
- if (originFilter != null) {
- logicalTupleFilter.addChild(originFilter);
- }
- if (startFilter != null) {
- logicalTupleFilter.addChild(startFilter);
- }
- if (endFilter != null) {
- logicalTupleFilter.addChild(endFilter);
- }
-
- return logicalTupleFilter;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/realization/StreamSQLDigest.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/realization/StreamSQLDigest.java b/metadata/src/main/java/org/apache/kylin/metadata/realization/StreamSQLDigest.java
deleted file mode 100644
index 4fd9f17..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/realization/StreamSQLDigest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.apache.kylin.metadata.realization;
-
-import java.util.Arrays;
-
-import org.apache.kylin.metadata.filter.TsConditionEraser;
-import org.apache.kylin.metadata.filter.StringCodeSystem;
-import org.apache.kylin.metadata.filter.TupleFilterSerializer;
-import org.apache.kylin.metadata.model.TblColRef;
-
-/**
- *
- * A encapsulation of {@link SQLDigest},
- * This class makes {@link SQLDigest} being able to compare with other {@link SQLDigest}
- * regardless of the timestamp conditions(In top level where conditions concatenated by ANDs)
- */
-public class StreamSQLDigest {
-
- private final SQLDigest sqlDigest;
-
- private final int hashCode;
- private final byte[] filterSerialized;
-
- public StreamSQLDigest(SQLDigest sqlDigest, TblColRef tsCol) {
- this.sqlDigest = sqlDigest;
-
- //must use new instance of IgnoreTsCondition
- TsConditionEraser decorator = new TsConditionEraser(tsCol, sqlDigest.filter);
- filterSerialized = TupleFilterSerializer.serialize(sqlDigest.filter, decorator, StringCodeSystem.INSTANCE);
-
- int nonFilterHashCode = calculateNonFilterHashCode();
- this.hashCode = 31 * nonFilterHashCode + (filterSerialized != null ? Arrays.hashCode(filterSerialized) : 0);
- }
-
-
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- StreamSQLDigest other = (StreamSQLDigest) o;
-
- if (filterSerialized != null ? !Arrays.equals(filterSerialized, other.filterSerialized) : other.filterSerialized != null)
- return false;
- if (sqlDigest.aggregations != null ? !sqlDigest.aggregations.equals(other.sqlDigest.aggregations) : other.sqlDigest.aggregations != null)
- return false;
- if (sqlDigest.allColumns != null ? !sqlDigest.allColumns.equals(other.sqlDigest.allColumns) : other.sqlDigest.allColumns != null)
- return false;
- if (sqlDigest.factTable != null ? !sqlDigest.factTable.equals(other.sqlDigest.factTable) : other.sqlDigest.factTable != null)
- return false;
- if (sqlDigest.filterColumns != null ? !sqlDigest.filterColumns.equals(other.sqlDigest.filterColumns) : other.sqlDigest.filterColumns != null)
- return false;
- if (sqlDigest.groupbyColumns != null ? !sqlDigest.groupbyColumns.equals(other.sqlDigest.groupbyColumns) : other.sqlDigest.groupbyColumns != null)
- return false;
- if (sqlDigest.joinDescs != null ? !sqlDigest.joinDescs.equals(other.sqlDigest.joinDescs) : other.sqlDigest.joinDescs != null)
- return false;
- if (sqlDigest.metricColumns != null ? !sqlDigest.metricColumns.equals(other.sqlDigest.metricColumns) : other.sqlDigest.metricColumns != null)
- return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- return this.hashCode;
- }
-
- public int calculateNonFilterHashCode() {
- int result = sqlDigest.factTable != null ? sqlDigest.factTable.hashCode() : 0;
- result = 31 * result + (sqlDigest.joinDescs != null ? sqlDigest.joinDescs.hashCode() : 0);
- result = 31 * result + (sqlDigest.allColumns != null ? sqlDigest.allColumns.hashCode() : 0);
- result = 31 * result + (sqlDigest.groupbyColumns != null ? sqlDigest.groupbyColumns.hashCode() : 0);
- result = 31 * result + (sqlDigest.filterColumns != null ? sqlDigest.filterColumns.hashCode() : 0);
- result = 31 * result + (sqlDigest.metricColumns != null ? sqlDigest.metricColumns.hashCode() : 0);
- result = 31 * result + (sqlDigest.aggregations != null ? sqlDigest.aggregations.hashCode() : 0);
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/BigDecimalSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/BigDecimalSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/BigDecimalSerializer.java
deleted file mode 100644
index 72e3696..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/BigDecimalSerializer.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.serializer;
-
-import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.common.util.BytesUtil;
-import org.apache.kylin.metadata.model.DataType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-
-/**
- * @author yangli9
- *
- */
-public class BigDecimalSerializer extends DataTypeSerializer<BigDecimal> {
-
- private static final Logger logger = LoggerFactory.getLogger(BigDecimalSerializer.class);
-
- final DataType type;
- final int maxLength;
-
- int avoidVerbose = 0;
-
- public BigDecimalSerializer(DataType type) {
- this.type = type;
- // see serialize(): 1 byte scale, 1 byte length, assume every 2 digits takes 1 byte
- this.maxLength = 1 + 1 + (type.getPrecision() + 1) / 2;
- }
-
- @Override
- public void serialize(BigDecimal value, ByteBuffer out) {
- if (value.scale() > type.getScale()) {
- if (avoidVerbose % 10000 == 0) {
- logger.warn("value's scale has exceeded the " + type.getScale() + ", cut it off, to ensure encoded value do not exceed maxLength " + maxLength + " times:" + (avoidVerbose++));
- }
- value = value.setScale(type.getScale(), BigDecimal.ROUND_HALF_EVEN);
- }
- byte[] bytes = value.unscaledValue().toByteArray();
- if (bytes.length + 2 > maxLength) {
- throw new IllegalArgumentException("'" + value + "' exceeds the expected length for type " + type);
- }
-
- BytesUtil.writeVInt(value.scale(), out);
- BytesUtil.writeVInt(bytes.length, out);
- out.put(bytes);
- }
-
- @Override
- public BigDecimal deserialize(ByteBuffer in) {
- int scale = BytesUtil.readVInt(in);
- int n = BytesUtil.readVInt(in);
-
- byte[] bytes = new byte[n];
- in.get(bytes);
-
- return new BigDecimal(new BigInteger(bytes), scale);
- }
-
-
- @Override
- public int peekLength(ByteBuffer in) {
- int mark = in.position();
-
- @SuppressWarnings("unused")
- int scale = BytesUtil.readVInt(in);
- int n = BytesUtil.readVInt(in);
- int len = in.position() - mark + n;
-
- in.position(mark);
- return len;
- }
-
- @Override
- public int maxLength() {
- return maxLength;
- }
-
- @Override
- public BigDecimal valueOf(byte[] value) {
- if (value == null)
- return new BigDecimal(0);
- else
- return new BigDecimal(Bytes.toString(value));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/DataTypeSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DataTypeSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/DataTypeSerializer.java
deleted file mode 100644
index 739cde4..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DataTypeSerializer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.serializer;
-
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.google.common.collect.Maps;
-import org.apache.kylin.common.util.BytesSerializer;
-import org.apache.kylin.metadata.model.DataType;
-
-/**
- * @author yangli9
- *
- */
-abstract public class DataTypeSerializer<T> implements BytesSerializer<T> {
-
- final static Map<String, Class<?>> implementations;
- static {
- HashMap<String, Class<?>> impl = Maps.newHashMap();
- impl.put("varchar", StringSerializer.class);
- impl.put("decimal", BigDecimalSerializer.class);
- impl.put("double", DoubleSerializer.class);
- impl.put("float", DoubleSerializer.class);
- impl.put("bigint", LongSerializer.class);
- impl.put("long", LongSerializer.class);
- impl.put("integer", LongSerializer.class);
- impl.put("int", LongSerializer.class);
- impl.put("smallint", LongSerializer.class);
- impl.put("date", DateTimeSerializer.class);
- impl.put("datetime", DateTimeSerializer.class);
- impl.put("timestamp", DateTimeSerializer.class);
- implementations = Collections.unmodifiableMap(impl);
-
- }
-
- public static DataTypeSerializer<?> create(String dataType) {
- return create(DataType.getInstance(dataType));
- }
-
- public static DataTypeSerializer<?> create(DataType type) {
- if (type.isHLLC()) {
- return new HLLCSerializer(type);
- }
-
- Class<?> clz = implementations.get(type.getName());
- if (clz == null)
- throw new RuntimeException("No MeasureSerializer for type " + type);
-
- try {
- return (DataTypeSerializer<?>) clz.getConstructor(DataType.class).newInstance(type);
- } catch (Exception e) {
- throw new RuntimeException(e); // never happen
- }
- }
-
- /** peek into buffer and return the length of serialization */
- abstract public int peekLength(ByteBuffer in);
-
- /** return the max number of bytes to the longest serialization */
- abstract public int maxLength();
-
- /** convert from String to obj (string often come as byte[] in mapred) */
- abstract public T valueOf(byte[] value);
-
- /** convert from String to obj */
- public T valueOf(String value) {
- try {
- return valueOf(value.getBytes("UTF-8"));
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e); // never happen
- }
- }
-
- /** convert from obj to string */
- public String toString(T value) {
- if (value == null)
- return "NULL";
- else
- return value.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/DateTimeSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DateTimeSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/DateTimeSerializer.java
deleted file mode 100644
index 7c0fd8e..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DateTimeSerializer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.kylin.metadata.serializer;
-
-import java.nio.ByteBuffer;
-
-import org.apache.kylin.common.util.Bytes;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.kylin.metadata.model.DataType;
-import org.apache.kylin.common.util.DateFormat;
-
-public class DateTimeSerializer extends DataTypeSerializer<LongWritable> {
-
- // be thread-safe and avoid repeated obj creation
- private ThreadLocal<LongWritable> current = new ThreadLocal<LongWritable>();
-
- public DateTimeSerializer(DataType type) {
- }
-
- @Override
- public void serialize(LongWritable value, ByteBuffer out) {
- out.putLong(value.get());
- }
-
- private LongWritable current() {
- LongWritable l = current.get();
- if (l == null) {
- l = new LongWritable();
- current.set(l);
- }
- return l;
- }
-
- @Override
- public LongWritable deserialize(ByteBuffer in) {
- LongWritable l = current();
- l.set(in.getLong());
- return l;
- }
-
- @Override
- public int peekLength(ByteBuffer in) {
- return 8;
- }
-
- @Override
- public int maxLength() {
- return 8;
- }
-
- @Override
- public LongWritable valueOf(byte[] value) {
- LongWritable l = current();
- if (value == null)
- l.set(0L);
- else
- l.set(DateFormat.stringToMillis(Bytes.toString(value)));
- return l;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/DoubleSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DoubleSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/DoubleSerializer.java
deleted file mode 100644
index 2a92535..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/DoubleSerializer.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.serializer;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hadoop.io.DoubleWritable;
-import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.metadata.model.DataType;
-
-/**
- * @author yangli9
- *
- */
-public class DoubleSerializer extends DataTypeSerializer<DoubleWritable> {
-
- // be thread-safe and avoid repeated obj creation
- private ThreadLocal<DoubleWritable> current = new ThreadLocal<DoubleWritable>();
-
- public DoubleSerializer(DataType type) {
- }
-
- @Override
- public void serialize(DoubleWritable value, ByteBuffer out) {
- out.putDouble(value.get());
- }
-
- private DoubleWritable current() {
- DoubleWritable d = current.get();
- if (d == null) {
- d = new DoubleWritable();
- current.set(d);
- }
- return d;
- }
-
- @Override
- public DoubleWritable deserialize(ByteBuffer in) {
- DoubleWritable d = current();
- d.set(in.getDouble());
- return d;
- }
-
- @Override
- public int peekLength(ByteBuffer in) {
- return 8;
- }
-
- @Override
- public int maxLength() {
- return 8;
- }
-
- @Override
- public DoubleWritable valueOf(byte[] value) {
- DoubleWritable d = current();
- if (value == null)
- d.set(0d);
- else
- d.set(Double.parseDouble(Bytes.toString(value)));
- return d;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/HLLCSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/HLLCSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/HLLCSerializer.java
deleted file mode 100644
index 3f923e8..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/HLLCSerializer.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.serializer;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import org.apache.kylin.common.hll.HyperLogLogPlusCounter;
-import org.apache.kylin.metadata.model.DataType;
-
-/**
- * @author yangli9
- *
- */
-public class HLLCSerializer extends DataTypeSerializer<HyperLogLogPlusCounter> {
-
- // be thread-safe and avoid repeated obj creation
- private ThreadLocal<HyperLogLogPlusCounter> current = new ThreadLocal<HyperLogLogPlusCounter>();
-
- private int precision;
-
- public HLLCSerializer(DataType type) {
- this.precision = type.getPrecision();
- }
-
- @Override
- public void serialize(HyperLogLogPlusCounter value, ByteBuffer out) {
- try {
- value.writeRegisters(out);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private HyperLogLogPlusCounter current() {
- HyperLogLogPlusCounter hllc = current.get();
- if (hllc == null) {
- hllc = new HyperLogLogPlusCounter(precision);
- current.set(hllc);
- }
- return hllc;
- }
-
- @Override
- public HyperLogLogPlusCounter deserialize(ByteBuffer in) {
- HyperLogLogPlusCounter hllc = current();
- try {
- hllc.readRegisters(in);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- return hllc;
- }
-
- @Override
- public int peekLength(ByteBuffer in) {
- return current().peekLength(in);
- }
-
- @Override
- public int maxLength() {
- return current().maxLength();
- }
-
- @Override
- public HyperLogLogPlusCounter valueOf(byte[] value) {
- HyperLogLogPlusCounter hllc = current();
- hllc.clear();
- if (value == null)
- hllc.add("__nUlL__");
- else
- hllc.add(value);
- return hllc;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/LongSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/LongSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/LongSerializer.java
deleted file mode 100644
index 81b4b20..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/LongSerializer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.serializer;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.common.util.BytesUtil;
-import org.apache.kylin.metadata.model.DataType;
-
-/**
- * @author yangli9
- *
- */
-public class LongSerializer extends DataTypeSerializer<LongWritable> {
-
- // be thread-safe and avoid repeated obj creation
- private ThreadLocal<LongWritable> current = new ThreadLocal<LongWritable>();
-
- public LongSerializer(DataType type) {
- }
-
- @Override
- public void serialize(LongWritable value, ByteBuffer out) {
- BytesUtil.writeVLong(value.get(), out);
- }
-
- private LongWritable current() {
- LongWritable l = current.get();
- if (l == null) {
- l = new LongWritable();
- current.set(l);
- }
- return l;
- }
-
- @Override
- public LongWritable deserialize(ByteBuffer in) {
- LongWritable l = current();
- l.set(BytesUtil.readVLong(in));
- return l;
- }
-
- @Override
- public int peekLength(ByteBuffer in) {
- int mark = in.position();
-
- BytesUtil.readVLong(in);
- int len = in.position() - mark;
-
- in.position(mark);
- return len;
- }
-
- @Override
- public int maxLength() {
- return 9; // vlong: 1 + 8
- }
-
- @Override
- public LongWritable valueOf(byte[] value) {
- LongWritable l = current();
- if (value == null)
- l.set(0L);
- else
- l.set(Long.parseLong(Bytes.toString(value)));
- return l;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/serializer/StringSerializer.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/serializer/StringSerializer.java b/metadata/src/main/java/org/apache/kylin/metadata/serializer/StringSerializer.java
deleted file mode 100644
index 8686fb7..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/serializer/StringSerializer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.kylin.metadata.serializer;
-
-import java.nio.ByteBuffer;
-
-import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.common.util.BytesUtil;
-import org.apache.kylin.metadata.model.DataType;
-
-public class StringSerializer extends DataTypeSerializer<String> {
-
- final DataType type;
- final int maxLength;
-
- public StringSerializer(DataType type) {
- this.type = type;
- // see serialize(): 2 byte length, rest is String.toBytes()
- this.maxLength = 2 + type.getPrecision();
- }
-
- @Override
- public void serialize(String value, ByteBuffer out) {
- int start = out.position();
-
- BytesUtil.writeUTFString(value, out);
-
- if (out.position() - start > maxLength)
- throw new IllegalArgumentException("'" + value + "' exceeds the expected length for type " + type);
- }
-
- @Override
- public String deserialize(ByteBuffer in) {
- return BytesUtil.readUTFString(in);
- }
-
- @Override
- public int peekLength(ByteBuffer in) {
- return BytesUtil.peekByteArrayLength(in);
- }
-
- @Override
- public int maxLength() {
- return maxLength;
- }
-
- @Override
- public String valueOf(byte[] value) {
- return Bytes.toString(value);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/tuple/CompoundTupleIterator.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/tuple/CompoundTupleIterator.java b/metadata/src/main/java/org/apache/kylin/metadata/tuple/CompoundTupleIterator.java
deleted file mode 100644
index f5d8dd6..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/tuple/CompoundTupleIterator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.kylin.metadata.tuple;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterators;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- */
-public class CompoundTupleIterator implements ITupleIterator {
- private static final Logger logger = LoggerFactory.getLogger(CompoundTupleIterator.class);
- private List<ITupleIterator> backends;
- private Iterator<ITuple> compoundIterator;
-
- public CompoundTupleIterator(List<ITupleIterator> backends) {
- Preconditions.checkArgument(backends != null && backends.size() != 0, "backends not exists");
- this.backends = backends;
- this.compoundIterator = Iterators.concat(backends.iterator());
- }
-
- @Override
- public void close() {
- for (ITupleIterator i : backends) {
- i.close();
- }
- }
-
- @Override
- public boolean hasNext() {
- return this.compoundIterator.hasNext();
- }
-
- @Override
- public ITuple next() {
- return this.compoundIterator.next();
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/tuple/IEvaluatableTuple.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/tuple/IEvaluatableTuple.java b/metadata/src/main/java/org/apache/kylin/metadata/tuple/IEvaluatableTuple.java
deleted file mode 100644
index d5a5061..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/tuple/IEvaluatableTuple.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.kylin.metadata.tuple;
-
-import org.apache.kylin.metadata.model.TblColRef;
-
-public interface IEvaluatableTuple {
-
- Object getValue(TblColRef col);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/tuple/ITuple.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/tuple/ITuple.java b/metadata/src/main/java/org/apache/kylin/metadata/tuple/ITuple.java
deleted file mode 100644
index 7d401ec..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/tuple/ITuple.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.tuple;
-
-import java.util.List;
-
-import org.apache.kylin.metadata.model.TblColRef;
-
-/**
- * Tuple is a record row, contains multiple values being lookup by either field
- * (calcite notion) or column (kylin notion).
- *
- * @author yangli9
- */
-public interface ITuple extends IEvaluatableTuple {
-
- List<String> getAllFields();
-
- List<TblColRef> getAllColumns();
-
- Object[] getAllValues();
-
- ITuple makeCopy();
-
- // declared from IEvaluatableTuple: public Object getValue(TblColRef col);
-
-}