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? >> >