risingwavelabs/risingwave · error
Invalid properties for ADBC Snowflake source: {:?}
Error message
Invalid properties for ADBC Snowflake source: {:?} What it means
`extract_adbc_snowflake_columns` returns an `anyhow!` error when the source's properties do not form a valid ADBC Snowflake property set (`FromStr`/extraction into the ADBC Snowflake properties struct failed). Column binding for a Snowflake source via ADBC requires database/schema/table (or query) properties; anything else is rejected before attempting to read the remote schema.
Source
Thrown at src/frontend/src/handler/create_source/external_schema/adbc_snowflake.rs:59
ColumnId::new((i + 1).try_into().unwrap()),
converter.type_from_field(field).unwrap(),
);
ColumnCatalog {
column_desc,
is_hidden: false,
}
})
.collect();
tracing::info!(
"ADBC Snowflake inferred {} columns from table {}",
columns.len(),
properties.table
);
Ok(columns)
} else {
Err(anyhow!(format!(
"Invalid properties for ADBC Snowflake source: {:?}",
props
)))
}
}
View on GitHub (pinned to 6469eb736d)
Solutions
- Check the WITH options against the Snowflake source docs: include `connector='snowflake'`, `snowflake_url`, and `database`/`schema`/`table` as required.
- Fix typos and casing in property keys — the error prints the offending props for comparison.
- Confirm you are not reusing CDC (`schema-registry`/`aws.*`) style options for the ADBC direct-read source.
- If properties look correct, test the same connection parameters outside RisingWave to rule out auth/URL errors masquerading as property errors.
Example fix
// before CREATE SOURCE s WITH (connector='snowflake', tablename='T1'); // after CREATE SOURCE s WITH (connector='snowflake', database='DB', schema='PUBLIC', table='T1');
Defensive patterns
Strategy: validation
Validate before calling
// verify required Snowflake ADBC properties exist before issuing CREATE SOURCE
function validateSnowflakeProps(p) {
const required = ['snowflake_url', 'database', 'schema', 'table'];
const missing = required.filter(k => !(k in p));
if (missing.length) throw new Error('missing snowflake props: ' + missing.join(','));
} Prevention
- Copy WITH options verbatim from the official Snowflake source docs.
- Diff your props against the error message, which echoes the parsed props.
- Keep CDC and ADBC/direct-read option sets separate.
When it happens
Trigger: `CREATE SOURCE ... WITH (connector = 'snowflake', ...)` routed through the ADBC path where `props` fails to deserialize into the expected ADBC Snowflake properties — missing `database_name`/`schema_name`/`table_name` keys, wrong key names, or unexpected extra properties.
Common situations: Typos in WITH options (e.g. `tablename` instead of `table_name`); omitting required Snowflake properties; mixing CDC and non-CDC Snowflake option shapes; upgrading RisingWave so previously accepted property keys changed.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- Invalid properties for iceberg source: {:?}
- additional column type {} is not supported for connector {},
- (dynamic serde_json deserialization error for AdbcSnowflakeS
- scan.startup.timestamp.millis is required
- Time travel is not supported for the source
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/59b2ae3daed891ca.
Report an issue: GitHub.