Github user ajantha-bhat commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2982#discussion_r240475287
  
    --- Diff: 
integration/presto/src/main/java/org/apache/carbondata/presto/impl/CarbonTableReader.java
 ---
    @@ -364,23 +355,38 @@ private CarbonTable 
parseCarbonMetadata(SchemaTableName table) {
           String tablePath = storePath + "/" + 
carbonTableIdentifier.getDatabaseName() + "/"
               + carbonTableIdentifier.getTableName();
     
    -      //Step 2: read the metadata (tableInfo) of the table.
    -      ThriftReader.TBaseCreator createTBase = new 
ThriftReader.TBaseCreator() {
    -        // TBase is used to read and write thrift objects.
    -        // TableInfo is a kind of TBase used to read and write table 
information.
    -        // TableInfo is generated by thrift,
    -        // see schema.thrift under format/src/main/thrift for details.
    -        public TBase create() {
    -          return new org.apache.carbondata.format.TableInfo();
    +      String metadataPath = CarbonTablePath.getSchemaFilePath(tablePath);
    +      boolean isTransactionalTable = false;
    +      try {
    +        if (FileFactory.getCarbonFile(metadataPath)
    +            .isFileExist(metadataPath, 
FileFactory.getFileType(metadataPath))) {
    +          // If metadata folder exists, it is a transactional table
    +          isTransactionalTable = true;
             }
    -      };
    -      ThriftReader thriftReader =
    -          new ThriftReader(CarbonTablePath.getSchemaFilePath(tablePath), 
createTBase);
    -      thriftReader.open();
    -      org.apache.carbondata.format.TableInfo tableInfo =
    -          (org.apache.carbondata.format.TableInfo) thriftReader.read();
    -      thriftReader.close();
    -
    +      } catch (IOException e) {
    +        throw new RuntimeException(e);
    +      }
    +      org.apache.carbondata.format.TableInfo tableInfo;
    +      if (isTransactionalTable) {
    +        //Step 2: read the metadata (tableInfo) of the table.
    +        ThriftReader.TBaseCreator createTBase = new 
ThriftReader.TBaseCreator() {
    +          // TBase is used to read and write thrift objects.
    +          // TableInfo is a kind of TBase used to read and write table 
information.
    +          // TableInfo is generated by thrift,
    +          // see schema.thrift under format/src/main/thrift for details.
    +          public TBase create() {
    +            return new org.apache.carbondata.format.TableInfo();
    +          }
    +        };
    +        ThriftReader thriftReader =
    +            new ThriftReader(CarbonTablePath.getSchemaFilePath(tablePath), 
createTBase);
    +        thriftReader.open();
    +        tableInfo = (org.apache.carbondata.format.TableInfo) 
thriftReader.read();
    +        thriftReader.close();
    +      } else {
    +        tableInfo =
    +            CarbonUtil.inferSchema(tablePath, table.getTableName(), false, 
new Configuration());
    --- End diff --
    
    I have tested. It works.
    
    but better to use
    FileFactory.getConfiguration(). I will change to it,


---

Reply via email to