2017-10-31 1 views
0

HAVING式の一部であるAggregateCallLogicalAggregateRelRecordTypeの対応するフィールドを関連付ける適切な方法はありますか? AggregateCallSELECT句の一部ではない場合、LogicalAggregateさんはRelRecordTypeまだそれを持っていますが、AggregateCallname属性がNULLRelRecordType.getField(AggregateCall.getName())に設定されているこの場合に使用することはできません。 AggregateCallが最終出力の一部である場合は、nameが設定され、RelRecordType.getField(AggregateCall.getName())が正しいフィールドを返します。Calcite LogicalAggregate

答えて

0

名前ではなくフィールドの序数を使用します。

Calcite RelNodeおよびRexNodeの世界では、フィールド名はそれほど重要ではありません。主に、デバッグ時にフィールドの目的を理解するのに役立ちます。 AggregateCallの名前はそれほど重要ではありません。彼らはAggregateがそのフィールドに合理的な名前を与えることができるように存在します。存在しない場合は問題ありません。あなたのSELECTNフィールド(番号0 ... N -1)とHAVING句を持っている場合

することは、あなたはおそらく、フィールドNとしてHAVING述語を追加Filter関係演算子を適用し、そのようにProjectを適用します0 ... N -1のフィールドのみが返されます。私はこれが確かにSqlToRelConverterが何であるか確信しています。

関連する問題