{"record":{"id":"632b2eed8c16220d","repo":"risingwavelabs/risingwave","slug":"column-on-risingwave-side-is-not-found-on-b","errorCode":null,"errorMessage":"Column `{:?}` on RisingWave side is not found on BigQuery side.","messagePattern":"Column `(.+?)` on RisingWave side is not found on BigQuery side\\.","errorType":"validation","errorClass":"SinkError::BigQuery","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/big_query.rs","lineNumber":373,"sourceCode":"        big_query_columns_desc: HashMap<String, String>,\n    ) -> Result<()> {\n        let rw_fields_name = self.schema.fields();\n        if big_query_columns_desc.is_empty() {\n            return Err(SinkError::BigQuery(anyhow::anyhow!(\n                \"Cannot find table in bigquery\"\n            )));\n        }\n        if rw_fields_name.len().ne(&big_query_columns_desc.len()) {\n            return Err(SinkError::BigQuery(anyhow::anyhow!(\n                \"The length of the RisingWave column {} must be equal to the length of the bigquery column {}\",\n                rw_fields_name.len(),\n                big_query_columns_desc.len()\n            )));\n        }\n\n        for i in rw_fields_name {\n            let value = big_query_columns_desc.get(&i.name).ok_or_else(|| {\n                SinkError::BigQuery(anyhow::anyhow!(\n                    \"Column `{:?}` on RisingWave side is not found on BigQuery side.\",\n                    i.name\n                ))\n            })?;\n            let data_type_string = Self::get_string_and_check_support_from_datatype(&i.data_type)?;\n            if !Self::is_data_type_compatible(&i.data_type, value)? {\n                return Err(SinkError::BigQuery(anyhow::anyhow!(\n                    \"Data type mismatch for column `{:?}`. BigQuery side: `{:?}`, RisingWave side: `{:?}`. \",\n                    i.name,\n                    value,\n                    data_type_string\n                )));\n            };\n        }\n        Ok(())\n    }\n\n    fn get_string_and_check_support_from_datatype(rw_data_type: &DataType) -> Result<String> {","sourceCodeStart":355,"sourceCodeEnd":391,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/big_query.rs#L355-L391","documentation":"After the length check, `check_column_name_and_type` matches each RisingWave field to a BigQuery column by name. If a RisingWave column name has no exact match in the BigQuery table's column map, validation fails with this error identifying the missing column.","triggerScenarios":"Sink creation when column names differ due to case (BigQuery is case-insensitive but this lookup is exact), quoting/aliasing in the MV, renamed columns on either side, or reserved-word transformations.","commonSituations":"Renaming a column in the MV after the table existed; using camelCase in RW vs snake_case in BigQuery; accidentally lowercase/uppercase differences in the table DDL.","solutions":["Rename the BigQuery column (or recreate the table) to match the RisingWave field name exactly","Or alias the column in the sink's query/MV to the name BigQuery expects","Recreate the sink so validation re-runs against the corrected schema"],"exampleFix":"-- before: MV column user_id but BQ table has userId\n-- after:\nCREATE MATERIZED VIEW mv AS SELECT user_id AS \"userId\", ... FROM ...;","handlingStrategy":"validation","validationCode":"const rwNames = rwFields.map(f => f.name);\nconst bqNames = new Set(bqColumns.map(c => c.name));\nconst missing = rwNames.filter(n => !bqNames.has(n));\nif (missing.length) throw new Error(`columns missing in BigQuery table: ${missing.join(\", \")}`);","typeGuard":null,"tryCatchPattern":"let value = match big_query_columns_desc.get(field.name) {\n    Some(v) => v,\n    None => return Err(anyhow!(\"column {} missing in BigQuery table; rename or recreate table\", field.name)),\n};","preventionTips":["Match names exactly, including case","Alias columns in the MV to the BigQuery names","Avoid renaming columns after the table exists without recreating the sink"],"tags":["bigquery","schema","validation"],"backgroundTag":"record-not-found","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}