/** * Returns the * {@link BuiltInMetadata.ColumnUniqueness#areColumnsUnique(ImmutableBitSet, boolean)} * statistic. * * @param rel the relational expression * @param columns column mask representing the subset of columns for which * uniqueness will be determined * @param ignoreNulls if true, ignore null values when determining column * uniqueness * @return true or false depending on whether the columns are unique, or * null if not enough information is available to make that determination */ public Boolean areColumnsUnique(RelNode rel, ImmutableBitSet columns, boolean ignoreNulls) { for (;;) { try { return columnUniquenessHandler.areColumnsUnique(rel, this, columns, ignoreNulls); } catch (JaninoRelMetadataProvider.NoHandler e) { columnUniquenessHandler = revise(e.relClass, BuiltInMetadata.ColumnUniqueness.DEF); } } }
/** * Returns the * {@link BuiltInMetadata.ColumnUniqueness#areColumnsUnique(ImmutableBitSet, boolean)} * statistic. * * @param rel the relational expression * @param columns column mask representing the subset of columns for which * uniqueness will be determined * @param ignoreNulls if true, ignore null values when determining column * uniqueness * @return true or false depending on whether the columns are unique, or * null if not enough information is available to make that determination */ public Boolean areColumnsUnique(RelNode rel, ImmutableBitSet columns, boolean ignoreNulls) { for (;;) { try { return columnUniquenessHandler.areColumnsUnique(rel, this, columns, ignoreNulls); } catch (JaninoRelMetadataProvider.NoHandler e) { columnUniquenessHandler = revise(e.relClass, BuiltInMetadata.ColumnUniqueness.DEF); } } }