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

    https://github.com/apache/flink/pull/4612#discussion_r139109685
  
    --- Diff: 
flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java ---
    @@ -19,56 +19,408 @@
     package org.apache.flink.api.common.typeinfo;
     
     import org.apache.flink.annotation.PublicEvolving;
    +import org.apache.flink.api.common.functions.InvalidTypesException;
    +import org.apache.flink.api.java.typeutils.EitherTypeInfo;
    +import org.apache.flink.api.java.typeutils.EnumTypeInfo;
    +import org.apache.flink.api.java.typeutils.GenericTypeInfo;
    +import org.apache.flink.api.java.typeutils.ListTypeInfo;
    +import org.apache.flink.api.java.typeutils.MapTypeInfo;
    +import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo;
    +import org.apache.flink.api.java.typeutils.PojoField;
    +import org.apache.flink.api.java.typeutils.PojoTypeInfo;
     import org.apache.flink.api.java.typeutils.RowTypeInfo;
    +import org.apache.flink.api.java.typeutils.TupleTypeInfo;
    +import org.apache.flink.api.java.typeutils.TypeExtractor;
    +import org.apache.flink.api.java.typeutils.ValueTypeInfo;
     
    -import java.math.BigDecimal;
    -import java.sql.Date;
    -import java.sql.Time;
    -import java.sql.Timestamp;
    +import java.lang.reflect.Field;
    +import java.util.ArrayList;
    +import java.util.List;
    +import java.util.Map;
     
     /**
    - * This class gives access to the type information of the most most common 
types.
    + * This class gives access to the type information of the most common 
types for which Flink
    + * has built-in serializers and comparators.
    + *
    + * <p>In many cases, Flink tries to analyze generic signatures of 
functions to determine return
    + * types automatically. This class is intended for cases where the 
extraction is not possible
    + * (or inefficient) as well as cases where type information has to be 
supplied manually.
    + *
    + * <p>Depending on the API you are using (e.g. Scala API or Table API), 
there might be a more
    + * specialized <code>Types</code> class.
    + *
    + * <p>A more convenient alternative might be a {@link TypeHint}.
    + *
    + * @see TypeInformation#of(Class) specify type information based on a 
class that will be analyzed
    + * @see TypeInformation#of(TypeHint) specify type information based on a 
{@link TypeHint}
      */
     @PublicEvolving
     public class Types {
     
    -   public static final BasicTypeInfo<String> STRING = 
BasicTypeInfo.STRING_TYPE_INFO;
    -   public static final BasicTypeInfo<Boolean> BOOLEAN = 
BasicTypeInfo.BOOLEAN_TYPE_INFO;
    -   public static final BasicTypeInfo<Byte> BYTE = 
BasicTypeInfo.BYTE_TYPE_INFO;
    -   public static final BasicTypeInfo<Short> SHORT = 
BasicTypeInfo.SHORT_TYPE_INFO;
    -   public static final BasicTypeInfo<Integer> INT = 
BasicTypeInfo.INT_TYPE_INFO;
    -   public static final BasicTypeInfo<Long> LONG = 
BasicTypeInfo.LONG_TYPE_INFO;
    -   public static final BasicTypeInfo<Float> FLOAT = 
BasicTypeInfo.FLOAT_TYPE_INFO;
    -   public static final BasicTypeInfo<Double> DOUBLE = 
BasicTypeInfo.DOUBLE_TYPE_INFO;
    -   public static final BasicTypeInfo<BigDecimal> DECIMAL = 
BasicTypeInfo.BIG_DEC_TYPE_INFO;
    +   /**
    +    * Returns type information for {@link java.lang.Void}. Does not 
support a null value.
    +    */
    +   public static final TypeInformation<?> VOID = 
BasicTypeInfo.VOID_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for {@link java.lang.String}. Supports a 
null value.
    +    */
    +   public static final TypeInformation<?> STRING = 
BasicTypeInfo.STRING_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>byte</code> and a
    +    * wrapped {@link java.lang.Byte}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> BYTE = 
BasicTypeInfo.BYTE_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>boolean</code> 
and a
    +    * wrapped {@link java.lang.Boolean}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> BOOLEAN = 
BasicTypeInfo.BOOLEAN_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>short</code> and 
a
    +    * wrapped {@link java.lang.Short}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> SHORT = 
BasicTypeInfo.SHORT_TYPE_INFO;
     
    -   public static final SqlTimeTypeInfo<Date> SQL_DATE = 
SqlTimeTypeInfo.DATE;
    -   public static final SqlTimeTypeInfo<Time> SQL_TIME = 
SqlTimeTypeInfo.TIME;
    -   public static final SqlTimeTypeInfo<Timestamp> SQL_TIMESTAMP = 
SqlTimeTypeInfo.TIMESTAMP;
    +   /**
    +    * Returns type information for both a primitive <code>int</code> and a
    +    * wrapped {@link java.lang.Integer}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> INT = 
BasicTypeInfo.INT_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>long</code> and a
    +    * wrapped {@link java.lang.Long}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> LONG = 
BasicTypeInfo.LONG_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>float</code> and 
a
    +    * wrapped {@link java.lang.Float}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> FLOAT = 
BasicTypeInfo.FLOAT_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>double</code> 
and a
    +    * wrapped {@link java.lang.Double}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> DOUBLE = 
BasicTypeInfo.DOUBLE_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for both a primitive <code>char</code> and a
    +    * wrapped {@link java.lang.Character}. Does not support a null value.
    +    */
    +   public static final TypeInformation<?> CHAR = 
BasicTypeInfo.CHAR_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for {@link java.math.BigDecimal}. Supports 
a null value.
    +    */
    +   public static final TypeInformation<?> BIG_DEC = 
BasicTypeInfo.BIG_DEC_TYPE_INFO;
     
        /**
    -    * Generates a RowTypeInfo with fields of the given types.
    -    * The fields have the default names (f0, f1, f2 ..).
    +    * Returns type information for {@link java.math.BigInteger}. Supports 
a null value.
    +    */
    +   public static final TypeInformation<?> BIG_INT = 
BasicTypeInfo.BIG_INT_TYPE_INFO;
    +
    +   /**
    +    * Returns type information for {@link java.sql.Date}. Supports a null 
value.
    +    */
    +   public static final TypeInformation<?> SQL_DATE = SqlTimeTypeInfo.DATE;
    +
    +   /**
    +    * Returns type information for {@link java.sql.Time}. Supports a null 
value.
    +    */
    +   public static final TypeInformation<?> SQL_TIME = SqlTimeTypeInfo.TIME;
    +
    +   /**
    +    * Returns type information for {@link java.sql.Timestamp}. Supports a 
null value.
    +    */
    +   public static final TypeInformation<?> SQL_TIMESTAMP = 
SqlTimeTypeInfo.TIMESTAMP;
    +
    +   /**
    +    * Returns type information for {@link org.apache.flink.types.Row} with 
fields of the given types.
    +    * A row itself must not be null.
    +    *
    +    * <p>A row is a variable-length, null-aware composite type for storing 
multiple values in a
    --- End diff --
    
    `variable-length` -> `fixed-length` because all rows must have the same 
length otherwise serialization fails or information is lost. You probably want 
to say that a row can have up to INT_MAX fields.
    
    I would also emphasize that the schema of rows is fixed.


---

Reply via email to