@@ -6020,6 +6020,46 @@ TEST_F(Issue513, Reproducer) {
6020
6020
compare_res_data (res, std::vector<int32_t >({3 }));
6021
6021
}
6022
6022
6023
+ class Issue588 : public TestSuite {
6024
+ protected:
6025
+ static void SetUpTestSuite () {
6026
+ createTable (" test_588_1" , {{" id" , ctx ().int64 ()}, {" A" , ctx ().int64 ()}});
6027
+ insertCsvValues (" test_588_1" , " 1,1\n 2,2\n 3,3" );
6028
+ createTable (" test_588_2" , {{" id" , ctx ().int64 ()}, {" B" , ctx ().int64 ()}});
6029
+ insertCsvValues (" test_588_2" , " 1,2\n 2,3\n 3,3" );
6030
+ createTable (" test_588_3" , {{" id" , ctx ().int64 ()}, {" C" , ctx ().int64 ()}});
6031
+ insertCsvValues (" test_588_3" , " 1,1\n 2,2\n 3,3" );
6032
+ createTable (" test_588_4" , {{" id" , ctx ().int64 ()}, {" D" , ctx ().int64 ()}});
6033
+ insertCsvValues (" test_588_4" , " 1,2\n 2,3\n 3,3" );
6034
+ }
6035
+
6036
+ static void TearDownTestSuite () {
6037
+ dropTable (" test_588_1" );
6038
+ dropTable (" test_588_2" );
6039
+ dropTable (" test_588_3" );
6040
+ dropTable (" test_588_4" );
6041
+ }
6042
+ };
6043
+
6044
+ TEST_F (Issue588, Reproducer1) {
6045
+ QueryBuilder builder (ctx (), getSchemaProvider (), configPtr ());
6046
+ auto scan1 = builder.scan (" test_588_1" );
6047
+ auto scan2 = builder.scan (" test_588_2" );
6048
+ auto scan3 = builder.scan (" test_588_3" );
6049
+ auto scan4 = builder.scan (" test_588_4" );
6050
+
6051
+ auto dag1 = scan1.proj ({0 , 1 }).join (scan2.proj ({0 , 1 })).finalize ();
6052
+ auto res1 = runQuery (std::move (dag1));
6053
+
6054
+ auto dag2 =
6055
+ builder.scan (res1.tableName ()).proj ({0 , 1 }).join (scan3.proj ({0 , 1 })).finalize ();
6056
+ auto res2 = runQuery (std::move (dag2));
6057
+
6058
+ auto dag3 =
6059
+ builder.scan (res2.tableName ()).proj ({0 , 1 }).join (scan4.proj ({0 , 1 })).finalize ();
6060
+ auto res3 = runQuery (std::move (dag3));
6061
+ }
6062
+
6023
6063
TEST_F (QueryBuilderTest, RunOnResult) {
6024
6064
QueryBuilder builder (ctx (), schema_mgr_, configPtr ());
6025
6065
0 commit comments