For reference, this is the "relations" entry that I was referring to:
https://github.com/apache/arrow/blob/master/python/pyarrow/tests/test_substrait.py#L186

On Tue, Oct 4, 2022 at 3:28 PM Li Jin <ice.xell...@gmail.com> wrote:

> So I made some progress with updated code:
>
>         t = ibis.table([("a", "int64"), ("b", "int64")], name="table0")
>
>         test_table_0 = pa.Table.from_pydict({"a": [1, 2, 3], "b": [4, 5,
> 6]})
>
>
>
>         result = translate(t, self.compiler)
>
>
>
>         def table_provider(names):
>
>             if not names:
>
>                 raise Exception("No names provided")
>
>             elif names[0] == 'table0':
>
>                 return test_table_0
>
>             else:
>
>                 raise Exception(f"Unknown table name {names}")
>
>
>
>         print(result)
>
>         result_buf =
> pa._substrait._parse_json_plan(tobytes(MessageToJson(result)))
>
>
>
>         pa.substrait.run_query(result_buf, table_provider)
>
> I think now the plan is passed properly and I got a "ArrowInvalid: Empty
> substrait plan is passed"
>
>
> Looking the plan reproduces by ibis-substrait, it looks like doesn't match
> the expected format of Acero consumer. In particular, it looks like the
> plan produced by ibis-substrait doesn't have a "relations" entry - any
> thoughts on how this can be fixed? (I don't know if I am using the API
> wrong or some format inconsistency between the two)
>
> On Tue, Oct 4, 2022 at 1:54 PM Li Jin <ice.xell...@gmail.com> wrote:
>
>> Hi,
>>
>> I am testing integration between ibis-substrait and Acero but hit a
>> segmentation fault. I think this might be cause the way I am
>> integrating these two libraries are wrong, here is my code:
>>
>> Li Jin
>> 1:51 PM (1 minute ago)
>> to me
>>
>> class BasicTests(unittest.TestCase):
>>
>>     """Test basic features"""
>>
>>
>>
>>
>>
>>     @classmethod
>>
>>     def setUpClass(cls):
>>
>>         cls.compiler = SubstraitCompiler()
>>
>>
>>
>>     def test_named_table(self):
>>
>>         """Test basic"""
>>
>>         t = ibis.table([("a", "int64"), ("b", "int64")], name="table0")
>>
>>         result = translate(t, self.compiler)
>>
>>
>>
>>         def table_provider(names):
>>
>>             if not names:
>>
>>                 raise Exception("No names provided")
>>
>>             elif names[0] == 'table0':
>>
>>                 return test_table_0
>>
>>             else:
>>
>>                 raise Exception(f"Unknown table name {names}")
>>
>>
>>
>>         test_table_0 = pa.Table.from_pydict({"a": [1, 2, 3], "b": [4, 5,
>> 6]})
>>
>>
>>
>>         print(type(result))
>>
>>         print(result)
>>
>>         result_bytes = result.SerializeToString()
>>
>>
>>
>>         pa.substrait.run_query(result_bytes, table_provider)
>>
>>
>> I wonder if someone has tried integration between these two before and
>> can share some working code?
>>
>

Reply via email to