Search in sources :

Example 11 with Stats

use of io.crate.statistics.Stats in project crate by crate.

the class SelectivityFunctionsTest method test_col_is_null_uses_null_fraction_as_selectivity.

@Test
public void test_col_is_null_uses_null_fraction_as_selectivity() {
    SqlExpressions expressions = new SqlExpressions(T3.sources(clusterService));
    Symbol query = expressions.asSymbol("x is null");
    var columnStats = ColumnStats.fromSortedValues(List.of(1, 2), DataTypes.INTEGER, 2, 4);
    assertThat(columnStats.nullFraction(), Matchers.is(0.5));
    Stats stats = new Stats(100, 16, Map.of(new ColumnIdent("x"), columnStats));
    assertThat(SelectivityFunctions.estimateNumRows(stats, query, null), Matchers.is(50L));
}
Also used : ColumnIdent(io.crate.metadata.ColumnIdent) Symbol(io.crate.expression.symbol.Symbol) ColumnStats(io.crate.statistics.ColumnStats) Stats(io.crate.statistics.Stats) SqlExpressions(io.crate.testing.SqlExpressions) Test(org.junit.Test) CrateDummyClusterServiceUnitTest(io.crate.test.integration.CrateDummyClusterServiceUnitTest)

Example 12 with Stats

use of io.crate.statistics.Stats in project crate by crate.

the class SelectivityFunctionsTest method test_eq_null_value_is_always_0.

@Test
public void test_eq_null_value_is_always_0() {
    SqlExpressions expressions = new SqlExpressions(T3.sources(clusterService));
    Symbol query = expressions.asSymbol("x = null");
    var numbers = IntStream.range(1, 50).boxed().collect(Collectors.toList());
    var columnStats = ColumnStats.fromSortedValues(numbers, DataTypes.INTEGER, 0, 20_000L);
    var statsByColumn = new HashMap<ColumnIdent, ColumnStats>();
    statsByColumn.put(new ColumnIdent("x"), columnStats);
    Stats stats = new Stats(20_000, 16, statsByColumn);
    assertThat(SelectivityFunctions.estimateNumRows(stats, query, null), Matchers.is(0L));
}
Also used : ColumnIdent(io.crate.metadata.ColumnIdent) HashMap(java.util.HashMap) Symbol(io.crate.expression.symbol.Symbol) ColumnStats(io.crate.statistics.ColumnStats) Stats(io.crate.statistics.Stats) SqlExpressions(io.crate.testing.SqlExpressions) Test(org.junit.Test) CrateDummyClusterServiceUnitTest(io.crate.test.integration.CrateDummyClusterServiceUnitTest)

Aggregations

Stats (io.crate.statistics.Stats)12 ColumnStats (io.crate.statistics.ColumnStats)10 ColumnIdent (io.crate.metadata.ColumnIdent)9 Test (org.junit.Test)9 CrateDummyClusterServiceUnitTest (io.crate.test.integration.CrateDummyClusterServiceUnitTest)8 Symbol (io.crate.expression.symbol.Symbol)7 SqlExpressions (io.crate.testing.SqlExpressions)7 TableStats (io.crate.statistics.TableStats)6 RelationName (io.crate.metadata.RelationName)4 HashMap (java.util.HashMap)4 SQLExecutor (io.crate.testing.SQLExecutor)2 WhereClause (io.crate.analyze.WhereClause)1 Row1 (io.crate.data.Row1)1 ScopedSymbol (io.crate.expression.symbol.ScopedSymbol)1 Reference (io.crate.metadata.Reference)1 Collect (io.crate.planner.operators.Collect)1 Before (org.junit.Before)1