{"record":{"id":"d7bfd7fb5273c62a","repo":"prestodb/presto","slug":"invalid-property-tpch-splits-per-node","errorCode":null,"errorMessage":"Invalid property tpch.splits-per-node","messagePattern":"Invalid property tpch\\.splits-per-node","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-tpch/src/main/java/com/facebook/presto/tpch/TpchConnectorFactory.java","lineNumber":117,"sourceCode":"            {\n                return new TpchRecordSetProvider();\n            }\n\n            @Override\n            public ConnectorNodePartitioningProvider getNodePartitioningProvider()\n            {\n                return new TpchNodePartitioningProvider(nodeManager, splitsPerNode);\n            }\n        };\n    }\n\n    protected int getSplitsPerNode(Map<String, String> properties)\n    {\n        try {\n            return Integer.parseInt(firstNonNull(properties.get(\"tpch.splits-per-node\"), String.valueOf(defaultSplitsPerNode)));\n        }\n        catch (NumberFormatException e) {\n            throw new IllegalArgumentException(\"Invalid property tpch.splits-per-node\");\n        }\n    }\n\n    protected boolean isPartitioningEnabled(Map<String, String> properties)\n    {\n        return Boolean.parseBoolean(properties.getOrDefault(\"tpch.partitioning-enabled\", String.valueOf(partitioningEnabled)));\n    }\n\n    protected boolean isPredicatePushdownEnabled()\n    {\n        return predicatePushdownEnabled;\n    }\n}\n","sourceCodeStart":99,"sourceCodeEnd":131,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-tpch/src/main/java/com/facebook/presto/tpch/TpchConnectorFactory.java#L99-L131","documentation":"TpchConnectorFactory.getSplitsPerNode parses the 'tpch.splits-per-node' catalog property as an int; on NumberFormatException it throws IllegalArgumentException 'Invalid property tpch.splits-per-node'. Like the TPC-DS counterpart, this signals a malformed integer value in catalog configuration.","triggerScenarios":"Creating/using a TPC-H catalog where tpch.splits-per-node is set to a non-integer string (e.g. 'many', '2.5', empty, or with whitespace).","commonSituations":"Typo or bad substitution in tpch.properties; decimal number given instead of integer; leftover placeholder text like ${SPLITS} not resolved by the deploy tooling.","solutions":["Set tpch.splits-per-node to a valid integer (e.g. 4) in the catalog properties","Remove the property to use the defaultSplitsPerNode value","Check for unresolved variable placeholders or whitespace in tpch.properties","Validate all catalog properties after templating/deploy pipelines run"],"exampleFix":"// before\ntpch.splits-per-node=${SPLITS_PER_NODE}\n// after\ntpch.splits-per-node=4","handlingStrategy":"validation","validationCode":"String v = properties.get(\"tpch.splits-per-node\");\nif (v != null && !v.matches(\"\\\\d+\")) {\n    throw new IllegalArgumentException(\"tpch.splits-per-node must be a non-negative integer, got: \" + v);\n}","typeGuard":"boolean isValidInt(String v) { if (v == null) return true; try { Integer.parseInt(v.trim()); return true; } catch (NumberFormatException e) { return false; } }","tryCatchPattern":"try {\n    connectorFactory.create(name, properties);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"tpch.splits-per-node\")) {\n        properties.remove(\"tpch.splits-per-node\"); // fall back to default\n        connectorFactory.create(name, properties);\n    } else { throw e; }\n}","preventionTips":["Use plain integers in tpch.properties; no decimals or units","Assert templated properties have no unresolved placeholders","Lint catalog property files as part of CI/deployment"],"tags":["configuration","tpch","connector"],"backgroundTag":"invalid-connector-config-property","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}