Ejemplo n.º 1
0
def test_isnull_1_0(table):
    expr = table.g.isnull().ifelse(1, 0)

    result = translate(expr)
    expected = 'CASE WHEN `g` IS NULL THEN 1 ELSE 0 END'
    assert result == expected

    # inside some other function
    result = translate(expr.sum())
    expected = 'sum(CASE WHEN `g` IS NULL THEN 1 ELSE 0 END)'
    assert result == expected
Ejemplo n.º 2
0
def test_timestamp_deltas(table, unit, compiled_unit):
    f = '`i`'

    K = 5

    offset = ibis.interval(**{unit: K})

    add_expr = table.i + offset
    result = translate(add_expr)
    assert result == f'date_add({f}, INTERVAL {K} {compiled_unit})'

    sub_expr = table.i - offset
    result = translate(sub_expr)
    assert result == f'date_sub({f}, INTERVAL {K} {compiled_unit})'
Ejemplo n.º 3
0
def test_where_use_if(table):
    expr = ibis.where(table.f > 0, table.e, table.a)
    assert isinstance(expr, ir.FloatingValue)

    result = translate(expr)
    expected = "if(`f` > 0, `e`, `a`)"
    assert result == expected
Ejemplo n.º 4
0
def test_hash(table):
    expr = table.int_col.hash()
    assert isinstance(expr, ir.IntegerColumn)
    assert isinstance(table.int_col.sum().hash(), ir.IntegerScalar)

    expr = table.int_col.hash()
    expected = 'fnv_hash(`int_col`)'
    assert translate(expr) == expected
Ejemplo n.º 5
0
def test_reduction_where(table, expr_fn, func_name):
    expr = expr_fn(table)
    result = translate(expr)
    expected = (
        f'{func_name}'
        '(CASE WHEN `bigint_col` < 70 THEN `double_col` '
        'ELSE NULL END)'
    )
    assert result == expected
Ejemplo n.º 6
0
def test_search_case(search_case):
    expr = search_case
    result = translate(expr)
    expected = """CASE
  WHEN `f` > 0 THEN `d` * 2
  WHEN `c` < 0 THEN `a` * 2
  ELSE CAST(NULL AS bigint)
END"""
    assert result == expected
Ejemplo n.º 7
0
def test_simple_case(simple_case):
    expr = simple_case
    result = translate(expr)
    expected = """CASE `g`
  WHEN 'foo' THEN 'bar'
  WHEN 'baz' THEN 'qux'
  ELSE 'default'
END"""
    assert result == expected
Ejemplo n.º 8
0
def test_numeric_unary_builtins(ibis_name, cname, table):
    sql_name = IBIS_TO_SQL_NAMES.get(ibis_name, ibis_name)

    method = getattr(table[cname], ibis_name)
    expr = method()
    expected = f'{sql_name}(`{cname}`)'

    result = translate(expr)
    assert result == expected
Ejemplo n.º 9
0
def test_column_ref_table_aliases():
    context = ImpalaCompiler.make_context()

    table1 = ibis.table([('key1', 'string'), ('value1', 'double')])

    table2 = ibis.table([('key2', 'string'), ('value and2', 'double')])

    context.set_ref(table1, 't0')
    context.set_ref(table2, 't1')

    expr = table1['value1'] - table2['value and2']

    result = translate(expr, context=context)
    expected = 't0.`value1` - t1.`value and2`'
    assert result == expected
Ejemplo n.º 10
0
def test_correlated_predicate_subquery(table):
    t0 = table
    t1 = t0.view()

    expr = t0.g == t1.g

    ctx = ImpalaCompiler.make_context()
    ctx.make_alias(t0)

    # Grab alias from parent context
    subctx = ctx.subcontext()
    subctx.make_alias(t1)
    subctx.make_alias(t0)

    result = translate(expr, context=subctx)
    expected = "t0.`g` = t1.`g`"
    assert result == expected
Ejemplo n.º 11
0
def test_identifier_quoting():
    schema = [('date', 'double'), ('table', 'string')]
    table = ibis.table(schema)
    translate(table['date'], named='`date`')
    translate(table['table'], named='`table`')
Ejemplo n.º 12
0
def test_column_ref_quoting():
    schema = [('has a space', 'double')]
    table = ibis.table(schema)
    translate(table['has a space'], named='`has a space`')
Ejemplo n.º 13
0
def test_decimal_builtins(mockcon, expr_fn, expected):
    t = mockcon.table('tpch_lineitem')
    col = t.l_extendedprice
    expr = expr_fn(col)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 14
0
def test_any_all(table, expr_fn, expected):
    expr = expr_fn(table.f == 0)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 15
0
def test_decimal_casts(table, expr_fn, expected):
    expr = expr_fn(table)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 16
0
def test_find(table):
    expr = table.string_col.find('a', start=table.tinyint_col)
    expected = "locate('a', `string_col`, `tinyint_col` + 1) - 1"
    assert translate(expr) == expected
Ejemplo n.º 17
0
def test_casts(table, column, to_type, expected_type):
    expr = table[column].cast(to_type)
    result = translate(expr)
    assert result == f"CAST(`{column}` AS {expected_type})"
Ejemplo n.º 18
0
def test_literals(value, expected):
    expr = L(value)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 19
0
def test_timestamp_now():
    expr = ibis.now()
    result = translate(expr)
    assert result == "now()"
Ejemplo n.º 20
0
def test_timestamp_extract_field(table, field):
    expr = getattr(table.i, field)()
    expected = f"extract(`i`, '{field}')"
    result = translate(expr)
    assert result == expected
Ejemplo n.º 21
0
def test_negate(table, expr_fn, expected):
    expr = expr_fn(table)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 22
0
def test_isnull_notnull(table, expr_fn, expected):
    expr = expr_fn(table)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 23
0
def test_bucket_to_case(table, expr_fn, expected):
    expr = expr_fn(table.f)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 24
0
def test_misc_conditionals(table):
    expr = table.a.nullif(0)
    expected = 'nullif(`a`, 0)'
    result = translate(expr)
    assert result == expected
Ejemplo n.º 25
0
def test_numeric(expr_fn, expected, table):
    expr = expr_fn(table)
    result = translate(expr)
    assert result == expected
Ejemplo n.º 26
0
def test_timestamp_literals(expr_fn, expected):
    expr = expr_fn('2015-01-01 12:34:56')
    result = translate(expr)
    assert result == expected
Ejemplo n.º 27
0
def test_string_builtins(table, expr_fn, expected):
    expr = expr_fn(table.string_col)
    assert translate(expr) == expected
Ejemplo n.º 28
0
def test_timestamp_day_of_week(expr_fn, expected):
    expr = expr_fn(ibis.timestamp('2015-09-01T01:00:23'))
    result = translate(expr)
    assert result == expected
Ejemplo n.º 29
0
def test_string_join():
    expr = L(',').join(['a', 'b'])
    expected = "concat_ws(',', 'a', 'b')"
    assert translate(expr) == expected
Ejemplo n.º 30
0
def test_timestamp_from_integer(table, expr_fn, expected):
    expr = expr_fn(table.c)
    result = translate(expr)
    assert result == expected