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

    https://github.com/apache/carbondata/pull/1720#discussion_r158516073
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataTypes.java 
---
    @@ -184,4 +224,60 @@ public static boolean isMapType(DataType dataType) {
         return dataType.getId() == MAP_TYPE_ID;
       }
     
    +  /**
    +   * This class is added to support backword compatibility with table info 
object, where DATATYPE
    +   * is string in old version and OBJECT in new version
    +   */
    +  public static class DataTypeAdapter extends TypeAdapter<Object> {
    +
    +    private static DataTypeAdapter dataTypeAdapter = new DataTypeAdapter();
    +
    +    private DataTypeAdapter() {
    +    }
    +
    +    public static DataTypeAdapter getInstance() {
    +      return dataTypeAdapter;
    +    }
    +
    +    @Override public void write(JsonWriter jsonWriter, Object o) throws 
IOException {
    +    }
    +
    +    @Override public Object read(JsonReader jsonReader) throws IOException 
{
    +      DataType newObj;
    +      JsonToken token = jsonReader.peek();
    +
    +      if (token == JsonToken.STRING) {
    +        newObj = DataTypes.valueOf(jsonReader.nextString());
    +      } else {
    +        jsonReader.beginObject();
    +
    +        int id = 0;
    +        int precedenceOrder = 0;
    +        String name = "";
    +        int sizeInBytes = 0;
    +
    +        while (jsonReader.hasNext()) {
    +          switch (jsonReader.nextName()) {
    +            case "id":
    +              id = jsonReader.nextInt();
    +              break;
    +            case "precedenceOrder":
    +              precedenceOrder = jsonReader.nextInt();
    +              break;
    +            case "name":
    +              name = jsonReader.nextString();
    +              break;
    +            case "sizeInBytes":
    +              sizeInBytes = jsonReader.nextInt();
    +              break;
    +            default:
    +              break;
    --- End diff --
    
    I think we should throw IOException here


---

Reply via email to