@@ -269,6 +269,8 @@ class QueryBuilderTest : public TestSuite {
269
269
schema_mgr_ = std::make_shared<SchemaMgr>();
270
270
schema_mgr_->registerProvider (TEST_SCHEMA_ID, getStorage ());
271
271
schema_mgr_->registerProvider (TEST_SCHEMA_ID2, storage2_);
272
+ schema_mgr_->registerProvider (hdk::ResultSetRegistry::SCHEMA_ID,
273
+ getResultSetRegistry ());
272
274
273
275
createTable (" test1" ,
274
276
{{" col_bi" , ctx ().int64 ()},
@@ -4677,6 +4679,75 @@ TEST_F(Issue355, Reproducer) {
4677
4679
compare_res_data (res, std::vector<int64_t >({1 }), std::vector<int64_t >({12 }));
4678
4680
}
4679
4681
4682
+ TEST_F (QueryBuilderTest, RunOnResult) {
4683
+ QueryBuilder builder (ctx (), schema_mgr_, configPtr ());
4684
+
4685
+ {
4686
+ auto dag1 = builder.scan (" test1" ).proj ({0 , 1 }).finalize ();
4687
+ auto res1 = runQuery (std::move (dag1));
4688
+ compare_res_data (res1,
4689
+ std::vector<int64_t >({1 , 2 , 3 , 4 , 5 }),
4690
+ std::vector<int32_t >({11 , 22 , 33 , 44 , 55 }));
4691
+
4692
+ auto dag2 = builder.scan (res1.tableName ()).proj ({1 , 0 }).finalize ();
4693
+ auto res2 = runQuery (std::move (dag2));
4694
+ compare_res_data (res2,
4695
+ std::vector<int32_t >({11 , 22 , 33 , 44 , 55 }),
4696
+ std::vector<int64_t >({1 , 2 , 3 , 4 , 5 }));
4697
+
4698
+ auto scan = builder.scan (res2.tableName ());
4699
+ auto dag3 = scan.proj ({scan[" col_i" ] + 1 , scan[" col_bi" ] + 2 }).finalize ();
4700
+ auto res3 = runQuery (std::move (dag3));
4701
+ compare_res_data (res3,
4702
+ std::vector<int32_t >({12 , 23 , 34 , 45 , 56 }),
4703
+ std::vector<int64_t >({3 , 4 , 5 , 6 , 7 }));
4704
+ }
4705
+
4706
+ {
4707
+ auto scan1 = builder.scan (" test1" );
4708
+ auto dag1 = scan1.proj ({scan1[" col_bi" ] + 1 , scan1[" col_f" ]}).finalize ();
4709
+ auto res1 = runQuery (std::move (dag1));
4710
+ compare_res_data (res1,
4711
+ std::vector<int64_t >({2 , 3 , 4 , 5 , 6 }),
4712
+ std::vector<float >({1.1 , 2.2 , 3.3 , 4.4 , 5.5 }));
4713
+
4714
+ auto scan2 = builder.scan (" test1" );
4715
+ auto dag2 = scan2.proj ({scan2[" col_bi" ] + 2 , scan2[" col_d" ]}).finalize ();
4716
+ auto res2 = runQuery (std::move (dag2));
4717
+ compare_res_data (res2,
4718
+ std::vector<int64_t >({3 , 4 , 5 , 6 , 7 }),
4719
+ std::vector<double >({11.11 , 22.22 , 33.33 , 44.44 , 55.55 }));
4720
+
4721
+ auto dag3 =
4722
+ builder.scan (res1.tableName ()).join (builder.scan (res2.tableName ())).finalize ();
4723
+ auto res3 = runQuery (std::move (dag3));
4724
+ compare_res_data (res3,
4725
+ std::vector<int64_t >({3 , 4 , 5 , 6 }),
4726
+ std::vector<float >({2.2 , 3.3 , 4.4 , 5.5 }),
4727
+ std::vector<double >({11.11 , 22.22 , 33.33 , 44.44 }));
4728
+ }
4729
+ }
4730
+
4731
+ TEST_F (QueryBuilderTest, RowidOnResult) {
4732
+ QueryBuilder builder (ctx (), schema_mgr_, configPtr ());
4733
+
4734
+ {
4735
+ auto dag1 = builder.scan (" test1" ).proj ({0 , 1 }).finalize ();
4736
+ auto res1 = runQuery (std::move (dag1));
4737
+ compare_res_data (res1,
4738
+ std::vector<int64_t >({1 , 2 , 3 , 4 , 5 }),
4739
+ std::vector<int32_t >({11 , 22 , 33 , 44 , 55 }));
4740
+
4741
+ auto dag2 =
4742
+ builder.scan (res1.tableName ()).proj ({" col_i" , " col_bi" , " rowid" }).finalize ();
4743
+ auto res2 = runQuery (std::move (dag2));
4744
+ compare_res_data (res2,
4745
+ std::vector<int32_t >({11 , 22 , 33 , 44 , 55 }),
4746
+ std::vector<int64_t >({1 , 2 , 3 , 4 , 5 }),
4747
+ std::vector<int64_t >({0 , 1 , 2 , 3 , 4 }));
4748
+ }
4749
+ }
4750
+
4680
4751
class Taxi : public TestSuite {
4681
4752
protected:
4682
4753
static void SetUpTestSuite () {
0 commit comments