Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-2511

Assert with full outer join when one of the join predicates is of a required type (nullabe parquet)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.8.0
    • 1.0.0
    • Execution - Data Types
    • None

    Description

      Columns in tables j3 and j4 are created as 'required' data type:

      [Fri Mar 20 11:30:42 root@~/parquet-tools-1.5.1-SNAPSHOT ] # ./parquet-schema ~/0_0_0.parquet
      message root {
        required binary c_varchar (UTF8);
        required int32 c_integer;
        required int64 c_bigint;
        required float c_float;
        required double c_double;
        required int32 c_date (DATE);
        required int32 c_time (TIME);
        required int64 c_timestamp (TIMESTAMP);
        required boolean c_boolean;
        required double d9;
        required double d18;
        required double d28;
        required double d38;
      }
      

      Full outer join on j3/j4 asserts.
      This is happening with the join predicate of every SQL type except boolean.

      select * from j3 full outer join j4 on (j3.c_varchar = j4.c_varchar);
      java.lang.AssertionError at org.apache.drill.exec.vector.VarCharVector$Accessor.get(VarCharVector.java:382)
              at org.apache.drill.exec.vector.VarCharVector$Accessor.getObject(VarCharVector.java:408)
              at org.apache.drill.exec.vector.accessor.VarCharAccessor.getObject(VarCharAccessor.java:98)
              at org.apache.drill.exec.vector.accessor.BoundCheckingAccessor.getObject(BoundCheckingAccessor.java:137)
              at org.apache.drill.jdbc.AvaticaDrillSqlAccessor.getObject(AvaticaDrillSqlAccessor.java:146)
              at net.hydromatic.avatica.AvaticaResultSet.getObject(AvaticaResultSet.java:351)
              at sqlline.SqlLine$Rows$Row.<init>(SqlLine.java:2388)
              at sqlline.SqlLine$IncrementalRows.hasNext(SqlLine.java:2504)
              at sqlline.SqlLine$TableOutputFormat.print(SqlLine.java:2148)
              at sqlline.SqlLine.print(SqlLine.java:1809)
              at sqlline.SqlLine$Commands.execute(SqlLine.java:3766)
              at sqlline.SqlLine$Commands.sql(SqlLine.java:3663)
              at sqlline.SqlLine.dispatch(SqlLine.java:889)
              at sqlline.SqlLine.begin(SqlLine.java:763)
              at sqlline.SqlLine.start(SqlLine.java:498)
              at sqlline.SqlLine.main(SqlLine.java:460)
      

      Same problem happens if you one table column types are optional and the other one is required.

      Attachments

        1. j3.parquet.required
          10 kB
          Victoria Markman
        2. j4.parquet.required
          79 kB
          Victoria Markman

        Activity

          People

            mehant Mehant Baid
            vicky Victoria Markman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: