@@ -619,6 +619,106 @@ void PrepareRequestRowForLongWindow(const std::string& base_db, const std::strin
619619 ASSERT_TRUE (req->Build ());
620620}
621621
622+ TEST_P (DBSDKTest, DeployLongWindowsEmpty) {
623+ auto cli = GetParam ();
624+ cs = cli->cs ;
625+ sr = cli->sr ;
626+ ::hybridse::sdk::Status status;
627+ sr->ExecuteSQL (" SET @@execute_mode='online';" , &status);
628+ std::string base_table = " t_lw" + GenRand ();
629+ std::string base_db = " d_lw" + GenRand ();
630+ bool ok;
631+ std::string msg;
632+ CreateDBTableForLongWindow (base_db, base_table);
633+
634+ std::string deploy_sql = " deploy test_aggr options(LONG_WINDOWS='w1:2') select col1, col2,"
635+ " sum(i64_col) over w1 as w1_sum_i64_col,"
636+ " sum(i16_col) over w1 as w1_sum_i16_col,"
637+ " sum(i32_col) over w1 as w1_sum_i32_col,"
638+ " sum(f_col) over w1 as w1_sum_f_col,"
639+ " sum(d_col) over w1 as w1_sum_d_col,"
640+ " sum(t_col) over w1 as w1_sum_t_col,"
641+ " sum(col3) over w2 as w2_sum_col3"
642+ " from " + base_table +
643+ " WINDOW w1 AS (PARTITION BY " + base_table + " .col1," + base_table + " .col2 ORDER BY col3"
644+ " ROWS_RANGE BETWEEN 5 PRECEDING AND CURRENT ROW), "
645+ " w2 AS (PARTITION BY col1,col2 ORDER BY i64_col"
646+ " ROWS BETWEEN 6 PRECEDING AND CURRENT ROW);" ;
647+ sr->ExecuteSQL (base_db, " use " + base_db + " ;" , &status);
648+ ASSERT_TRUE (status.IsOK ()) << status.msg ;
649+ sr->ExecuteSQL (base_db, deploy_sql, &status);
650+ ASSERT_TRUE (status.IsOK ()) << status.msg ;
651+
652+ std::string pre_aggr_db = openmldb::nameserver::PRE_AGG_DB;
653+ std::string result_sql = " select * from pre_test_aggr_w1_sum_i64_col;" ;
654+ auto rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
655+ ASSERT_EQ (0 , rs->Size ());
656+
657+ result_sql = " select * from pre_test_aggr_w1_sum_i16_col;" ;
658+ rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
659+ ASSERT_EQ (0 , rs->Size ());
660+
661+ result_sql = " select * from pre_test_aggr_w1_sum_i32_col;" ;
662+ rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
663+ ASSERT_EQ (0 , rs->Size ());
664+
665+ result_sql = " select * from pre_test_aggr_w1_sum_f_col;" ;
666+ rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
667+ ASSERT_EQ (0 , rs->Size ());
668+
669+ result_sql = " select * from pre_test_aggr_w1_sum_d_col;" ;
670+ rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
671+ ASSERT_EQ (0 , rs->Size ());
672+
673+ result_sql = " select * from pre_test_aggr_w1_sum_t_col;" ;
674+ rs = sr->ExecuteSQL (pre_aggr_db, result_sql, &status);
675+ ASSERT_EQ (0 , rs->Size ());
676+
677+ int req_num = 2 ;
678+ for (int i = 0 ; i < req_num; i++) {
679+ std::shared_ptr<sdk::SQLRequestRow> req;
680+ PrepareRequestRowForLongWindow (base_db, " test_aggr" , req);
681+ auto res = sr->CallProcedure (base_db, " test_aggr" , req, &status);
682+ ASSERT_TRUE (status.IsOK ());
683+ ASSERT_EQ (1 , res->Size ());
684+ ASSERT_TRUE (res->Next ());
685+ ASSERT_EQ (" str1" , res->GetStringUnsafe (0 ));
686+ ASSERT_EQ (" str2" , res->GetStringUnsafe (1 ));
687+ int64_t exp = 11 ;
688+ ASSERT_EQ (exp, res->GetInt64Unsafe (2 ));
689+ ASSERT_EQ (exp, res->GetInt16Unsafe (3 ));
690+ ASSERT_EQ (exp, res->GetInt32Unsafe (4 ));
691+ ASSERT_EQ (exp, res->GetFloatUnsafe (5 ));
692+ ASSERT_EQ (exp, res->GetDoubleUnsafe (6 ));
693+ ASSERT_EQ (exp, res->GetTimeUnsafe (7 ));
694+ ASSERT_EQ (exp, res->GetInt64Unsafe (8 ));
695+ }
696+
697+ ASSERT_TRUE (cs->GetNsClient ()->DropProcedure (base_db, " test_aggr" , msg));
698+ std::string pre_aggr_table = " pre_test_aggr_w1_sum_i64_col" ;
699+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
700+ ASSERT_TRUE (ok);
701+ pre_aggr_table = " pre_test_aggr_w1_sum_i16_col" ;
702+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
703+ ASSERT_TRUE (ok);
704+ pre_aggr_table = " pre_test_aggr_w1_sum_i32_col" ;
705+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
706+ ASSERT_TRUE (ok);
707+ pre_aggr_table = " pre_test_aggr_w1_sum_f_col" ;
708+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
709+ ASSERT_TRUE (ok);
710+ pre_aggr_table = " pre_test_aggr_w1_sum_d_col" ;
711+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
712+ ASSERT_TRUE (ok);
713+ pre_aggr_table = " pre_test_aggr_w1_sum_t_col" ;
714+ ok = sr->ExecuteDDL (pre_aggr_db, " drop table " + pre_aggr_table + " ;" , &status);
715+ ASSERT_TRUE (ok);
716+ ok = sr->ExecuteDDL (base_db, " drop table " + base_table + " ;" , &status);
717+ ASSERT_TRUE (ok);
718+ ok = sr->DropDB (base_db, &status);
719+ ASSERT_TRUE (ok);
720+ }
721+
622722TEST_P (DBSDKTest, DeployLongWindowsExecuteSum) {
623723 auto cli = GetParam ();
624724 cs = cli->cs ;
0 commit comments