Skip to content

Commit

Permalink
feat(clickhouse): implement ops.StructColumn operation
Browse files Browse the repository at this point in the history
  • Loading branch information
cpcloud committed Jul 19, 2022
1 parent 211bfab commit 0063007
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions ibis/backends/clickhouse/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,14 @@ def _array_column(translator, expr):
return f"[{args}]"


def _struct_column(translator, expr):
args = ", ".join(map(translator.translate, expr.op().values))
# ClickHouse struct types cannot be nullable
# (non-nested fields can be nullable)
struct_type = serialize(expr.type()(nullable=False))
return f"CAST(({args}) AS {struct_type})"


def _clip(translator, expr):
op = expr.op()
arg = translator.translate(op.arg)
Expand Down Expand Up @@ -832,6 +840,7 @@ def _struct_field(translator, expr):
ops.ArrayColumn: _array_column,
ops.Clip: _clip,
ops.StructField: _struct_field,
ops.StructColumn: _struct_column,
}


Expand Down

0 comments on commit 0063007

Please sign in to comment.