@@ -1779,6 +1779,104 @@ void testNumericCastingsWithTruncation() throws Exception {
1779
1779
"DataChangeEvent{tableId=ns.scm.tbl, before=[], after=[2, null, null, null, null, null, null, null, null, null], op=INSERT, meta=()}" );
1780
1780
}
1781
1781
1782
+ @ Test
1783
+ void testTransformWithLargeLiterals () throws Exception {
1784
+ FlinkPipelineComposer composer = FlinkPipelineComposer .ofMiniCluster ();
1785
+
1786
+ // Setup value source
1787
+ Configuration sourceConfig = new Configuration ();
1788
+
1789
+ sourceConfig .set (
1790
+ ValuesDataSourceOptions .EVENT_SET_ID ,
1791
+ ValuesDataSourceHelper .EventSetId .CUSTOM_SOURCE_EVENTS );
1792
+
1793
+ TableId tableId = TableId .tableId ("default_namespace" , "default_schema" , "mytable1" );
1794
+ List <Event > events = generateSchemaEvolutionEvents (tableId );
1795
+
1796
+ ValuesDataSourceHelper .setSourceEvents (Collections .singletonList (events ));
1797
+
1798
+ SourceDef sourceDef =
1799
+ new SourceDef (ValuesDataFactory .IDENTIFIER , "Value Source" , sourceConfig );
1800
+
1801
+ // Setup value sink
1802
+ Configuration sinkConfig = new Configuration ();
1803
+ SinkDef sinkDef = new SinkDef (ValuesDataFactory .IDENTIFIER , "Value Sink" , sinkConfig );
1804
+
1805
+ // Setup pipeline
1806
+ Configuration pipelineConfig = new Configuration ();
1807
+ pipelineConfig .set (PipelineOptions .PIPELINE_PARALLELISM , 1 );
1808
+ pipelineConfig .set (
1809
+ PipelineOptions .PIPELINE_SCHEMA_CHANGE_BEHAVIOR , SchemaChangeBehavior .EVOLVE );
1810
+ PipelineDef pipelineDef =
1811
+ new PipelineDef (
1812
+ sourceDef ,
1813
+ sinkDef ,
1814
+ Collections .emptyList (),
1815
+ Collections .singletonList (
1816
+ new TransformDef (
1817
+ "\\ .*.\\ .*.\\ .*" ,
1818
+ "*, 2147483647 AS int_max, "
1819
+ + "2147483648 AS greater_than_int_max, "
1820
+ + "-2147483648 AS int_min, "
1821
+ + "-2147483649 AS less_than_int_min, "
1822
+ + "CAST(1234567890123456789 AS DECIMAL(20, 0)) AS really_big_decimal" ,
1823
+ "CAST(id AS BIGINT) + 2147483648 > 2147483649" , // equivalent to id > 1
1824
+ null ,
1825
+ null ,
1826
+ null ,
1827
+ null )),
1828
+ Collections .emptyList (),
1829
+ pipelineConfig );
1830
+
1831
+ // Execute the pipeline
1832
+ PipelineExecution execution = composer .compose (pipelineDef );
1833
+ execution .execute ();
1834
+
1835
+ // Check the order and content of all received events
1836
+ String [] outputEvents = outCaptor .toString ().trim ().split ("\n " );
1837
+
1838
+ assertThat (outputEvents )
1839
+ .containsExactly (
1840
+ // Initial stage
1841
+ "CreateTableEvent{tableId=default_namespace.default_schema.mytable1, schema=columns={`id` INT,`name` STRING,`age` INT,`int_max` INT,`greater_than_int_max` BIGINT,`int_min` INT,`less_than_int_min` BIGINT,`really_big_decimal` DECIMAL(19, 0)}, primaryKeys=id, options=()}" ,
1842
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[2, Barcarolle, 22, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1843
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[3, Cecily, 23, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1844
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[3, Cecily, 23, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[3, Colin, 24, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=UPDATE, meta=()}" ,
1845
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[2, Barcarolle, 22, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[], op=DELETE, meta=()}" ,
1846
+
1847
+ // Add Column
1848
+ "AddColumnEvent{tableId=default_namespace.default_schema.mytable1, addedColumns=[ColumnWithPosition{column=`rank` STRING, position=BEFORE, existedColumnName=id}, ColumnWithPosition{column=`gender` TINYINT, position=AFTER, existedColumnName=age}]}" ,
1849
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[1st, 4, Derrida, 24, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1850
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[2nd, 5, Eve, 25, 1, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1851
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[2nd, 5, Eve, 25, 1, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[2nd, 5, Eva, 20, 2, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=UPDATE, meta=()}" ,
1852
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[3rd, 6, Fiona, 26, 3, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1853
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[3rd, 6, Fiona, 26, 3, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[], op=DELETE, meta=()}" ,
1854
+
1855
+ // Alter column type
1856
+ "AlterColumnTypeEvent{tableId=default_namespace.default_schema.mytable1, typeMapping={gender=INT, name=VARCHAR(17), age=DOUBLE}, oldTypeMapping={gender=TINYINT, name=STRING, age=INT}}" ,
1857
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[4th, 7, Gem, 19.0, -1, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1858
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[5th, 8, Helen, 18.0, -2, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1859
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[5th, 8, Helen, 18.0, -2, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[5th, 8, Harry, 18.0, -3, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=UPDATE, meta=()}" ,
1860
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[6th, 9, IINA, 17.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1861
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[6th, 9, IINA, 17.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[], op=DELETE, meta=()}" ,
1862
+
1863
+ // Rename column
1864
+ "RenameColumnEvent{tableId=default_namespace.default_schema.mytable1, nameMapping={gender=biological_sex, age=toshi}}" ,
1865
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[7th, 10, Julia, 24.0, 1, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1866
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[8th, 11, Kalle, 23.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1867
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[8th, 11, Kalle, 23.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[8th, 11, Kella, 18.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=UPDATE, meta=()}" ,
1868
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[9th, 12, Lynx, 17.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1869
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[9th, 12, Lynx, 17.0, 0, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[], op=DELETE, meta=()}" ,
1870
+
1871
+ // Drop column
1872
+ "DropColumnEvent{tableId=default_namespace.default_schema.mytable1, droppedColumnNames=[biological_sex, toshi]}" ,
1873
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[10th, 13, Munroe, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1874
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[11th, 14, Neko, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1875
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[11th, 14, Neko, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[11th, 14, Nein, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=UPDATE, meta=()}" ,
1876
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[], after=[12th, 15, Oops, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], op=INSERT, meta=()}" ,
1877
+ "DataChangeEvent{tableId=default_namespace.default_schema.mytable1, before=[12th, 15, Oops, 2147483647, 2147483648, -2147483648, -2147483649, 1234567890123456789], after=[], op=DELETE, meta=()}" );
1878
+ }
1879
+
1782
1880
private List <Event > generateSchemaEvolutionEvents (TableId tableId ) {
1783
1881
List <Event > events = new ArrayList <>();
1784
1882
0 commit comments