Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-20098

Statistics: NPE when getting Date column partition statistics

    XMLWordPrintableJSON

Details

    Description

      The issue reproduces only for a date column for a partitioned table. It reproduces only if the date column has all the values set to null, and if the partition is not empty.

      Here is a quick reproducer:

       

       

      CREATE TABLE dummy_table (
      c_date DATE,
      c_bigint BIGINT
      )
      PARTITIONED BY (ds STRING);
      
      INSERT OVERWRITE TABLE dummy_table PARTITION (ds='2018-01-01') SELECT CAST(null AS DATE), CAST(null AS BIGINT) FROM <any non empty table>;
      
      ANALYZE TABLE dummy_table COMPUTE STATISTICS FOR COLUMNS;
      
      DESCRIBE FORMATTED dummy_table.c_bigint PARTITION (ds='2018-01-01');
      DESCRIBE FORMATTED dummy_table.c_date PARTITION (ds='2018-01-01');
      

       

       

      The first `DESCRIBE FORMATTED` statement succeeds, when the second fails with an `NPE`

       

      It happens because the null check is missing when converting Object from the ObjectStore to the Thrift object. The null check is missing only in the date statistics conversion for the partitioned table. 

      Missing: https://github.com/apache/hive/blob/master/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java#L469

      Present: https://github.com/apache/hive/blob/master/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java#L298

       

      Attachments

        1. HIVE-20098.1.patch
          2 kB
          Gopal Vijayaraghavan
        2. 0001-Fix-NPE-when-getting-statistics-for-date-column.patch
          2 kB
          Andy Rosa

        Activity

          People

            arhimondr Andy Rosa
            arhimondr Andy Rosa
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: