@@ -670,6 +670,85 @@ TEST(Other, Regression) {
670
670
dropTable (" table_b" );
671
671
}
672
672
673
+ TEST (Other, FixedLenArr) {
674
+ createTable (" table_a" ,
675
+ {{" si" , ctx ().int16 ()}, {" FixedLen" , ctx ().arrayFixed (2 , ctx ().int64 ())}},
676
+ {2 });
677
+
678
+ std::ostringstream oss;
679
+ oss << " {\" si\" : 1, \" FixedLen\" : [" << 7 << " , " << 233 << " ]}" << std::endl;
680
+ oss << " {\" si\" : 1, \" FixedLen\" : [" << 5 << " , " << 47 << " ]}" << std::endl;
681
+ oss << " {\" si\" : 2, \" FixedLen\" : [" << 6 << " , " << 48 << " ]}" << std::endl;
682
+ oss << " {\" si\" : 3, \" FixedLen\" : [" << 7 << " , " << 49 << " ]}" << std::endl;
683
+ oss << " {\" si\" : 4, \" FixedLen\" : [" << 8 << " , " << 67 << " ]}" << std::endl;
684
+ oss << " {\" si\" : 5, \" FixedLen\" : [" << 9 << " , " << 68 << " ]}" << std::endl;
685
+ oss << " {\" si\" : 6, \" FixedLen\" : [" << 10 << " , " << 69 << " ]}" << std::endl;
686
+ insertJsonValues (" table_a" , oss.str ());
687
+
688
+ createTable (" table_b" ,
689
+ {{" si" , ctx ().int8 ()}, {" FixedLen" , ctx ().arrayFixed (2 , ctx ().int32 ())}},
690
+ {2 });
691
+
692
+ std::ostringstream oss_2;
693
+ oss_2 << " {\" si\" : 1, \" FixedLen\" : [" << 2 << " , " << 33 << " ]}" << std::endl;
694
+ oss_2 << " {\" si\" : 2, \" FixedLen\" : [" << 1 << " , " << 17 << " ]}" << std::endl;
695
+ oss_2 << " {\" si\" : 2, \" FixedLen\" : [" << 6 << " , " << 48 << " ]}" << std::endl;
696
+ oss_2 << " {\" si\" : 3, \" FixedLen\" : [" << 7 << " , " << 49 << " ]}" << std::endl;
697
+ oss_2 << " {\" si\" : 4, \" FixedLen\" : [" << 8 << " , " << 67 << " ]}" << std::endl;
698
+ oss_2 << " {\" si\" : 5, \" FixedLen\" : [" << 9 << " , " << 68 << " ]}" << std::endl;
699
+ oss_2 << " {\" si\" : 6, \" FixedLen\" : [" << 10 << " , " << 69 << " ]}" << std::endl;
700
+ insertJsonValues (" table_b" , oss_2.str ());
701
+
702
+ EXPECT_NO_THROW (run_multiple_agg (R"(
703
+ SELECT * FROM table_a, table_b WHERE table_a.si = table_b.si;
704
+ )" ,
705
+ ExecutorDeviceType::CPU));
706
+
707
+ dropTable (" table_a" );
708
+ dropTable (" table_b" );
709
+ }
710
+
711
+ TEST (Other, FixedLenArr2) {
712
+ config ().rs .enable_lazy_fetch = false ;
713
+
714
+ createTable (" table_a" ,
715
+ {{" si" , ctx ().int16 ()}, {" FixedLen" , ctx ().arrayFixed (2 , ctx ().int16 ())}},
716
+ {1 });
717
+
718
+ std::ostringstream oss;
719
+ oss << " {\" si\" : 1, \" FixedLen\" : [" << 7 << " , " << 233 << " ]}" << std::endl;
720
+ oss << " {\" si\" : 1, \" FixedLen\" : [" << 5 << " , " << 47 << " ]}" << std::endl;
721
+ oss << " {\" si\" : 2, \" FixedLen\" : [" << 6 << " , " << 48 << " ]}" << std::endl;
722
+ oss << " {\" si\" : 3, \" FixedLen\" : [" << 7 << " , " << 49 << " ]}" << std::endl;
723
+ oss << " {\" si\" : 4, \" FixedLen\" : [" << 8 << " , " << 67 << " ]}" << std::endl;
724
+ oss << " {\" si\" : 5, \" FixedLen\" : [" << 9 << " , " << 68 << " ]}" << std::endl;
725
+ oss << " {\" si\" : 6, \" FixedLen\" : [" << 10 << " , " << 69 << " ]}" << std::endl;
726
+ insertJsonValues (" table_a" , oss.str ());
727
+
728
+ createTable (" table_b" ,
729
+ {{" si" , ctx ().int8 ()}, {" FixedLen" , ctx ().arrayFixed (2 , ctx ().int32 ())}},
730
+ {2 });
731
+
732
+ std::ostringstream oss_2;
733
+ oss_2 << " {\" si\" : 1, \" FixedLen\" : [" << 2 << " , " << 33 << " ]}" << std::endl;
734
+ oss_2 << " {\" si\" : 2, \" FixedLen\" : [" << 1 << " , " << 17 << " ]}" << std::endl;
735
+ oss_2 << " {\" si\" : 2, \" FixedLen\" : [" << 6 << " , " << 48 << " ]}" << std::endl;
736
+ oss_2 << " {\" si\" : 3, \" FixedLen\" : [" << 7 << " , " << 49 << " ]}" << std::endl;
737
+ oss_2 << " {\" si\" : 4, \" FixedLen\" : [" << 8 << " , " << 67 << " ]}" << std::endl;
738
+ oss_2 << " {\" si\" : 5, \" FixedLen\" : [" << 9 << " , " << 68 << " ]}" << std::endl;
739
+ oss_2 << " {\" si\" : 6, \" FixedLen\" : [" << 10 << " , " << 69 << " ]}" << std::endl;
740
+ insertJsonValues (" table_b" , oss_2.str ());
741
+
742
+ EXPECT_NO_THROW (run_multiple_agg (R"(
743
+ SELECT * FROM table_a INNER JOIN table_b ON table_a.FixedLen[1] =
744
+ table_b.FixedLen[1];
745
+ )" ,
746
+ ExecutorDeviceType::CPU));
747
+
748
+ dropTable (" table_a" );
749
+ dropTable (" table_b" );
750
+ }
751
+
673
752
int main (int argc, char ** argv) {
674
753
TestHelpers::init_logger_stderr_only (argc, argv);
675
754
testing::InitGoogleTest (&argc, argv);
0 commit comments