{"record":{"id":"5a6d1c3b740715b5","repo":"dbt-labs/dbt-core","slug":"no-information-schema-table-named","errorCode":null,"errorMessage":"no information-schema table named '{}'","messagePattern":"no information-schema table named '(.+?)'","errorType":"validation","errorClass":"IndexError","httpStatus":null,"severity":"error","filePath":"crates/dbt-index-core/src/info_schema/parse_safe.rs","lineNumber":642,"sourceCode":"            }\n        }\n    }\n\n    /// The view's `CREATE OR REPLACE VIEW` statement, reading [`BASE_SCHEMA`].\n    ///\n    /// Errors describe a mistake in [`VIEWS`] rather than anything about the project, and\n    /// the tests in this module are what should catch them; they are returned rather than\n    /// panicked so a bad entry takes down one check, not the process.\n    pub fn create_view_sql(&self) -> Result<String, IndexError> {\n        // Assembled rather than projected. `info_schema::build_own` and\n        // `epoch_views::own_sql` special-case the same table by name; this is the third\n        // place that has to, for the same reason.\n        if matches!(self.src, Src::Own) {\n            return self.dag_nodes_sql();\n        }\n\n        let spec = spec_for(Ns::Dbt, self.vocabulary).ok_or_else(|| {\n            self.err(format!(\n                \"no information-schema table named '{}'\",\n                self.vocabulary\n            ))\n        })?;\n\n        let mut selects = Vec::with_capacity(self.cols.len());\n        for out in self.cols {\n            let col =\n                spec.cols.iter().find(|c| c.out == *out).ok_or_else(|| {\n                    self.err(format!(\"'{out}' is not a column of '{}'\", spec.name))\n                })?;\n            // A column the information schema declares but assembles in code has no\n            // source name to borrow; the index column is the one that shares its name.\n            let src = if col.src.is_empty() { col.out } else { col.src };\n            selects.push(format!(\"{} AS {}\", self.qualify(src)?, quote(out)));\n        }\n\n        let from = match self.src {","sourceCodeStart":624,"sourceCodeEnd":660,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-index-core/src/info_schema/parse_safe.rs#L624-L660","documentation":"The index-core information-schema view builder resolves a named 'vocabulary' (a logical information-schema table like a dbt namespace table) via spec_for(Ns::Dbt, vocabulary). When no spec is registered for the requested name, create_view_sql fails with this error instead of generating SQL. It is a lookup failure against the fixed set of supported information-schema tables.","triggerScenarios":"Requesting a view over a vocabulary name that is not part of the dbt information-schema registry — e.g. a misspelled table name, a table from a different adapter dialect, or a name only defined in a newer version of index-core.","commonSituations":"Passing a user-supplied table name into the index view API; referencing an information-schema table supported by another backend (e.g. Postgres-specific tables); version skew between a client expecting newer vocabularies and the library build.","solutions":["Check the exact spelling of the vocabulary/table name against the supported dbt information-schema list","Upgrade dbt-index-core if the table was added in a newer release","If Src::Own is intended, ensure the node source is configured so the Own path (dag_nodes_sql) is taken","Register a custom spec if the API allows extending vocabularies"],"exampleFix":"// before\ncreate_view_sql(\"dbt_manifest_tables\") // not a registered vocabulary\n// after\ncreate_view_sql(\"manifest_nodes\") // a name present in the Dbt vocabulary registry","handlingStrategy":"validation","validationCode":"let known = [\"manifest_nodes\", \"sources\", \"exposures\"]; // consult registry docs\nassert!(known.contains(&vocabulary), \"unsupported info-schema table: {vocabulary}\");","typeGuard":null,"tryCatchPattern":"match create_view_sql(vocabulary) {\n    Err(e) if e.message().starts_with(\"no information-schema table named\") => {\n        use_default_vocabulary()\n    }\n    other => other,\n}","preventionTips":["List available vocabularies from the library docs/registry before calling","Derive names from constants, not free-form strings","Keep index-core versions in sync across services"],"tags":["information-schema","lookup","sql","index-core"],"backgroundTag":"resource-not-found","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}