Repository: carbondata Updated Branches: refs/heads/master 8fe165668 -> 15ab6b066
[CARBONDATA-2327] [Presto] Fixed invalid schema name _system shows when executed show schemas in presto [Presto] Fixed invalid schema name _system shows when executed show schemas in presto This closes #2164 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/15ab6b06 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/15ab6b06 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/15ab6b06 Branch: refs/heads/master Commit: 15ab6b06660e14d5b8a5b22556262db1a9d47012 Parents: 8fe1656 Author: anubhav100 <anubhav.ta...@knoldus.in> Authored: Thu Apr 12 11:46:37 2018 +0530 Committer: chenliang613 <chenliang...@huawei.com> Committed: Fri May 18 12:22:50 2018 +0800 ---------------------------------------------------------------------- .../carbondata/presto/CarbondataMetadata.java | 1 + .../presto/impl/CarbonTableReader.java | 20 ++++++++++++---- .../integrationtest/PrestoAllDataTypeTest.scala | 24 ++++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/15ab6b06/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java ---------------------------------------------------------------------- diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java index cc8043e..718c628 100755 --- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java +++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java @@ -71,6 +71,7 @@ public class CarbondataMetadata implements ConnectorMetadata { ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder(); for (String schemaName : schemaNames) { for (String tableName : carbonTableReader.getTableNames(schemaName)) { + if(!tableName.equalsIgnoreCase(".DS_Store")) builder.add(new SchemaTableName(schemaName, tableName)); } } http://git-wip-us.apache.org/repos/asf/carbondata/blob/15ab6b06/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java ---------------------------------------------------------------------- diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java index e8e986a..ad5b7ee 100755 --- a/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java +++ b/integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java @@ -123,6 +123,10 @@ public class CarbonTableReader { private static final LogService LOGGER = LogServiceFactory.getLogService(CarbonTableReader.class.getName()); + /** + * List Of Schemas + */ + private List<String> schemaNames = new ArrayList<>(); @Inject public CarbonTableReader(CarbonTableConfig config) { this.config = requireNonNull(config, "CarbonTableConfig is null"); @@ -203,12 +207,18 @@ public class CarbonTableReader { */ private List<String> updateSchemaList() { updateCarbonFile(); - if (carbonFileList != null) { - return Stream.of(carbonFileList.listFiles()).map(CarbonFile::getName).collect(Collectors.toList()); + Stream.of(carbonFileList.listFiles()).forEach(this::getName); + return schemaNames; } else return ImmutableList.of(); } + private void getName(CarbonFile carbonFile){ + if(!carbonFile.getName().equalsIgnoreCase("_system") && !carbonFile.getName().equalsIgnoreCase(".ds_store")){ + schemaNames.add(carbonFile.getName()); + } + } + /** * Get the names of the tables in the given schema. * @@ -278,13 +288,13 @@ public class CarbonTableReader { } if (isKeyExists) { - CarbonTableCacheModel ctcm = carbonCache.get().get(schemaTableName); - if(ctcm != null && ctcm.carbonTable.getTableInfo() != null) { + CarbonTableCacheModel carbonTableCacheModel = carbonCache.get().get(schemaTableName); + if(carbonTableCacheModel != null && carbonTableCacheModel.carbonTable.getTableInfo() != null) { Long latestTime = FileFactory.getCarbonFile( CarbonTablePath.getSchemaFilePath( carbonCache.get().get(schemaTableName).carbonTable.getTablePath()) ).getLastModifiedTime(); - Long oldTime = ctcm.carbonTable.getTableInfo().getLastUpdatedTime(); + Long oldTime = carbonTableCacheModel.carbonTable.getTableInfo().getLastUpdatedTime(); if (DateUtils.truncate(new Date(latestTime), Calendar.MINUTE) .after(DateUtils.truncate(new Date(oldTime), Calendar.MINUTE))) { removeTableFromCache(schemaTableName); http://git-wip-us.apache.org/repos/asf/carbondata/blob/15ab6b06/integration/presto/src/test/scala/org/apache/carbondata/presto/integrationtest/PrestoAllDataTypeTest.scala ---------------------------------------------------------------------- diff --git a/integration/presto/src/test/scala/org/apache/carbondata/presto/integrationtest/PrestoAllDataTypeTest.scala b/integration/presto/src/test/scala/org/apache/carbondata/presto/integrationtest/PrestoAllDataTypeTest.scala index ce17682..2e7402a 100644 --- a/integration/presto/src/test/scala/org/apache/carbondata/presto/integrationtest/PrestoAllDataTypeTest.scala +++ b/integration/presto/src/test/scala/org/apache/carbondata/presto/integrationtest/PrestoAllDataTypeTest.scala @@ -19,9 +19,12 @@ package org.apache.carbondata.presto.integrationtest import java.io.File +import org.apache.hadoop.fs.permission.{FsAction, FsPermission} import org.scalatest.{BeforeAndAfterAll, FunSuiteLike} import org.apache.carbondata.common.logging.LogServiceFactory +import org.apache.carbondata.core.datastore.impl.FileFactory +import org.apache.carbondata.core.datastore.impl.FileFactory.FileType import org.apache.carbondata.presto.server.PrestoServer @@ -68,6 +71,7 @@ class PrestoAllDataTypeTest extends FunSuiteLike with BeforeAndAfterAll { .createCarbonStore(storePath, s"$rootPath/integration/presto/src/test/resources/alldatatype.csv") logger.info(s"\nCarbon store is created at location: $storePath") + cleanUp PrestoServer.startServer(storePath) } @@ -497,4 +501,24 @@ class PrestoAllDataTypeTest extends FunSuiteLike with BeforeAndAfterAll { assert(actualResult.equals(expectedResult)) } + + test("test the show schemas result"){ + val actualResult = PrestoServer.executeQuery("SHOW SCHEMAS") + assert(actualResult.equals(List(Map("Schema" -> "information_schema"), Map("Schema" -> "testdb")))) + } + test("test the show tables"){ + val actualResult = PrestoServer.executeQuery("SHOW TABLES") + assert(actualResult.equals(List(Map("Table" -> "testtable")))) + } + + private def cleanUp(): Unit = { + FileFactory.deleteFile(s"$storePath/Fact", FileType.LOCAL) + FileFactory + .createDirectoryAndSetPermission(s"$storePath/_system", + new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)) + FileFactory + .createDirectoryAndSetPermission(s"$storePath/.DS_Store", + new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)) + FileFactory.createNewFile(s"$storePath/testdb/.DS_STORE",FileType.LOCAL) + } } \ No newline at end of file