Github user sounakr commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2318#discussion_r190140779
  
    --- Diff: 
store/sdk/src/test/java/org/apache/carbondata/sdk/file/CarbonReaderTest.java ---
    @@ -177,4 +239,134 @@ public void testWriteAndReadFilesNonTransactional() 
throws IOException, Interrup
         reader.close();
         FileUtils.deleteDirectory(new File(path));
       }
    +
    +  CarbonProperties carbonProperties;
    +
    +  @Override
    +  public void setUp() {
    +    carbonProperties = CarbonProperties.getInstance();
    +  }
    +
    +  private static final LogService LOGGER =
    +      LogServiceFactory.getLogService(CarbonReaderTest.class.getName());
    +
    +  @Test
    +  public void testTimeStampAndBadRecord() throws IOException, 
InterruptedException {
    +    String timestampFormat = 
carbonProperties.getProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT,
    +        CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT);
    +    String badRecordAction = 
carbonProperties.getProperty(CarbonCommonConstants.CARBON_BAD_RECORDS_ACTION,
    +        CarbonCommonConstants.CARBON_BAD_RECORDS_ACTION_DEFAULT);
    +    String badRecordLoc = 
carbonProperties.getProperty(CarbonCommonConstants.CARBON_BADRECORDS_LOC,
    +        CarbonCommonConstants.CARBON_BADRECORDS_LOC_DEFAULT_VAL);
    +    String rootPath = new File(this.getClass().getResource("/").getPath()
    +        + "../../").getCanonicalPath();
    +    String storeLocation = rootPath + "/target/";
    +    carbonProperties
    +        .addProperty(CarbonCommonConstants.CARBON_BADRECORDS_LOC, 
storeLocation)
    +        .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, 
"yyyy-MM-dd hh:mm:ss")
    +        .addProperty(CarbonCommonConstants.CARBON_BAD_RECORDS_ACTION, 
"REDIRECT");
    +    String path = "./testWriteFiles";
    +    FileUtils.deleteDirectory(new File(path));
    +
    +    Field[] fields = new Field[9];
    +    fields[0] = new Field("stringField", DataTypes.STRING);
    +    fields[1] = new Field("intField", DataTypes.INT);
    +    fields[2] = new Field("shortField", DataTypes.SHORT);
    +    fields[3] = new Field("longField", DataTypes.LONG);
    +    fields[4] = new Field("doubleField", DataTypes.DOUBLE);
    +    fields[5] = new Field("boolField", DataTypes.BOOLEAN);
    +    fields[6] = new Field("dateField", DataTypes.DATE);
    +    fields[7] = new Field("timeField", DataTypes.TIMESTAMP);
    +    fields[8] = new Field("decimalField", DataTypes.createDecimalType(8, 
2));
    +
    +    try {
    +      CarbonWriterBuilder builder = CarbonWriter.builder()
    +          .isTransactionalTable(true)
    +          .persistSchemaFile(true)
    +          .outputPath(path);
    +
    +      CarbonWriter writer = builder.buildWriterForCSVInput(new 
Schema(fields));
    +
    +      for (int i = 0; i < 100; i++) {
    +        String[] row = new String[]{
    +            "robot" + (i % 10),
    +            String.valueOf(i),
    +            String.valueOf(i),
    +            String.valueOf(Long.MAX_VALUE - i),
    +            String.valueOf((double) i / 2),
    +            String.valueOf(true),
    +            "2018-05-12",
    +            "2018-05-12",
    +            "12.345"
    +        };
    +        writer.write(row);
    +        String[] row2 = new String[]{
    +            "robot" + (i % 10),
    +            String.valueOf(i),
    +            String.valueOf(i),
    +            String.valueOf(Long.MAX_VALUE - i),
    +            String.valueOf((double) i / 2),
    +            String.valueOf(true),
    +            "2019-03-02",
    +            "2019-02-12 03:03:34",
    +            "12.345"
    +        };
    +        writer.write(row2);
    +      }
    +      writer.close();
    +    } catch (Exception e) {
    +      e.printStackTrace();
    +      Assert.fail(e.getMessage());
    +    }
    +    LOGGER.audit("Bad record location:" + storeLocation);
    +    File segmentFolder = new File(CarbonTablePath.getSegmentPath(path, 
"null"));
    +    Assert.assertTrue(segmentFolder.exists());
    +
    +    File[] dataFiles = segmentFolder.listFiles(new FileFilter() {
    +      @Override
    +      public boolean accept(File pathname) {
    +        return 
pathname.getName().endsWith(CarbonCommonConstants.FACT_FILE_EXT);
    +      }
    +    });
    +    Assert.assertNotNull(dataFiles);
    +    Assert.assertTrue(dataFiles.length > 0);
    +
    +    CarbonReader reader = CarbonReader.builder(path, "_temp")
    +        .projection(new String[]{
    +            "stringField"
    +            , "shortField"
    +            , "intField"
    +            , "longField"
    +            , "doubleField"
    +            , "boolField"
    +            , "dateField"
    +            , "timeField"
    +            , "decimalField"}).build();
    +
    +    int i = 0;
    +    while (reader.hasNext()) {
    --- End diff --
    
    Please try out another test case. Open the reader and then close the reader 
and then try to do readNextRow.


---

Reply via email to