We've noticed the following difference in sql when upgrading from flink 1.14.5 to 1.15.2 around characters that are escaped in an sql statement:
This statement: tableEnvironment.executeSql("select * from testTable WHERE lower(field1) LIKE 'b\"cd\"e%'"); produces a runtime error in flink 1.15.2, but executes properly in flink 1.14.5 This can be worked around by escaping the backslash, changing the statement to: tableEnvironment.executeSql("select * from testTable WHERE lower(field1) LIKE 'b\\\"cd\\\"e%'"); This code illustrates the issue: import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.Schema; import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; public class TestCase3 { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); TestData testData = new TestData(); testData.setField1("b\"cd\"e"); DataStream<TestData> stream = env.fromElements(testData); stream.print(); final StreamTableEnvironment tableEnvironment = StreamTableEnvironment.create(env); tableEnvironment.createTemporaryView("testTable", stream, Schema.newBuilder().build()); // Works with Flink 1.14.x, flink runtime errors in 1.15.2. Uncomment to see runtime trace //tableEnvironment.executeSql("select *, '1' as run from testTable WHERE lower(field1) LIKE 'b\"cd\"e%'").print(); // Works with 1.15.2 tableEnvironment.executeSql("select * from testTable WHERE lower(field1) LIKE 'b\\\"cd\\\"e%'").print(); env.execute("TestCase"); } public static class TestData { private String field1; public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } } } Thanks Jim