@@ -1779,6 +1779,104 @@ void testNumericCastingsWithTruncation() throws Exception {
17791779 "DataChangeEvent{tableId=ns.scm.tbl, before=[], after=[2, null, null, null, null, null, null, null, null, null], op=INSERT, meta=()}" );
17801780 }
17811781
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+
17821880 private List <Event > generateSchemaEvolutionEvents (TableId tableId ) {
17831881 List <Event > events = new ArrayList <>();
17841882
0 commit comments