Gleb Kanterov created BEAM-7610: ----------------------------------- Summary: SELECT COALESCE(...) isn't inferred as non-nullable field Key: BEAM-7610 URL: https://issues.apache.org/jira/browse/BEAM-7610 Project: Beam Issue Type: Bug Components: dsl-sql Affects Versions: 2.13.0 Reporter: Gleb Kanterov Assignee: Andrew Pilloud
In Calcite, Coalesce is described as: {code} ReturnTypes.cascade(ReturnTypes.LEAST_RESTRICTIVE, SqlTypeTransforms.LEAST_NULLABLE) {code} However, giving non-null constant as an argument doesn't result in a non-nullable expression: {code} Schema inputSchema = Schema.of( Schema.Field.of("name", Schema.FieldType.STRING.withNullable(true))); PCollection<Row> input = p.apply(Create.of(ImmutableList.<Row>of()) .withCoder(SchemaCoder.of(inputSchema))); Schema outputSchema = input .apply(SqlTransform.query("SELECT COALESCE(name, 'unknown') as name FROM PCOLLECTION")) .getSchema(); assertEquals( Schema.builder().addStringField("name").build(), outputSchema); {code} Not sure if it's a problem in Calcite or Beam SQL. There are no other functions that can be used to produce a non-nullable field. -- This message was sent by Atlassian JIRA (v7.6.3#76005)