risingwavelabs/risingwave · error · SinkError::BigQuery
license feature check failed (BigQuerySink not available): w
Error message
license feature check failed (BigQuerySink not available): wrapped error from risingwave_common::license::Feature::check_available
What it means
The BigQuery sink's `validate` calls `risingwave_common::license::Feature::BigQuerySink.check_available()`, which fails when the current license does not include the BigQuery sink feature. The underlying error is wrapped with `anyhow`, producing this message. BigQuery sink is an enterprise-licensed feature, so unlicensed deployments cannot use it.
Source
Thrown at src/connector/src/sink/big_query.rs:555
async fn new_log_sinker(&self, _writer_param: SinkWriterParam) -> Result<Self::LogSinker> {
let (writer, resp_stream) = BigQuerySinkWriter::new(
self.config.clone(),
self.schema.clone(),
self.pk_indices.clone(),
self.is_append_only,
)
.await?;
Ok(BigQueryLogSinker::new(
writer,
resp_stream,
BIGQUERY_SEND_FUTURE_BUFFER_MAX_SIZE,
))
}
async fn validate(&self) -> Result<()> {
risingwave_common::license::Feature::BigQuerySink
.check_available()
.map_err(|e| anyhow::anyhow!(e))?;
if !self.is_append_only && self.pk_indices.is_empty() {
return Err(SinkError::Config(anyhow!(
"Primary key not defined for upsert bigquery sink (please define in `primary_key` field)"
)));
}
let client = self
.config
.common
.build_client(&self.config.aws_auth_props)
.await?;
let BigQueryCommon {
project: project_id,
dataset: dataset_id,
table: table_id,
..
} = &self.config.common;
if self.config.common.auto_create {View on GitHub (pinned to 6469eb736d)
Solutions
- Apply a RisingWave license key that includes the BigQuery sink feature (ALTER SYSTEM SET license_key = '...').
- Check the current license with SHOW LICENSE / the license info functions to verify feature availability and expiry.
- Contact RisingWave sales/support to obtain or upgrade the license covering BigQuerySink.
- Use a differently licensed sink (e.g. one available in your tier) if a license cannot be obtained.
Example fix
-- before: no license key set, sink creation fails CREATE SINK bq_sink FROM mv WITH (...) TYPE bigquery; -- after: apply license first ALTER SYSTEM SET license_key = '<your-license-key>'; CREATE SINK bq_sink FROM mv WITH (...) TYPE bigquery;
Defensive patterns
Strategy: validation
Validate before calling
-- Verify the BigQuery sink feature is licensed before creating the sink: SHOW PARAMETERS license_key; SELECT * FROM rw_catalog.rw_license_info; -- check expiry/features if exposed -- Or attempt feature check: -- feature_available := license includes BigQuerySink
Try / catch
// SQL-level: catch feature failure on sink creation
-- In driver code:
try {
await client.query('CREATE SINK ... TYPE bigquery ...');
} catch (e) {
if (e.message.includes('license feature check failed')) {
// apply/upgrade license or fall back to another sink type
}
throw e;
} Prevention
- Apply and monitor license keys before deploying enterprise-feature sinks.
- Track license expiry; renew before it lapses in production.
- Verify feature availability with SHOW LICENSE in pre-deployment checks.
When it happens
Trigger: Creating a BigQuery sink on a RisingWave deployment whose license (or lack thereof) does not grant the BigQuerySink feature — e.g. free tier without a license key, or an expired/feature-limited license.
Common situations: Open-source or free-tier deployments following BigQuery sink docs without applying an enterprise license key; licenses that expired or were downgraded.
Related errors
- feature {feature:?} is not available based on your license
- feature {feature:?} is not available based on your license
- end of stream
- MAP is not supported for BigQuery sink.
- VECTOR is not supported for BigQuery sink.
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/55601f457e59da83.
Report an issue: GitHub.