code: @Override
    public List<InputRow> parseBatch(GenericRecord record)
    {
      Map<String, Object> row = recordFlattener.flatten(record);
  
      final List<String> dimensions;
      if (!this.dimensions.isEmpty()) {
        dimensions = this.dimensions;
      } else {
        dimensions = Lists.newArrayList(
            Sets.difference(row.keySet(), parseSpec.getDimensionsSpec().getDimensionExclusions())
        );
      }
      // check for parquet Date
      // https://github.com/apache/parquet-format/blob/master/LogicalTypes.md#date
      LogicalType logicalType = determineTimestampSpecLogicalType(record.getSchema(), timestampSpec.getTimestampColumn());
      DateTime dateTime;
      if (logicalType instanceof LogicalTypes.Date) {
        int daysSinceEpoch = (Integer) record.get(timestampSpec.getTimestampColumn());
        dateTime = DateTimes.utc(TimeUnit.DAYS.toMillis(daysSinceEpoch));
      } else {
        // Fall back to a binary format that will be parsed using joda-time
        dateTime = timestampSpec.extractTimestamp(row);
      }
      return ImmutableList.of(new MapBasedInputRow(dateTime, dimensions, row));
    }
docs: imitate avro extension {@link org.apache.druid.data.input.avro.AvroParsers#parseGenericRecord}