{"record":{"id":"cb5153c789b82b11","repo":"apache/beam","slug":"postgres-reads-require-disableautocommit-to-be-true","errorCode":null,"errorMessage":"Postgres reads require disableAutoCommit to be true, overriding to true.","messagePattern":"Postgres reads require disableAutoCommit to be true, overriding to true\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/providers/ReadFromPostgresSchemaTransformProvider.java","lineNumber":78,"sourceCode":"    String jdbcType = configuration.getJdbcType();\n    if (jdbcType != null && !jdbcType.isEmpty() && !jdbcType.equals(jdbcType())) {\n      LOG.warn(\n          \"Wrong JDBC type. Expected '{}' but got '{}'. Overriding with '{}'.\",\n          jdbcType(),\n          jdbcType,\n          jdbcType());\n      configuration = configuration.toBuilder().setJdbcType(jdbcType()).build();\n    }\n\n    List<@org.checkerframework.checker.nullness.qual.Nullable String> connectionInitSql =\n        configuration.getConnectionInitSql();\n    if (connectionInitSql != null && !connectionInitSql.isEmpty()) {\n      throw new IllegalArgumentException(\"Postgres does not support connectionInitSql.\");\n    }\n\n    Boolean disableAutoCommit = configuration.getDisableAutoCommit();\n    if (disableAutoCommit != null && !disableAutoCommit) {\n      LOG.warn(\"Postgres reads require disableAutoCommit to be true, overriding to true.\");\n    }\n\n    // Override \"connectionInitSql\" and \"disableAutoCommit\" for postgres\n    configuration =\n        configuration.toBuilder()\n            .setConnectionInitSql(Collections.emptyList())\n            .setDisableAutoCommit(true)\n            .build();\n    return new PostgresReadSchemaTransform(configuration);\n  }\n\n  public static class PostgresReadSchemaTransform extends JdbcReadSchemaTransform {\n    public PostgresReadSchemaTransform(JdbcReadSchemaTransformConfiguration config) {\n      super(config, POSTGRES);\n    }\n  }\n}\n","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/providers/ReadFromPostgresSchemaTransformProvider.java#L60-L96","documentation":"Warning logged by the Postgres read provider when disableAutoCommit is explicitly set to false. Postgres JDBC reads in Beam require auto-commit disabled for consistent OFFSET/range partitioning, so the provider overrides the value to true (and also clears connectionInitSql). The pipeline proceeds with corrected settings.","triggerScenarios":"Calling from() on ReadFromPostgresSchemaTransformProvider with a JdbcReadSchemaTransformConfiguration where setDisableAutoCommit(false) was called and connectionInitSql is null or empty.","commonSituations":"Sharing one configuration builder between MySQL/SQL Server reads (where auto-commit may be allowed) and Postgres reads; porting an existing MySQL read config to Postgres.","solutions":["Remove the setDisableAutoCommit(false) call so the Postgres default (true) applies.","Set setDisableAutoCommit(true) explicitly in the configuration.","Also remove connectionInitSql for Postgres reads, since Postgres does not support it (an IllegalArgumentException otherwise).","If auto-commit cannot be disabled, use a different database provider that supports it."],"exampleFix":"// before\nJdbcReadSchemaTransformConfiguration cfg = base.toBuilder()\n    .setDisableAutoCommit(false)\n    .build();\n// after\nJdbcReadSchemaTransformConfiguration cfg = base.toBuilder()\n    .setDisableAutoCommit(true)\n    .build();","handlingStrategy":"validation","validationCode":"if (Boolean.FALSE.equals(config.getDisableAutoCommit())) {\n  config = config.toBuilder().setDisableAutoCommit(true).build(); // required for Postgres\n}\nif (config.getConnectionInitSql() != null && !config.getConnectionInitSql().isEmpty()) {\n  throw new IllegalArgumentException(\"connectionInitSql is unsupported for Postgres\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass setDisableAutoCommit(true) for Postgres reads.","Never attach connectionInitSql to Postgres read configs.","Parameterize per-database config builders instead of reusing one across databases."],"tags":["jdbc","postgres","configuration","autocommit","beam-io"],"backgroundTag":"invalid-config-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}