Sergei Morozov created FLINK-37774: -------------------------------------- Summary: SQL Server CDC connector incorrectly handles special characters in database and table names Key: FLINK-37774 URL: https://issues.apache.org/jira/browse/FLINK-37774 Project: Flink Issue Type: Bug Components: Flink CDC Affects Versions: cdc-3.3.0 Reporter: Sergei Morozov
If a SQL Server database name contains special characters (e.g. a space), the connector will fail to read the list of tables: {quote} Read list of available tables in each database skipping database 'TEST DATABASE' due to error reading tables: Incorrect syntax near '.'. {quote} The second problem is that {{TableId}} s that contain special characters are incorrectly serialized as part of the snapshot splits. For the above name, there will be the following exception: {quote} java.lang.IllegalArgumentException: Unexpected input: D at io.debezium.relational.TableIdParser$ParsingState$3.handleCharacter(TableIdParser.java:144) at io.debezium.relational.TableIdParser$TableIdTokenizer.tokenize(TableIdParser.java:64) at io.debezium.text.TokenStream.start(TokenStream.java:446) at io.debezium.relational.TableIdParser.parse(TableIdParser.java:31) at io.debezium.relational.TableId.parseParts(TableId.java:51) at io.debezium.relational.TableId.parse(TableId.java:40) at com.ververica.cdc.connectors.base.source.meta.split.SourceSplitSerializer.readTableSchemas(SourceSplitSerializer.java:204) at com.ververica.cdc.connectors.base.source.meta.split.SourceSplitSerializer.deserializeSplit(SourceSplitSerializer.java:142) at com.ververica.cdc.connectors.base.source.meta.split.SourceSplitSerializer.deserialize(SourceSplitSerializer.java:121) at com.ververica.cdc.connectors.base.source.meta.split.SourceSplitSerializer.deserialize(SourceSplitSerializer.java:44) at org.apache.flink.runtime.source.event.AddSplitEvent.splits(AddSplitEvent.java:52) at org.apache.flink.streaming.api.operators.SourceOperator.handleAddSplitsEvent(SourceOperator.java:538) at org.apache.flink.streaming.api.operators.SourceOperator.handleOperatorEvent(SourceOperator.java:526) at org.apache.flink.streaming.runtime.tasks.OperatorEventDispatcherImpl.dispatchEventToHandlers(OperatorEventDispatcherImpl.java:71) at org.apache.flink.streaming.runtime.tasks.RegularOperatorChain.dispatchOperatorEvent(RegularOperatorChain.java:80) at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$dispatchOperatorEvent$18(StreamTask.java:1430) at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50) at org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:338) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:324) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:201) at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:807) at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:756) at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:948) at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:927) at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:741) at org.apache.flink.runtime.taskmanager.Task.run(Task.java:563) at java.base/java.lang.Thread.run(Thread.java:831) {quote} -- This message was sent by Atlassian Jira (v8.20.10#820010)