Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-6758

When using pgoutput in postgres connector, (+/-)Infinity is not supported in decimal values

XMLWordPrintable

    • False
    • None
    • False

       

      Bug report

      What Debezium connector do you use and what version?

      postgres-connector, 2.2.1.Final

      What is the connector configuration?

      plugin.name=pgoutput
      decimal.handling.mode=string

      What is the captured database version and mode of depoyment?

      postgresql 14.8 (Homebrew)

      What behaviour do you expect?

      got string (-)Infinity returned when Infinity is met in decimal columns

      What behaviour do you see?

      NumberFormatException thrown:

      org.apache.kafka.connect.errors.ConnectException: Error while processing event at offset {transaction_id=null, lsn_proc=153106840, messageType=UPDATE, lsn_commit=153103936, lsn=153106840, txId=1013, ts_usec=1691132408097834}	at io.debezium.pipeline.EventDispatcher.dispatchDataChangeEvent(EventDispatcher.java:262)	at io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.lambda$processMessages$0(PostgresStreamingChangeEventSource.java:279)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputMessageDecoder.decodeUpdate(PgOutputMessageDecoder.java:479)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputMessageDecoder.processNotEmptyMessage(PgOutputMessageDecoder.java:211)	at io.debezium.connector.postgresql.connection.AbstractMessageDecoder.processMessage(AbstractMessageDecoder.java:41)	at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:563)	at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.readPending(PostgresReplicationConnection.java:555)	at io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.processMessages(PostgresStreamingChangeEventSource.java:216)	at io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:178)	at io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:41)	at io.debezium.pipeline.ChangeEventSourceCoordinator.streamEvents(ChangeEventSourceCoordinator.java:174)	at io.debezium.pipeline.ChangeEventSourceCoordinator.executeChangeEventSources(ChangeEventSourceCoordinator.java:141)	at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:109)	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)	at java.base/java.lang.Thread.run(Thread.java:833)Caused by: java.lang.NumberFormatException: Character I is neither a decimal digit number, decimal point, nor "e" notation exponential mark.	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:586)	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:471)	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:900)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputColumnValue.asDecimal(PgOutputColumnValue.java:71)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputColumnValue.asDecimal(PgOutputColumnValue.java:17)	at io.debezium.connector.postgresql.connection.ReplicationMessageColumnValueResolver.resolveValue(ReplicationMessageColumnValueResolver.java:91)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputReplicationMessage.getValue(PgOutputReplicationMessage.java:92)	at io.debezium.connector.postgresql.connection.pgoutput.PgOutputMessageDecoder$1.getValue(PgOutputMessageDecoder.java:748)	at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.columnValues(PostgresChangeRecordEmitter.java:179)	at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.getNewColumnValues(PostgresChangeRecordEmitter.java:127)	at io.debezium.relational.RelationalChangeRecordEmitter.emitUpdateRecord(RelationalChangeRecordEmitter.java:97)	at io.debezium.relational.RelationalChangeRecordEmitter.emitChangeRecords(RelationalChangeRecordEmitter.java:53)	at io.debezium.connector.postgresql.PostgresChangeRecordEmitter.emitChangeRecords(PostgresChangeRecordEmitter.java:94)	at io.debezium.pipeline.EventDispatcher.dispatchDataChangeEvent(EventDispatcher.java:225)	... 17 common frames omitted

      Do you see the same behaviour using the latest relesead Debezium version?

      Yes

              Unassigned Unassigned
              majorpleasure zy s (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: