[ https://issues.apache.org/jira/browse/KAFKA-8867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tudor-Alexandru Voicu updated KAFKA-8867: ----------------------------------------- Description: The `CREATE TABLE ..` statement generated for sink connectors when configured with `auto.create: true` generates field declarations that do not conform to allowed PostgreSQL syntax when considering fields of type boolean with default values: Example of source message values Avro schema for input topic: {code:java} { "namespace": "com.test.avro.schema.v1", "type": "record", "name": "SomeEvent", "fields": [ { "name": "boolean_field", "type": "boolean", "default": false } ] } {code} The connector task fails with: {code:java} ERROR WorkerSinkTask{id=test-events-sink-0} RetriableException from SinkTask: (org.apache.kafka.connect.runtime.WorkerSinkTask:551) org.apache.kafka.connect.errors.RetriableException: java.sql.SQLException: org.postgresql.util.PSQLException: ERROR: column "boolean_field" is of type boolean but default expression is of type integer Hint: You will need to rewrite or cast the expression. at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:93) at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:538) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748){code} The generated SQL statement is: {code:java} CREATE TABLE "test_data" ("boolean_field" BOOLEAN DEFAULT 0){code} was: The `CREATE TABLE ..` statement generated for sink connectors when configured with `auto.table.create=true` generates field declarations that do not conform to allowed PostgreSQL syntax when considering fields of type boolean with default values: Example of source message values Avro schema for input topic: {code:java} { "namespace": "com.test.avro.schema.v1", "type": "record", "name": "SomeEvent", "fields": [ { "name": "boolean_field", "type": "boolean", "default": false } ] } {code} The connector task fails with: {code:java} ERROR WorkerSinkTask{id=test-events-sink-0} RetriableException from SinkTask: (org.apache.kafka.connect.runtime.WorkerSinkTask:551) org.apache.kafka.connect.errors.RetriableException: java.sql.SQLException: org.postgresql.util.PSQLException: ERROR: column "boolean_field" is of type boolean but default expression is of type integer Hint: You will need to rewrite or cast the expression. at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:93) at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:538) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748){code} The generated SQL statement is: {code:java} CREATE TABLE "test_data" ("boolean_field" BOOLEAN DEFAULT 0){code} > Kafka Connect JDBC fails to create PostgreSQL table with default boolean value > ------------------------------------------------------------------------------ > > Key: KAFKA-8867 > URL: https://issues.apache.org/jira/browse/KAFKA-8867 > Project: Kafka > Issue Type: Bug > Components: KafkaConnect > Affects Versions: 2.3.0 > Reporter: Tudor-Alexandru Voicu > Priority: Major > > The `CREATE TABLE ..` statement generated for sink connectors when configured > with `auto.create: true` generates field declarations that do not conform to > allowed PostgreSQL syntax when considering fields of type boolean with > default values: > Example of source message values Avro schema for input topic: > > {code:java} > { > "namespace": "com.test.avro.schema.v1", > "type": "record", > "name": "SomeEvent", > "fields": [ > { > "name": "boolean_field", > "type": "boolean", > "default": false > } > ] > } > {code} > The connector task fails with: > > > {code:java} > ERROR WorkerSinkTask{id=test-events-sink-0} RetriableException from SinkTask: > (org.apache.kafka.connect.runtime.WorkerSinkTask:551) > org.apache.kafka.connect.errors.RetriableException: java.sql.SQLException: > org.postgresql.util.PSQLException: ERROR: column "boolean_field" is of type > boolean but default expression is of type integer > Hint: You will need to rewrite or cast the expression. > at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:93) > at > org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:538) > at > org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:321) > at > org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:224) > at > org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:192) > at > org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175) > at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748){code} > > The generated SQL statement is: > > {code:java} > CREATE TABLE "test_data" ("boolean_field" BOOLEAN DEFAULT 0){code} -- This message was sent by Atlassian Jira (v8.3.2#803003)