@@ -804,16 +804,27 @@ class Table
804804 return unfiltered_const_iterator{mEnd };
805805 }
806806
807+ // / Return a type erased arrow table backing store for / the type safe table.
807808 std::shared_ptr<arrow::Table> asArrowTable () const
808809 {
809810 return mTable ;
810811 }
811812
813+ // / Size of the table, in rows.
812814 int64_t size () const
813815 {
814816 return mTable ->num_rows ();
815817 }
816818
819+ // / Bind the columns which refer to other tables
820+ // / to the associated tables.
821+ template <typename ... TA>
822+ void bindExternalIndices (TA*... current)
823+ {
824+ mBegin .bindExternalIndices (current...);
825+ mEnd .bindExternalIndices (current...);
826+ }
827+
817828 private:
818829 template <typename T>
819830 arrow::Column* lookupColumn ()
@@ -1098,6 +1109,13 @@ struct Join : JoinBase<Ts...> {
10981109 }
10991110
11001111 using originals = framework::concatenated_pack_t <originals_pack_t <Ts>...>;
1112+
1113+ template <typename ... TA>
1114+ void bindExternalIndices (TA*... externals)
1115+ {
1116+ this ->bindExternalIndices (externals...);
1117+ }
1118+
11011119 using table_t = JoinBase<Ts...>;
11021120};
11031121
@@ -1109,6 +1127,13 @@ struct Concat : ConcatBase<T1, T2> {
11091127 : ConcatBase<T1, T2>{ArrowHelpers::concatTables (std::move (tables)), offset} {}
11101128
11111129 using originals = framework::concatenated_pack_t <originals_pack_t <T1>, originals_pack_t <T2>>;
1130+
1131+ template <typename ... TA>
1132+ void bindExternalIndices (TA*... externals)
1133+ {
1134+ this ->bindExternalIndices (externals...);
1135+ }
1136+
11121137 // FIXME: can be remove when we do the same treatment we did for Join to Concatenate
11131138 using left_t = T1;
11141139 using right_t = T2;
0 commit comments