{"record":{"id":"763d4945d59cb7e5","repo":"t8y2/dbx","slug":"schema-and-type-name-are-required","errorCode":null,"errorMessage":"schema and type name are required","messagePattern":"schema and type name are required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/kingbase-go/kingbase_metadata.go","lineNumber":669,"sourceCode":"\t\trangeMultirange: fmt.Sprintf(`SELECT mt.typname\nFROM %s r\nJOIN %s mt ON mt.oid = r.rngmultitypid\nWHERE r.rngtypid = %%d`, rangeTable, typeTable),\n\t\tcollationName: fmt.Sprintf(`SELECT quote_ident(ncl.nspname) || '.' || quote_ident(cl.collname) FROM %s cl JOIN %s ncl ON ncl.oid = cl.collnamespace WHERE cl.oid = %%d`, collationTable, namespaceTable),\n\t}\n}\n\n// getTypeDetails returns read-only details of a user-defined type. MySQL\n// compatibility mode is explicitly unsupported instead of running PostgreSQL\n// catalog SQL against a MySQL-mode server.\nfunc (s *server) getTypeDetails(schema, name string) (*customTypeDetails, error) {\n\tif s.mode.mysqlCompat {\n\t\treturn nil, errors.New(\"type details are not supported in MySQL compatibility mode\")\n\t}\n\tschema = strings.TrimSpace(schema)\n\tname = strings.TrimSpace(name)\n\tif schema == \"\" || name == \"\" {\n\t\treturn nil, errors.New(\"schema and type name are required\")\n\t}\n\tif isSystemSchema(schema) {\n\t\treturn nil, fmt.Errorf(\"system schema %s is not supported for custom type details\", schema)\n\t}\n\tcatalog := \"sys_catalog\"\n\tif s.mode.postgresCatalog {\n\t\tcatalog = \"pg_catalog\"\n\t}\n\tprefix := catalogPrefix(catalog)\n\tqueries := customTypeCatalogQueriesFor(catalog, prefix, schema, name)\n\n\trows, err := s.metadataQuery(queries.general)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to locate custom type %s.%s: %w\", schema, name, err)\n\t}\n\tdefer rows.Close()\n\tif !rows.Next() {\n\t\tif err := rows.Err(); err != nil {","sourceCodeStart":651,"sourceCodeEnd":687,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/kingbase-go/kingbase_metadata.go#L651-L687","documentation":"Returned by server.getTypeDetails in the kingbase-go driver when either the schema or type name argument is blank after trimming. Custom type detail lookup needs both parts to form a catalog-qualified name, so blank input is rejected before any sys_catalog/pg_catalog query runs.","triggerScenarios":"Calling the type-details metadata API with schema or name empty (or whitespace-only) in the request.","commonSituations":"A UI or tool omitted the schema field for unqualified type names; form/input validation passed raw user text including only spaces; code that split a qualified 'schema.name' incorrectly yielding empty parts.","solutions":["Pass both a non-empty schema and a non-empty type name, trimming whitespace at the call site","Fully qualify the type (e.g. myschema.mytype) and split it correctly before calling","Add pre-call validation that rejects empty identifiers with a clearer message"],"exampleFix":"// before\ngetTypeDetails(\"\", \"mytype\")\n// after\nschema, name := \"myschema\", \"mytype\"\nif strings.TrimSpace(schema) == \"\" || strings.TrimSpace(name) == \"\" { return errors.New(\"need qualified type\") }\ngetTypeDetails(schema, name)","handlingStrategy":"validation","validationCode":"if strings.TrimSpace(schema) == \"\" || strings.TrimSpace(name) == \"\" { return errors.New(\"schema and type name are required\") }","typeGuard":null,"tryCatchPattern":"details, err := s.getTypeDetails(schema, name); if err != nil { return fmt.Errorf(\"type details for %s.%s: %w\", schema, name, err) }","preventionTips":["Always pass fully qualified type identifiers (schema + name)","Trim user-supplied identifiers before calling metadata APIs","Reject empty identifiers in UI/CLI input validation"],"tags":["validation","metadata","parameters"],"backgroundTag":"missing-required-parameter","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}