Ruben Quesada Lopez created CALCITE-2714: --------------------------------------------
Summary: Slight optimization in SqlTypeFactoryImpl#createTypeWithNullability Key: CALCITE-2714 URL: https://issues.apache.org/jira/browse/CALCITE-2714 Project: Calcite Issue Type: Improvement Reporter: Ruben Quesada Lopez Assignee: Julian Hyde As it is done in the parent implementation RelDataTypeFactoryImpl#createTypeWithNullability where the parameter 'type' is directly used as 'newType' if nullable matches: {code:java} public RelDataType createTypeWithNullability(final RelDataType type, final boolean nullable) { RelDataType newType; if (type.isNullable() == nullable) { newType = type; } else ... {code} I think that SqlTypeFactoryImpl#createTypeWithNullability should be modified in the same way when handling a BasicSqlType, to avoid calling BasicSqlType#createWithNullability (which internally executes a clone) if nullable matches: {code:java} public RelDataType createTypeWithNullability(final RelDataType type, final boolean nullable) { RelDataType newType; if (type instanceof BasicSqlType) { if (type.isNullable() == nullable) { // new piece of code newType = type; } else { // previously, this block was always executed BasicSqlType sqlType = (BasicSqlType) type; newType = sqlType.createWithNullability(nullable); } } else ... {code} I have verified, and Calcite Core tests run fine with this modification. -- This message was sent by Atlassian JIRA (v7.6.3#76005)