{"record":{"id":"394f446088bba6c8","repo":"apache/seatunnel","slug":"tables-configs-d-schema-table-must-be-configu","errorCode":null,"errorMessage":"tables_configs[%d]: 'schema.table' must be configured and non-blank","messagePattern":"tables_configs\\[(.+?)\\]: 'schema\\.table' must be configured and non-blank","errorType":"validation","errorClass":"OptionValidationException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-neo4j/src/main/java/org/apache/seatunnel/connectors/seatunnel/neo4j/source/Neo4jSourceFactory.java","lineNumber":218,"sourceCode":"            Set<String> tableIds = new HashSet<>();\n            for (int i = 0; i < entries.size(); i++) {\n                Map<String, Object> entry = entries.get(i);\n                Object query = entry.get(Neo4jSourceOptions.KEY_QUERY.key());\n                if (!(query instanceof String) || ((String) query).trim().isEmpty()) {\n                    throw new OptionValidationException(\n                            \"tables_configs[%d]: 'query' must be configured and non-blank\", i);\n                }\n\n                Object schemaValue = entry.get(ConnectorCommonOptions.SCHEMA.key());\n                if (!(schemaValue instanceof Map) || ((Map<?, ?>) schemaValue).isEmpty()) {\n                    throw new OptionValidationException(\n                            \"tables_configs[%d]: 'schema' must be configured and non-empty\", i);\n                }\n\n                Object tableValue =\n                        ((Map<?, ?>) schemaValue).get(ConnectorCommonOptions.TABLE.key());\n                if (!(tableValue instanceof String) || ((String) tableValue).trim().isEmpty()) {\n                    throw new OptionValidationException(\n                            \"tables_configs[%d]: 'schema.table' must be configured and non-blank\",\n                            i);\n                }\n\n                String tableId = ((String) tableValue).trim();\n                if (!tableIds.add(tableId)) {\n                    throw new OptionValidationException(\n                            \"tables_configs[%d]: duplicate 'schema.table' value '%s'\", i, tableId);\n                }\n            }\n            return true;\n        }\n    }\n}\n","sourceCodeStart":200,"sourceCodeEnd":233,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-neo4j/src/main/java/org/apache/seatunnel/connectors/seatunnel/neo4j/source/Neo4jSourceFactory.java#L200-L233","documentation":"Within a tables_configs entry, the 'schema' block must include a non-blank 'table' (table name). The factory extracts ConnectorCommonOptions.TABLE from the schema map and throws OptionValidationException when it is missing, not a String, or blank after trimming.","triggerScenarios":"tables_configs[i].schema exists but has no 'table' key, an empty/whitespace table value, or a non-string table value.","commonSituations":"Users define only columns in schema and forget table_name; the table key is misspelled (e.g. 'table_name' vs 'table' depending on option definition); template variables left unresolved produce empty strings.","solutions":["Set schema.table to a non-blank table name in the entry at the reported index.","Confirm the key name matches ConnectorCommonOptions.TABLE ('table').","Check that variable substitution in the config yields a real table name, not an empty string."],"exampleFix":"// before\nschema = { columns = [{ name = name, type = string }] }\n// after\nschema = {\n  table = \"person\"\n  columns = [{ name = name, type = string }]\n}","handlingStrategy":"validation","validationCode":"tables_configs.eachWithIndex { entry, i ->\n  def t = entry.schema?.table\n  if (!(t instanceof String) || t.trim().isEmpty()) {\n    throw new IllegalArgumentException(\"tables_configs[${i}].schema.table must be non-blank\")\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always set schema.table alongside columns.","Use the exact key name 'table' as defined by ConnectorCommonOptions.","Resolve template variables before submitting the job."],"tags":["neo4j","config-validation","missing-table-name"],"backgroundTag":"missing-required-config-field","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}