{"record":{"id":"0050a2c8362304eb","repo":"risingwavelabs/risingwave","slug":"must-contain-1-argument","errorCode":null,"errorMessage":"{} must contain 1 argument","messagePattern":"(.+?) must contain 1 argument","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/frontend/src/binder/relation/mod.rs","lineNumber":369,"sourceCode":"\n        if identifiers.len() > 3 {\n            return Err(ResolveQualifiedNameError::new(\n                formatted_name,\n                ResolveQualifiedNameErrorKind::QualifiedNameTooLong,\n            ));\n        }\n\n        let name = identifiers.pop().unwrap().real_value();\n        let schema_name = identifiers.pop().map(|ident| ident.real_value());\n        let database_name = identifiers.pop().map(|ident| ident.real_value());\n\n        Ok((database_name, schema_name, name))\n    }\n\n    /// return first name in identifiers, must have only one name.\n    fn resolve_single_name(mut identifiers: Vec<Ident>, ident_desc: &str) -> Result<String> {\n        if identifiers.len() > 1 {\n            bail!(\"{} must contain 1 argument\", ident_desc);\n        }\n        let name = identifiers.pop().unwrap().real_value();\n\n        Ok(name)\n    }\n\n    /// return the `database_name`\n    pub fn resolve_database_name(name: ObjectName) -> Result<String> {\n        Self::resolve_single_name(name.0, \"database name\")\n    }\n\n    /// return the `schema_name`\n    pub fn resolve_schema_name(name: ObjectName) -> Result<String> {\n        Self::resolve_single_name(name.0, \"schema name\")\n    }\n\n    /// return the `index_name`\n    pub fn resolve_index_name(name: ObjectName) -> Result<String> {","sourceCodeStart":351,"sourceCodeEnd":387,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/frontend/src/binder/relation/mod.rs#L351-L387","documentation":"`resolve_single_name` in the frontend binder expects a list of SQL identifiers to contain exactly one name (e.g. a database name or schema name given as a single identifier). If more than one identifier is supplied where a single name is required, it bails with \"{desc} must contain 1 argument\".","triggerScenarios":"Statements that resolve a database/schema/catalog name from identifiers, e.g. `USE db1.db2` style multi-part names, or `SET SCHEMA a.b` where a single identifier is expected but a qualified multi-part identifier was parsed.","commonSituations":"Users porting Postgres/MySQL syntax that allows qualified names where RisingWave expects a simple name; accidentally quoting or qualifying a schema/database name; auto-generated SQL emitting dotted names.","solutions":["Provide exactly one unqualified identifier for the name, e.g. `USE mydb` instead of `USE a.b`.","Set the database and schema separately (via connection parameters or separate SET commands) instead of one qualified name.","If you control the SQL generation, stop emitting multi-part names in single-name positions."],"exampleFix":"// before\nSET SCHEMA my_schema.extra;\n// after\nSET SCHEMA my_schema;","handlingStrategy":"validation","validationCode":"if (name.includes('.')) {\n  throw new Error(\"supply a single unqualified identifier for this statement\");\n}","typeGuard":"function isSingleIdent(parts) { return Array.isArray(parts) && parts.length === 1; }","tryCatchPattern":"try {\n  await client.query(`SET SCHEMA ${schema}`);\n} catch (e) {\n  if (String(e.message).includes(\"must contain 1 argument\")) {\n    // split qualified name and set database/schema separately\n  } else throw e;\n}","preventionTips":["Never emit qualified (dotted) names where a single identifier is expected","Set database via connection parameters and schema via SET SCHEMA separately","Quote identifiers to avoid accidental splitting"],"tags":["sql","binder","identifier","frontend"],"backgroundTag":"invalid-argument-count","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"}