{"record":{"id":"b3fdcce0e073f4d2","repo":"dbt-labs/dbt-core","slug":"remote-state-cannot-be-none","errorCode":null,"errorMessage":"remote_state cannot be None","messagePattern":"remote_state cannot be None","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/relation/relation_impl.rs","lineNumber":1276,"sourceCode":"                                \"materialized_view_config_changeset: Failed to deserialize RedshiftMaterializedViewConfig: {e}\"\n                            ),\n                        )\n                    })?;\n\n                let local_config = node_value_to_redshift_materialized_view(local_config_value)?;\n\n                let changeset =\n                    RedshiftMaterializedViewConfigChangeset::new(remote_state, local_config);\n\n                if changeset.has_changes() {\n                    Ok(Value::from_object(changeset))\n                } else {\n                    Ok(Value::from(None::<()>))\n                }\n            }\n            Bigquery => {\n                if remote_state_value.is_none() {\n                    return Err(minijinja::Error::new(\n                        minijinja::ErrorKind::InvalidArgument,\n                        \"remote_state cannot be None\",\n                    ));\n                }\n                let current_state = remote_state_value\n                    .as_object()\n                    .ok_or_else(|| {\n                        minijinja::Error::new(\n                            minijinja::ErrorKind::InvalidArgument,\n                            \"remote_state must be Object\",\n                        )\n                    })?\n                    .downcast_ref::<RelationConfig>()\n                    .ok_or_else(|| {\n                        minijinja::Error::new(\n                            minijinja::ErrorKind::InvalidArgument,\n                            \"remote_state must be RelationConfig\",\n                        )","sourceCodeStart":1258,"sourceCodeEnd":1294,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/relation/relation_impl.rs#L1258-L1294","documentation":"In the BigQuery branch of the changeset code, `remote_state_value` must be present; if it is None the code raises this InvalidArgument error instead of proceeding. The BigQuery path has no way to compute a changeset without the current remote state of the table/view.","triggerScenarios":"Calling the changeset function for a BigQuery relation with remote_state=None (e.g. describe results were not fetched or were discarded).","commonSituations":"Macros skipping the remote-state fetch on error, first-run flows passing nothing as state, or code paths that default state to None.","solutions":["Fetch and pass the remote state (e.g. results of describing the BigQuery table/view) before computing the changeset.","Handle upstream describe failures so None never propagates into this call.","Skip changeset computation for create-on-first-run cases instead of passing None."],"exampleFix":"-- before\n{{ relation.changeset(remote_state=None) }}\n-- after\n{% set results = api.Relation.get_remote_state(relation) %}\n{{ relation.changeset(remote_state=results) }}","handlingStrategy":"validation","validationCode":"{% if remote_state is none %}\n  {{ exceptions.raise_compiler_error('BigQuery changeset requires remote_state; fetch it first') }}\n{% endif %}","typeGuard":"let has_state = remote_state_value.is_some();","tryCatchPattern":"try:\n    changeset = relation.changeset(remote_state=remote_state)\nexcept minijinja.Error as e:\n    if 'remote_state cannot be None' in str(e):\n        remote_state = fetch_remote_state(relation)\n        changeset = relation.changeset(remote_state=remote_state)\n    else:\n        raise","preventionTips":["Always run the describe step before computing changesets","Propagate describe failures instead of defaulting state to None","Treat first-run/create cases as full builds, not changesets"],"tags":["bigquery","null","argument","jinja"],"backgroundTag":"null-argument","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}