@@ -23,10 +23,6 @@ static std::string JoinPath(const std::string& basePath, const std::string& path
23
23
return prefixPathSplit;
24
24
}
25
25
26
- bool TLogMessage::TPrimaryKeyLogMessage::operator <(const TLogMessage::TPrimaryKeyLogMessage& o) const {
27
- return App < o.App || App == o.App && Host < o.Host || App == o.App && Host == o.Host && Timestamp < o.Timestamp ;
28
- }
29
-
30
26
TRunArgs GetRunArgs () {
31
27
32
28
std::string database = std::getenv (" YDB_DATABASE" );
@@ -41,18 +37,19 @@ TRunArgs GetRunArgs() {
41
37
return {driver, JoinPath (database, " bulk" )};
42
38
}
43
39
44
- TStatus CreateLogTable (TTableClient& client, const std::string& table) {
40
+ TStatus CreateTable (TTableClient& client, const std::string& table) {
45
41
std::cerr << " Create table " << table << " \n " ;
46
42
47
43
TRetryOperationSettings settings;
48
44
auto status = client.RetryOperationSync ([&table](TSession session) {
49
45
auto tableDesc = TTableBuilder ()
46
+ .AddNonNullableColumn (" pk" , EPrimitiveType::Uint64)
50
47
.AddNullableColumn (" App" , EPrimitiveType::Utf8)
51
48
.AddNullableColumn (" Timestamp" , EPrimitiveType::Timestamp)
52
49
.AddNullableColumn (" Host" , EPrimitiveType::Utf8)
53
50
.AddNullableColumn (" HttpCode" , EPrimitiveType::Uint32)
54
51
.AddNullableColumn (" Message" , EPrimitiveType::Utf8)
55
- .SetPrimaryKeyColumns ({" App " , " Host " , " Timestamp " })
52
+ .SetPrimaryKeyColumns ({" pk " })
56
53
.Build ();
57
54
58
55
return session.CreateTable (table, std::move (tableDesc)).GetValueSync ();
@@ -61,27 +58,25 @@ TStatus CreateLogTable(TTableClient& client, const std::string& table) {
61
58
return status;
62
59
}
63
60
64
- TStatistic GetLogBatch (uint64_t logOffset, std::vector<TLogMessage>& logBatch, std::set<TLogMessage::TPrimaryKeyLogMessage>& setMessage ) {
61
+ TStatistic GetLogBatch (uint64_t logOffset, std::vector<TLogMessage>& logBatch, uint32_t lastNumber ) {
65
62
logBatch.clear ();
66
63
uint32_t correctSumApp = 0 ;
67
64
uint32_t correctSumHost = 0 ;
68
65
uint32_t correctRowCount = 0 ;
69
66
70
67
for (size_t i = 0 ; i < BATCH_SIZE; ++i) {
71
- TLogMessage message;
72
- message.pk .App = " App_" + std::to_string (logOffset % 10 );
73
- message.pk .Host = " 192.168.0." + std::to_string (logOffset % 11 );
74
- message.pk .Timestamp = TInstant::Now () + TDuration::MilliSeconds (i % 1000 );
68
+ TLogMessage message;
69
+ message.pk = correctRowCount + lastNumber;
70
+ message.App = " App_" + std::to_string (logOffset % 10 );
71
+ message.Host = " 192.168.0." + std::to_string (logOffset % 11 );
72
+ message.Timestamp = TInstant::Now () + TDuration::MilliSeconds (i % 1000 );
75
73
message.HttpCode = 200 ;
76
74
message.Message = i % 2 ? " GET / HTTP/1.1" : " GET /images/logo.png HTTP/1.1" ;
77
75
logBatch.emplace_back (message);
78
76
79
- if (!setMessage.contains (message.pk )) {
80
- correctSumApp += logOffset % 10 ;
81
- correctSumHost += logOffset % 11 ;
82
- ++correctRowCount;
83
- setMessage.insert (message.pk );
84
- }
77
+ correctSumApp += logOffset % 10 ;
78
+ correctSumHost += logOffset % 11 ;
79
+ ++correctRowCount;
85
80
86
81
}
87
82
return {correctSumApp, correctSumHost, correctRowCount};
@@ -94,9 +89,10 @@ TStatus WriteLogBatch(TTableClient& tableClient, const std::string& table, const
94
89
for (const auto & message : logBatch) {
95
90
rows.AddListItem ()
96
91
.BeginStruct ()
97
- .AddMember (" App" ).Utf8 (message.pk .App )
98
- .AddMember (" Host" ).Utf8 (message.pk .Host )
99
- .AddMember (" Timestamp" ).Timestamp (message.pk .Timestamp )
92
+ .AddMember (" pk" ).Uint64 (message.pk )
93
+ .AddMember (" App" ).Utf8 (message.App )
94
+ .AddMember (" Host" ).Utf8 (message.Host )
95
+ .AddMember (" Timestamp" ).Timestamp (message.Timestamp )
100
96
.AddMember (" HttpCode" ).Uint32 (message.HttpCode )
101
97
.AddMember (" Message" ).Utf8 (message.Message )
102
98
.EndStruct ();
0 commit comments