mroz45 opened a new issue, #44729:
URL: https://github.com/apache/arrow/issues/44729

   ### Describe the enhancement requested
   
   The current implementation of the asof join operation does not support the 
Fixed Size List. When attempting to use this data type in an asof join, the 
following error occurs:
   
   Invalid: Unsupported data type fixed_size_list<item: int32>[3] for field List
   
   Example of the code causing errors
   ```
       const int32_t list_size = 3; 
       const int num_rows = 5; 
   
       auto list_type = arrow::fixed_size_list(arrow::int32(), list_size);
       auto inner_builder = 
std::make_shared<arrow::Int32Builder>(arrow::default_memory_pool());
   
       arrow::Int16Builder idx_builder;
       arrow::FixedSizeListBuilder builder(arrow::default_memory_pool(), 
inner_builder, list_type);
       ARROW_RETURN_NOT_OK(builder.Reserve(num_rows));
   
       for (int i = 0; i < num_rows; ++i) {
           ARROW_RETURN_NOT_OK(inner_builder->AppendValues({i * 10, i * 10 + 1, 
i * 10 + 2}));
           ARROW_RETURN_NOT_OK(builder.Append());
           ARROW_RETURN_NOT_OK(idx_builder.Append(i));
       }
   
   ARROW_ASSIGN_OR_RAISE(auto idx_list, idx_builder.Finish());
   ARROW_ASSIGN_OR_RAISE(auto result1, builder.Finish());
   
       for (int j = 0; j < num_rows; ++j) {
           ARROW_RETURN_NOT_OK(inner_builder->AppendValues({j * 20, j * 20 + 4, 
j * 20 + 5}));
           ARROW_RETURN_NOT_OK(builder.Append());
           ARROW_RETURN_NOT_OK(idx_builder.Append(j*2));
       }
       
   ARROW_ASSIGN_OR_RAISE(auto idx_list2, idx_builder.Finish());
   ARROW_ASSIGN_OR_RAISE(auto result2, builder.Finish());
   
   //first table
     std::shared_ptr<arrow::Schema> schema1;
     schema1=arrow::schema({arrow::field("List", list_type), 
arrow::field("idx", arrow::int16())});
   
     std::shared_ptr<arrow::Table> l_table;
     l_table = arrow::Table::Make(schema1, {result1, idx_list}, num_rows);
   
   
   //second table
     std::shared_ptr<arrow::Schema> schema2;
     schema2=arrow::schema({arrow::field("List", list_type), 
arrow::field("idx", arrow::int16())});
   
     std::shared_ptr<arrow::Table> r_table;
     r_table = arrow::Table::Make(schema2, {result2, idx_list2}, num_rows);
   
   auto table_source_options_l = ac::TableSourceNodeOptions{l_table};
   ac::Declaration left{"table_source", std::move(table_source_options_l), 
"lTable"};
   
   auto table_source_options_r = ac::TableSourceNodeOptions{r_table};
   ac::Declaration right{"table_source", 
std::move(table_source_options_r),"rTable"};
   
   arrow::acero::AsofJoinNodeOptions::Keys left_keys;
   left_keys.on_key = arrow::FieldRef("idx"); 
   
   arrow::acero::AsofJoinNodeOptions::Keys right_keys;
   right_keys.on_key = arrow::FieldRef("idx");  
   
   ac::AsofJoinNodeOptions asof_opt{{left_keys, right_keys}, 3};
   
   arrow::acero::Declaration asof{"asofjoin", {std::move(left), 
std::move(right)}, std::move(asof_opt),};
   ARROW_ASSIGN_OR_RAISE(auto output_table, 
ac::DeclarationToTable(std::move(asof)));
   
   ```
   
   ### Component(s)
   
   C++


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to