@@ -143,9 +143,8 @@ defmodule Bench do
143
143
encode_string ( hostname ) ,
144
144
encode_string ( pathname ) ,
145
145
<< user_id :: 64 - unsigned , session_id :: 64 - unsigned , timestamp :: 16 - unsigned >> ,
146
- # TODO
147
- meta_keys ,
148
- meta_values ,
146
+ encode_string_array ( meta_keys ) ,
147
+ encode_string_array ( meta_values ) ,
149
148
encode_nullable ( revenue_source_amount ) ,
150
149
encode_fixed_string_3 ( revenue_source_currency ) ,
151
150
encode_nullable ( revenue_reporting_amount ) ,
@@ -188,6 +187,35 @@ defmodule Bench do
188
187
189
188
defp encode_string ( nil ) , do: 0
190
189
190
+ @ compile inline: [ encode_string_array: 1 ]
191
+ def encode_string_array ( [ ] ) , do: 0
192
+ # def encode_string_array([e1]), do: [1, encode_varint(byte_size(e1)) | e1]
193
+
194
+ # def encode_string_array([e1, e2]) do
195
+ # [2, encode_varint(byte_size(e1)), e1, encode_varint(byte_size(e2)), e2]
196
+ # end
197
+
198
+ # def encode_string_array([e1, e2, e3]) do
199
+ # [
200
+ # 2,
201
+ # encode_varint(byte_size(e1)),
202
+ # e1,
203
+ # encode_varint(byte_size(e2)),
204
+ # e2,
205
+ # encode_varint(byte_size(e3)),
206
+ # e3
207
+ # ]
208
+ # end
209
+
210
+ def encode_string_array ( [ _ | _ ] = arr ) do
211
+ [ encode_varint ( length ( arr ) ) | encode_strings ( arr ) ]
212
+ end
213
+
214
+ def encode_string_array ( nil ) , do: 0
215
+
216
+ defp encode_strings ( [ s | rest ] ) , do: [ encode_string ( s ) | encode_strings ( rest ) ]
217
+ defp encode_strings ( [ ] ) , do: [ ]
218
+
191
219
@ compile inline: [ encode_fixed_string_2: 1 ]
192
220
defp encode_fixed_string_2 ( str ) when byte_size ( str ) == 2 , do: str
193
221
defp encode_fixed_string_2 ( nil ) , do: << 0 , 0 >>
@@ -219,6 +247,7 @@ defmodule Bench do
219
247
"current encoder" => & Bench . current_encoder / 1 ,
220
248
"next encoder" => & Bench . next_encoder / 1
221
249
} ,
250
+ # profile_after: true,
222
251
inputs: % {
223
252
# "empty" => %ClickhouseEventV2{},
224
253
"pageview" => % ClickhouseEventV2 {
0 commit comments