Konstantin Orlov created CALCITE-6471: -----------------------------------------
Summary: Prevent unconditional conversion of sqlNodes to string for null-check messages in SqlToRelConverter Key: CALCITE-6471 URL: https://issues.apache.org/jira/browse/CALCITE-6471 Project: Calcite Issue Type: Improvement Components: core Affects Versions: 1.37.0 Reporter: Konstantin Orlov Currently, {{SqlToRelConverter}} contains a few places where {{sqlNode}} is concatenated to some prefix and passed as plain string rather that message supplier as parameter to {{requireNonNull}} method. These are, namely, lines 1019, 4031, and 5344 at commit 29c413a3: {code:java} SqlNode elseOperand = requireNonNull(caseNode.getElseOperand(), "getElseOperand for " + caseNode); {code} {code:java} protected RelOptTable getTargetTable(SqlNode call) { final SqlValidatorNamespace targetNs = getNamespace(call); SqlValidatorNamespace namespace; if (targetNs.isWrapperFor(SqlValidatorImpl.DmlNamespace.class)) { namespace = targetNs.unwrap(SqlValidatorImpl.DmlNamespace.class); } else { namespace = targetNs.resolve(); } RelOptTable table = SqlValidatorUtil.getRelOptTable(namespace, catalogReader, null, null); return requireNonNull(table, "no table found for " + call); } {code} {code:java} return Pair.of(c, (e, fieldName) -> { final int j = requireNonNull(fieldMap.get(fieldName), "field " + fieldName); return rexBuilder.makeFieldAccess(e, j); }); {code} We can shave a few microseconds by simply replacing plain string with message supplier. -- This message was sent by Atlassian Jira (v8.20.10#820010)