{"record":{"id":"eec22ff7ac431828","repo":"hasura/graphql-engine","slug":"invalid-schema-table-provided-s","errorCode":null,"errorMessage":"invalid schema/table provided \"%s\"","messagePattern":"invalid schema/table provided \"(.+?)\"","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/seed/create.go","lineNumber":79,"sourceCode":"\t_, err = io.Copy(file, r)\n\tif err != nil {\n\t\treturn nil, internalerrors.E(op, err)\n\t}\n\n\treturn &fullFilePath, nil\n}\n\nfunc (d *Driver) ExportDatadump(tableNames []string, sourceName string) (io.Reader, error) {\n\tvar op internalerrors.Op = \"seed.Driver.ExportDatadump\"\n\t// to support tables starting with capital letters\n\tmodifiedTableNames := make([]string, len(tableNames))\n\n\tfor idx, val := range tableNames {\n\t\tsplit := strings.Split(val, \".\")\n\t\tsplitLen := len(split)\n\n\t\tif splitLen != 1 && splitLen != 2 {\n\t\t\treturn nil, internalerrors.E(op, fmt.Errorf(`invalid schema/table provided \"%s\"`, val))\n\t\t}\n\n\t\tif splitLen == 2 {\n\t\t\tmodifiedTableNames[idx] = fmt.Sprintf(`\"%s\".\"%s\"`, split[0], split[1])\n\t\t} else {\n\t\t\tmodifiedTableNames[idx] = fmt.Sprintf(`\"%s\"`, val)\n\t\t}\n\t}\n\n\tpgDumpOpts := []string{\"--no-owner\", \"--no-acl\", \"--data-only\", \"--column-inserts\"}\n\tfor _, table := range modifiedTableNames {\n\t\tpgDumpOpts = append(pgDumpOpts, \"--table\", table)\n\t}\n\n\trequest := hasura.PGDumpRequest{\n\t\tOpts:        pgDumpOpts,\n\t\tCleanOutput: true,\n\t\tSourceName:  sourceName,","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/seed/create.go#L61-L97","documentation":"ExportDatadump validates each --table entry: it must be either 'table' or 'schema.table' (1 or 2 dot-separated parts). Anything with more parts, or other malformed input like empty segments, is rejected with this error before quoting the identifiers for the database dump.","triggerScenarios":"Passing a table name such as \"mydb.public.users\" (three dot-separated parts), \"a.b.c\", or an empty segment like \"schema.\" to the create-seed export step via ExportDatadump.","commonSituations":"Three-part catalog-qualified names (database.schema.table) copied from a SQL editor, schema names containing dots, or shell scripts splitting table lists incorrectly so fragments get joined with extra dots.","solutions":["Use the two-part form schema.table or a bare table name for each --table flag","If the schema itself contains a dot, quote/configure it so the value still yields at most two segments","Inspect the exact string being passed (print argv) to find the stray dot"],"exampleFix":"// before\nExportDatadump(exportOpts, []string{\"mydb.public.users\"})\n\n// after\nExportDatadump(exportOpts, []string{\"public.users\"})","handlingStrategy":"validation","validationCode":"for _, t := range tableNames {\n    parts := strings.Split(t, \".\")\n    if len(parts) > 2 || strings.HasPrefix(t, \".\") || strings.HasSuffix(t, \".\") {\n        // reject before calling ExportDatadump\n    }\n}","typeGuard":"func isSchemaQualifiedName(s string) bool {\n    parts := strings.Split(s, \".\")\n    if len(parts) == 2 { return parts[0] != \"\" && parts[1] != \"\" }\n    return len(parts) == 1 && s != \"\"\n}","tryCatchPattern":null,"preventionTips":["Normalize table inputs to schema.table at the CLI boundary","Strip catalog prefixes (db.schema.table) before passing values"],"tags":["seeds","validation","identifier","hasura-cli"],"backgroundTag":"invalid-identifier-format","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}