risingwavelabs/risingwave · error · ConnectorError
No allow_alter_on_fly fields registered for connector: {conn
Error message
No allow_alter_on_fly fields registered for connector: {connector_name} What it means
The connector name was recognized, but no allow_alter_on_fly field allowlist is registered for it, so on-the-fly field alteration cannot be validated for this source connector. The connector simply does not support altering fields on the fly (yet).
Source
Thrown at src/connector/src/allow_alter_on_fly_fields.rs:473
/// Get all connection names that have `allow_alter_on_fly` fields
pub fn get_connection_names_with_allow_alter_on_fly_fields() -> Vec<&'static str> {
CONNECTION_ALLOW_ALTER_ON_FLY_FIELDS.keys().map(|s| s.as_str()).collect()
}
/// Checks if all given fields are allowed to be altered on the fly for the specified source connector.
/// Returns Ok(()) if all fields are allowed, otherwise returns a `ConnectorError`.
pub fn check_source_allow_alter_on_fly_fields(
connector_name: &str,
fields: &[String],
) -> crate::error::ConnectorResult<()> {
// Convert connector name to the type name key
let Some(type_name) = source_properties::source_name_to_prop_type_name(connector_name) else {
return Err(ConnectorError::from(anyhow::anyhow!(
"Unknown source connector: {connector_name}"
)));
};
let Some(allowed_fields) = SOURCE_ALLOW_ALTER_ON_FLY_FIELDS.get(type_name) else {
return Err(ConnectorError::from(anyhow::anyhow!(
"No allow_alter_on_fly fields registered for connector: {connector_name}"
)));
};
for field in fields {
if !allowed_fields.contains(field) {
return Err(ConnectorError::from(anyhow::anyhow!(
"Field '{field}' is not allowed to be altered on the fly for connector: {connector_name}"
)));
}
}
Ok(())
}
pub fn check_connection_allow_alter_on_fly_fields(
connection_name: &str,
fields: &[String],
) -> crate::error::ConnectorResult<()> {
use crate::source::connection_name_to_prop_type_name;View on GitHub (pinned to 6469eb736d)
Solutions
- Do not attempt alter-on-the-fly for this connector; recreate the source with the desired fields instead
- Upgrade RisingWave if the connector gained allow_alter_on_fly support in a later release
- Contribute/register the connector's allowed fields if you maintain a custom connector
Example fix
// before: ALTER SOURCE s ADD COLUMN ... (unsupported connector) // after: recreate DROP SOURCE s; CREATE SOURCE s (... new fields ...) WITH (connector = 'nexmark', ...);
Defensive patterns
Strategy: validation
Validate before calling
// Pre-check support before issuing alter-on-the-fly
if !SUPPORTS_ALTER_ON_FLY.contains(&connector) {
plan_recreate_source(connector, new_fields)?; // avoid unsupported ALTER
} Try / catch
match res {
Err(e) if e.to_string().contains("No allow_alter_on_fly fields registered") => {
// fall back to drop-and-recreate workflow
}
other => other?,
} Prevention
- Only use ALTER ... on the fly for connectors documented as supporting it
- Check release notes for newly supported hot-alter connectors
- Prefer idempotent recreate scripts for non-hot-alter sources
When it happens
Trigger: Running ALTER SOURCE (alter on the fly) for a source whose connector exists in source_name_to_prop_type_name but has no entry in SOURCE_ALLOW_ALTER_ON_FLY_FIELDS.
Common situations: Attempting on-the-fly field changes on connectors that haven't opted in to the feature; running a newer feature against an older connector registration set.
Related errors
- Unknown source connector: {connector_name}
- Field '{field}' is not allowed to be altered on the fly for
- No allow_alter_on_fly fields registered for connection: {con
- No allow_alter_on_fly fields registered for sink: {sink_name
- Field '{field}' is not allowed to be altered on the fly for
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/1a613c28fe8a37cf.
Report an issue: GitHub.