cube-js/cube · error

Unimplemented support for {:?}

Error message

Unimplemented support for {:?}

What it means

df_data_type_by_column_type maps Cube ColumnType values to Arrow DataTypes. The catch-all `_ => panic!("Unimplemented support for {:?}")` fires when a column arrives with a ColumnType that has no mapping (e.g. certain Date/Decimal/HLL variants), so DataFrame construction cannot proceed.

Source

Thrown at rust/cubesql/cubesql/src/transport/ext.rs:426

        if let Some(_) = self
            .segments
            .iter()
            .find(|m| m.name.eq_ignore_ascii_case(member_name))
        {
            return Some(MemberType::Boolean);
        }
        None
    }
}

pub fn df_data_type_by_column_type(column_type: ColumnType) -> DataType {
    match column_type {
        ColumnType::Int32 | ColumnType::Int64 | ColumnType::Int8 => DataType::Int64,
        ColumnType::String => DataType::Utf8,
        ColumnType::Double => DataType::Float64,
        ColumnType::Boolean => DataType::Boolean,
        ColumnType::Timestamp => DataType::Timestamp(TimeUnit::Nanosecond, None),
        _ => panic!("Unimplemented support for {:?}", column_type),
    }
}

View on GitHub (pinned to 7d981676b3)

Solutions

  1. Change the member's type in the data model to a supported one (number/string/boolean/time)
  2. Cast the expression in the query to a supported SQL type
  3. Upgrade CubeSQL so the ColumnType is implemented, or add a match arm in df_data_type_by_column_type

Example fix

// before (data model)
measures:
  - name: revenue
    sql: ${TABLE}.revenue
    type: number
dimensions:
  - name: day
    sql: ${TABLE}.day
    type: date
// after
dimensions:
  - name: day
    sql: ${TABLE}.day
    type: time
    timeDimension: true
Defensive patterns

Strategy: type-guard

Validate before calling

fn is_supported_column_type(ct: &ColumnType) -> bool {
    matches!(
        ct,
        ColumnType::Int8 | ColumnType::Int32 | ColumnType::Int64
            | ColumnType::String | ColumnType::Double
            | ColumnType::Boolean | ColumnType::Timestamp
    )
}
// verify member column types before issuing load requests

Type guard

fn is_supported_column_type(ct: &ColumnType) -> bool {
    matches!(ct, ColumnType::Int8 | ColumnType::Int32 | ColumnType::Int64 | ColumnType::String | ColumnType::Double | ColumnType::Boolean | ColumnType::Timestamp)
}

Prevention

When it happens

Trigger: A load/transport query returns a column whose Cube ColumnType (from member definitions) is not one of Int8/16/32/64, String, Double, Boolean, Timestamp and is passed to df_data_type.

Common situations: Members typed as date, decimal, or special analytics types in the data model; schema drift after adding a new member type on the Cube side while the CubeSQL build is older.

Related errors


AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02). Data as JSON: /api/errors/d1d822dbf2d39653. Report an issue: GitHub.