risingwavelabs/risingwave · error

Unsupported format {:?} encode {:?}

Error message

Unsupported format {:?} encode {:?}

What it means

ParserConfig::new matches (SourceFormat, SourceEncode) pairs against a fixed list of supported combinations; anything not explicitly enumerated falls into the catch-all bail. This is a guard against unsupported format/encode combos reaching parser construction.

Source

Thrown at src/connector/src/parser/config.rs:311

                timestamptz_handling: format_encode_options_with_secret
                    .get(TimestamptzHandling::OPTION_KEY)
                    .map(|value| TimestamptzHandling::from_options(value))
                    .transpose()?,
                time_handling: None,
                bigint_unsigned_handling: None,
                handle_toast_columns: false,
            }),
            (SourceFormat::DebeziumMongo, SourceEncode::Json) => {
                let props = MongoProperties::from(&format_encode_options_with_secret);
                EncodingProperties::MongoJson(props)
            }
            (SourceFormat::Plain, SourceEncode::Bytes) => {
                EncodingProperties::Bytes(BytesProperties { column_name: None })
            }
            (SourceFormat::Native, SourceEncode::Native) => EncodingProperties::Native,
            (SourceFormat::None, SourceEncode::None) => EncodingProperties::None,
            (format, encode) => {
                bail!("Unsupported format {:?} encode {:?}", format, encode);
            }
        };
        Ok(Self {
            encoding_config,
            protocol_config,
        })
    }
}

#[derive(Debug, Default, Clone)]
pub struct AvroProperties {
    pub schema_location: SchemaLocation,
    pub record_name: Option<String>,
    pub key_record_name: Option<String>,
    pub map_handling: Option<MapHandling>,
}

/// WIP: may cover protobuf and json schema later.

View on GitHub (pinned to 6469eb736d)

Solutions

  1. Choose a supported combination, e.g. Plain/Upsert + Avro/Protobuf/Json/Bytes, DebeziumJson + Json, Native + Native, None + None
  2. Check RisingWave docs for the supported FORMAT ... ENCODE ... matrix before creating the source
  3. If the combination should be supported, it needs a new match arm with corresponding EncodingProperties in the source code

Example fix

-- before
FORMAT DEBEZIUM ENCODE AVRO
-- after
FORMAT DEBEZIUM ENCODE JSON
Defensive patterns

Strategy: validation

Validate before calling

const supported = new Set(["plain:json","plain:avro","plain:protobuf","plain:bytes","upsert:json","upsert:avro","upsert:protobuf","debezium:json","debezium:avro","native:native","none:none"]);
if (!supported.has(`${format}:${encode}`.toLowerCase())) throw new Error(`unsupported combination ${format}:${encode}`);

Prevention

When it happens

Trigger: Passing combinations like (Plain, Avro-with-unsupported...), (DebeziumMongoJson, Avro), (Upsert, Native), or any pairing absent from the match arms in config.rs.

Common situations: Typo or wrong FORMAT/ENCODE keywords in CREATE SOURCE; combining a format with an encode only valid elsewhere; attempting experimental combos not yet supported by RisingWave.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/07831296bcfcc984. Report an issue: GitHub.