Skip to content

Commit 8e6c361

Browse files
authored
[FLINK-36285][doris] Fix unable to alter column type without default value specified
This closes #3691.
1 parent 4bd3a23 commit 8e6c361

File tree

4 files changed

+50
-6
lines changed

4 files changed

+50
-6
lines changed

flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-doris/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ limitations under the License.
2727
<name>flink-cdc-pipeline-connector-doris</name>
2828

2929
<properties>
30-
<doris.connector.version>1.6.2</doris.connector.version>
30+
<doris.connector.version>24.0.1</doris.connector.version>
3131
</properties>
3232

3333
<dependencies>

flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-doris/src/test/java/org/apache/flink/cdc/connectors/doris/sink/DorisMetadataApplierITCase.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,21 @@ private List<Event> generateAlterColumnTypeEvents(TableId tableId) {
193193
tableId, Collections.singletonMap("name", DataTypes.VARCHAR(19))));
194194
}
195195

196+
private List<Event> generateAlterColumnTypeWithDefaultValueEvents(TableId tableId) {
197+
Schema schema =
198+
Schema.newBuilder()
199+
.column(new PhysicalColumn("id", DataTypes.INT().notNull(), null))
200+
.column(new PhysicalColumn("number", DataTypes.DOUBLE(), null, "2.71828"))
201+
.column(new PhysicalColumn("name", DataTypes.VARCHAR(17), null, "Alice"))
202+
.primaryKey("id")
203+
.build();
204+
205+
return Arrays.asList(
206+
new CreateTableEvent(tableId, schema),
207+
new AlterColumnTypeEvent(
208+
tableId, Collections.singletonMap("name", DataTypes.VARCHAR(19))));
209+
}
210+
196211
private List<Event> generateNarrowingAlterColumnTypeEvents(TableId tableId) {
197212
Schema schema =
198213
Schema.newBuilder()
@@ -386,6 +401,25 @@ public void testDorisAlterColumnType() throws Exception {
386401
assertEqualsInOrder(expected, actual);
387402
}
388403

404+
@Test
405+
public void testDorisAlterColumnTypeWithDefaultValue() throws Exception {
406+
TableId tableId =
407+
TableId.tableId(
408+
DorisContainer.DORIS_DATABASE_NAME, DorisContainer.DORIS_TABLE_NAME);
409+
410+
runJobWithEvents(generateAlterColumnTypeWithDefaultValueEvents(tableId));
411+
412+
List<String> actual = inspectTableSchema(tableId);
413+
414+
List<String> expected =
415+
Arrays.asList(
416+
"id | INT | Yes | true | null",
417+
"number | DOUBLE | Yes | false | 2.71828",
418+
"name | VARCHAR(57) | Yes | false | Alice");
419+
420+
assertEqualsInOrder(expected, actual);
421+
}
422+
389423
@Test(expected = JobExecutionException.class)
390424
public void testDorisNarrowingAlterColumnType() throws Exception {
391425
TableId tableId =

flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-doris/src/test/java/org/apache/flink/cdc/connectors/doris/sink/DorisPipelineITCase.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import java.util.Arrays;
4848
import java.util.Collections;
4949
import java.util.List;
50+
import java.util.concurrent.TimeoutException;
5051

5152
import static org.apache.flink.cdc.connectors.doris.sink.DorisDataSinkOptions.BENODES;
5253
import static org.apache.flink.cdc.connectors.doris.sink.DorisDataSinkOptions.FENODES;
@@ -62,6 +63,7 @@ public class DorisPipelineITCase extends DorisSinkTestBase {
6263
StreamExecutionEnvironment.getExecutionEnvironment();
6364

6465
private static final int DATABASE_OPERATION_TIMEOUT_SECONDS = 5;
66+
private static final int DATA_FETCHING_TIMEOUT = 30;
6567

6668
@BeforeClass
6769
public static void before() {
@@ -242,13 +244,21 @@ private void runValuesToDorisJob(boolean batchMode) throws Exception {
242244

243245
env.execute("Values to Doris Sink");
244246

245-
List<String> actual = fetchTableContent(tableId, 4);
246-
247247
List<String> expected =
248248
Arrays.asList(
249249
"17 | 6.28 | Doris Day | 2023-01-01 00:00:00",
250250
"21 | 1.732 | Disenchanted | 2023-01-01 00:00:00");
251-
252-
assertEqualsInAnyOrder(expected, actual);
251+
long timeout = System.currentTimeMillis() + DATA_FETCHING_TIMEOUT * 1000;
252+
253+
while (System.currentTimeMillis() < timeout) {
254+
List<String> actual = fetchTableContent(tableId, 4);
255+
if (actual.size() < expected.size()) {
256+
Thread.sleep(1000L);
257+
continue;
258+
}
259+
assertEqualsInAnyOrder(expected, actual);
260+
return;
261+
}
262+
throw new TimeoutException("Failed to fetch enough records in time.");
253263
}
254264
}

tools/ci/license_check.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def check_jar_license(jar_file)
113113
Zip::File.open(jar_file) do |jar|
114114
jar.filter { |e| e.ftype == :file }
115115
.filter { |e| !File.basename(e.name).downcase.end_with?(*BINARY_FILE_EXTENSIONS) }
116-
.filter { |e| !File.basename(e.name).downcase.start_with? 'license', 'dependencies', 'notice' }
116+
.filter { |e| !File.basename(e.name).downcase.start_with? 'license', 'dependencies', 'notice', 'third-party' }
117117
.filter { |e| EXCEPTION_PACKAGES.none? { |ex| e.name.include? ex } }
118118
.map do |e|
119119
content = e.get_input_stream.read.force_encoding('UTF-8')

0 commit comments

Comments
 (0)