zhannngchen commented on code in PR #51001:
URL: https://github.com/apache/doris/pull/51001#discussion_r2097848710


##########
be/test/olap/delta_writer_test.cpp:
##########
@@ -1047,4 +1050,223 @@ TEST_F(TestDeltaWriter, 
vec_sequence_col_concurrent_write) {
     res = engine_ref->tablet_manager()->drop_tablet(request.tablet_id, 
request.replica_id, false);
     ASSERT_TRUE(res.ok());
 }
+
+TEST_F(TestDeltaWriter, write_statistics_segment_meta_pb) {
+    std::unique_ptr<RuntimeProfile> profile;
+    profile = std::make_unique<RuntimeProfile>("CreateTablet");
+    TCreateTabletReq request;
+    create_tablet_request(10009, 270068380, &request);
+    Status res = engine_ref->create_tablet(request, profile.get());
+    EXPECT_EQ(Status::OK(), res);
+
+    TDescriptorTable tdesc_tbl = create_descriptor_tablet();
+    ObjectPool obj_pool;
+    DescriptorTbl* desc_tbl = nullptr;
+    static_cast<void>(DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl));
+    TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
+    auto param = std::make_shared<OlapTableSchemaParam>();
+
+    PUniqueId load_id;
+    load_id.set_hi(0);
+    load_id.set_lo(0);
+    WriteRequest write_req;
+    write_req.tablet_id = 10009;
+    write_req.schema_hash = 270068380;
+    write_req.txn_id = 20002;
+    write_req.partition_id = 30003;
+    write_req.load_id = load_id;
+    write_req.tuple_desc = tuple_desc;
+    write_req.slots = &(tuple_desc->slots());
+    write_req.is_high_priority = true;
+    write_req.table_schema_param = param;
+
+    // test vec delta writer
+    profile = std::make_unique<RuntimeProfile>("LoadChannels");
+    auto delta_writer =
+            std::make_unique<DeltaWriter>(*engine_ref, write_req, 
profile.get(), TUniqueId {});
+    EXPECT_NE(delta_writer, nullptr);
+
+    vectorized::Block block;
+    for (const auto& slot_desc : tuple_desc->slots()) {
+        
block.insert(vectorized::ColumnWithTypeAndName(slot_desc->get_empty_mutable_column(),
+                                                       slot_desc->type(), 
slot_desc->col_name()));
+    }
+
+    auto columns = block.mutate_columns();
+    {
+        int8_t k1 = -127;
+        columns[0]->insert_data((const char*)&k1, sizeof(k1));
+
+        int16_t k2 = -32767;
+        columns[1]->insert_data((const char*)&k2, sizeof(k2));
+
+        int32_t k3 = -2147483647;
+        columns[2]->insert_data((const char*)&k3, sizeof(k3));
+
+        int64_t k4 = -9223372036854775807L;
+        columns[3]->insert_data((const char*)&k4, sizeof(k4));
+
+        int128_t k5 = -90000;
+        columns[4]->insert_data((const char*)&k5, sizeof(k5));
+
+        VecDateTimeValue k6;
+        k6.from_date_str("2048-11-10", 10);
+        auto k6_int = k6.to_int64();
+        columns[5]->insert_data((const char*)&k6_int, sizeof(k6_int));
+
+        VecDateTimeValue k7;
+        k7.from_date_str("2636-08-16 19:39:43", 19);
+        auto k7_int = k7.to_int64();
+        columns[6]->insert_data((const char*)&k7_int, sizeof(k7_int));
+
+        columns[7]->insert_data("abcd", 4);
+        columns[8]->insert_data("abcde", 5);
+
+        DecimalV2Value decimal_value;
+        decimal_value.assign_from_double(1.1);
+        columns[9]->insert_data((const char*)&decimal_value, 
sizeof(decimal_value));
+
+        DateV2Value<DateV2ValueType> date_v2;
+        date_v2.from_date_str("2048-11-10", 10);
+        auto date_v2_int = date_v2.to_date_int_val();
+        columns[10]->insert_data((const char*)&date_v2_int, 
sizeof(date_v2_int));
+
+        int8_t v1 = -127;
+        columns[11]->insert_data((const char*)&v1, sizeof(v1));
+
+        int16_t v2 = -32767;
+        columns[12]->insert_data((const char*)&v2, sizeof(v2));
+
+        int32_t v3 = -2147483647;
+        columns[13]->insert_data((const char*)&v3, sizeof(v3));
+
+        int64_t v4 = -9223372036854775807L;
+        columns[14]->insert_data((const char*)&v4, sizeof(v4));
+
+        int128_t v5 = -90000;
+        columns[15]->insert_data((const char*)&v5, sizeof(v5));
+
+        VecDateTimeValue v6;
+        v6.from_date_str("2048-11-10", 10);
+        auto v6_int = v6.to_int64();
+        columns[16]->insert_data((const char*)&v6_int, sizeof(v6_int));
+
+        VecDateTimeValue v7;
+        v7.from_date_str("2636-08-16 19:39:43", 19);
+        auto v7_int = v7.to_int64();
+        columns[17]->insert_data((const char*)&v7_int, sizeof(v7_int));
+
+        columns[18]->insert_data("abcd", 4);
+        columns[19]->insert_data("abcde", 5);
+
+        decimal_value.assign_from_double(1.1);
+        columns[20]->insert_data((const char*)&decimal_value, 
sizeof(decimal_value));
+
+        date_v2.from_date_str("2048-11-10", 10);
+        date_v2_int = date_v2.to_date_int_val();
+        columns[21]->insert_data((const char*)&date_v2_int, 
sizeof(date_v2_int));
+
+        res = delta_writer->write(&block, {0});

Review Comment:
   you should test write block for multiple times, current implementation will 
get wrong result



-- 
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: commits-unsubscr...@doris.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to