Skip to content

[fix](be) Fix QuantileState protobuf serialization in write/read_column_to_pb#64152

Open
heguanhui wants to merge 1 commit into
apache:masterfrom
heguanhui:fix/quantile-state-serde-pb-serialization
Open

[fix](be) Fix QuantileState protobuf serialization in write/read_column_to_pb#64152
heguanhui wants to merge 1 commit into
apache:masterfrom
heguanhui:fix/quantile-state-serde-pb-serialization

Conversation

@heguanhui

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: close #64149

Problem Summary: DataTypeQuantileStateSerDe::write_column_to_pb used get_data_at() to copy sizeof(QuantileState) bytes of raw memory, but QuantileState contains heap-allocated members (shared_ptr<TDigest>, vector<double>) whose data is not stored inline. read_column_from_pb then used insert_data() to reinterpret this incomplete memory as a QuantileState object, resulting in dangling pointers and data corruption.

Additionally, write_column_to_pb was missing the PGenericType::QUANTILE_STATE type id assignment.

The test also had a bug: it compared QuantileState objects via get_data_at() (raw memory comparison), which compares pointer values rather than logical equality.

Release note

Fixed QuantileState type corruption in RPC UDF / RPC aggregate function / fold constant paths. Previously, QuantileState values could be silently corrupted or lost when transmitted via protobuf.

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes. Fixes broken behavior — QuantileState values were corrupted during protobuf serialization/deserialization.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@heguanhui

Copy link
Copy Markdown
Contributor Author

/review

@heguanhui

Copy link
Copy Markdown
Contributor Author

run buildall

@heguanhui heguanhui force-pushed the fix/quantile-state-serde-pb-serialization branch 2 times, most recently from c3f87fe to 9f6743d Compare June 7, 2026 10:59
@heguanhui

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100.00% (13/13) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.87% (28291/38298)
Line Coverage 57.91% (307985/531862)
Region Coverage 54.82% (258395/471332)
Branch Coverage 56.14% (111967/199431)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 29375 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 9f6743df49796f8d7f612ad091f0d5305e50d560, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17689	3985	3958	3958
q2	q3	10831	1418	796	796
q4	4686	510	370	370
q5	7561	918	585	585
q6	185	176	135	135
q7	801	853	648	648
q8	9339	1598	1574	1574
q9	5883	4580	4567	4567
q10	6743	1819	1572	1572
q11	433	272	250	250
q12	626	425	290	290
q13	18132	3447	2794	2794
q14	270	264	244	244
q15	q16	826	781	720	720
q17	926	965	909	909
q18	6883	5900	5507	5507
q19	1315	1276	1123	1123
q20	505	410	264	264
q21	6422	2835	2757	2757
q22	470	373	312	312
Total cold run time: 100526 ms
Total hot run time: 29375 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	5151	4813	4687	4687
q2	q3	4982	5415	4682	4682
q4	2165	2212	1381	1381
q5	4769	4991	4746	4746
q6	228	171	129	129
q7	1865	1839	1536	1536
q8	2431	2102	2118	2102
q9	7896	7544	7398	7398
q10	4735	4675	4204	4204
q11	534	386	358	358
q12	732	756	527	527
q13	3008	3377	2827	2827
q14	280	272	258	258
q15	q16	701	697	627	627
q17	1318	1264	1261	1261
q18	7433	6801	6892	6801
q19	1139	1073	1094	1073
q20	2225	2220	1945	1945
q21	5282	4551	4397	4397
q22	525	454	428	428
Total cold run time: 57399 ms
Total hot run time: 51367 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 169788 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 9f6743df49796f8d7f612ad091f0d5305e50d560, data reload: false

query5	4348	632	473	473
query6	453	216	192	192
query7	4946	548	309	309
query8	383	219	226	219
query9	8762	4140	4098	4098
query10	461	317	266	266
query11	5931	2306	2237	2237
query12	156	103	99	99
query13	1280	616	473	473
query14	6408	5433	5107	5107
query14_1	4398	4416	4581	4416
query15	209	195	174	174
query16	986	467	356	356
query17	917	697	557	557
query18	2469	467	339	339
query19	213	186	140	140
query20	108	109	104	104
query21	218	141	124	124
query22	13664	13624	13481	13481
query23	17361	16535	16203	16203
query23_1	16297	16303	16335	16303
query24	7728	1793	1343	1343
query24_1	1338	1351	1353	1351
query25	580	478	401	401
query26	1309	329	172	172
query27	2672	553	340	340
query28	4521	2028	2035	2028
query29	1092	636	502	502
query30	318	245	203	203
query31	1129	1080	978	978
query32	118	64	62	62
query33	536	331	273	273
query34	1192	1120	655	655
query35	763	789	700	700
query36	1374	1395	1268	1268
query37	161	104	101	101
query38	3222	3142	3085	3085
query39	941	921	916	916
query39_1	878	880	872	872
query40	230	131	107	107
query41	74	71	70	70
query42	99	106	97	97
query43	329	331	286	286
query44	
query45	205	192	196	192
query46	1102	1210	762	762
query47	2380	2400	2264	2264
query48	394	430	319	319
query49	657	485	381	381
query50	1021	358	269	269
query51	4394	4312	4239	4239
query52	92	93	79	79
query53	244	273	195	195
query54	300	237	220	220
query55	82	81	73	73
query56	254	231	276	231
query57	1415	1425	1346	1346
query58	243	212	215	212
query59	1603	1726	1447	1447
query60	279	269	230	230
query61	153	157	155	155
query62	705	651	594	594
query63	231	187	185	185
query64	2566	774	618	618
query65	
query66	1782	467	338	338
query67	29747	29700	29476	29476
query68	
query69	431	307	266	266
query70	957	966	931	931
query71	298	229	213	213
query72	2971	2764	2394	2394
query73	876	781	411	411
query74	5150	5010	4785	4785
query75	2690	2605	2227	2227
query76	2288	1152	793	793
query77	359	374	287	287
query78	12505	12514	11879	11879
query79	1417	1051	735	735
query80	596	485	402	402
query81	456	283	247	247
query82	832	160	122	122
query83	362	274	253	253
query84	
query85	925	525	463	463
query86	397	310	283	283
query87	3421	3364	3187	3187
query88	3655	2750	2730	2730
query89	413	388	325	325
query90	1940	179	188	179
query91	180	164	139	139
query92	65	63	60	60
query93	1412	1460	866	866
query94	549	341	311	311
query95	702	383	346	346
query96	1090	860	349	349
query97	2705	2693	2564	2564
query98	214	204	206	204
query99	1187	1181	1065	1065
Total cold run time: 251749 ms
Total hot run time: 169788 ms

@yx-keith yx-keith left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fix is correct: write/read_column_to_pb now serialize/deserialize the logical value via get_element()/serialize()/deserialize() + insert_value(), which is consistent with the existing write_column_to_arrow, write_column_to_orc, to_string paths in this file, and with the bitmap/hll SerDes. The added set_id(PGenericType::QUANTILE_STATE) and the switch to assert_cast are also correct. The same-class bug does not exist in the bitmap/hll SerDes — they were already correct — so QuantileState was the only outlier.

Four points to address before merge:

deserialize return value is ignored. QuantileState::deserialize returns bool. Since this PR fixes a data-corruption path, malformed input should surface as an error rather than be silently accepted:

QuantileState value;
if (!value.deserialize(Slice(arg.bytes_value(i)))) {
return Status::InternalError("Failed to deserialize QuantileState from pb");
}
col.insert_value(std::move(value));
The test's equality check is partial. Comparing only get_value_by_percentile(0.5/1.0) samples a few quantile points and can miss corruption that preserves those points. A round-trip test can assert exact equality by serializing both elements and comparing the byte strings (optionally also get_serialized_size()). Keep the percentile checks as a supplement if desired.

This is a wire-format change. The protobuf payload for QuantileState changes from fixed-size raw memory to variable-length serialized bytes. In a rolling upgrade, old and new BEs are incompatible on the RPC UDF / RPC aggregate / fold-constant paths. Real-world risk is low because the old format was already broken (it transmitted pointer values, not data) and never produced correct cross-node results. This PR currently has no backport labels — if it is backported, please call out the format change so the merge can ensure affected nodes are upgraded together.

@yx-keith

Copy link
Copy Markdown
Contributor

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes for one correctness issue in the new QuantileState protobuf reader.

Critical checkpoint conclusions:

  • Goal: the PR aims to fix QuantileState protobuf serialization. The writer now uses the logical QuantileState serialization and sets the type id, but the reader still does not fail when that logical deserialization fails.
  • Scope: the change is small and focused on the QuantileState serde plus its unit test.
  • Concurrency/lifecycle/config: no new concurrency, special lifecycle, static initialization, or configuration behavior is introduced.
  • Compatibility/protocol: this path crosses external RPC UDF/RPC aggregate and BE-to-FE constant-folding protobuf boundaries. The payload format now matches existing internal QuantileState binary serialization, but stale or malformed protobuf bytes must be rejected instead of converted to empty states.
  • Parallel paths: storage/block QuantileState serialization already uses QuantileState::serialize; this PR brings protobuf toward that path. Other QuantileState input paths such as from_olap_string/base64 check deserialize failures.
  • Tests: the expanded unit test covers normal EMPTY/SINGLE/EXPLICIT/TDIGEST round-trips and type id assignment. It does not cover malformed/stale protobuf payloads, which is the gap behind the inline finding.
  • Observability/error handling: QuantileState::deserialize logs a warning on invalid slices, but read_column_from_pb currently returns OK and inserts the default EMPTY value, so callers cannot detect the failed decode.
  • Transactions/persistence/data writes: not applicable to this PR.
  • Performance: no blocking performance issue found in the modified protobuf loop.

User focus: no additional user-provided review focus was present.

I ran git diff --check for the PR diff; no whitespace errors were reported. I did not run the BE unit test suite in this review pass.

for (int i = 0; i < arg.bytes_value_size(); ++i) {
column.insert_data(arg.bytes_value(i).c_str(), arg.bytes_value(i).size());
QuantileState value;
value.deserialize(Slice(arg.bytes_value(i)));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PValues is not only read back from this same writer: RPCFnImpl::_convert_to_block() reads PFunctionCallResponse.result(0) from the RPC function server, and constant folding also moves PValues across process boundaries. If that payload is malformed, truncated, or produced by an implementation that still sends the old raw QuantileState object bytes, QuantileState::deserialize() returns false and leaves value as the default EMPTY state, but this code still inserts it and returns Status::OK(). That makes the query silently lose the quantile value instead of failing. Please propagate a non-OK Status here, and add a negative test with an invalid bytes_value.

Suggested change
value.deserialize(Slice(arg.bytes_value(i)));
if (!value.deserialize(Slice(arg.bytes_value(i)))) {
return Status::InternalError(
"deserialize QuantileState from protobuf fail at index {}", i);
}

yx-keith
yx-keith previously approved these changes Jun 11, 2026
@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Jun 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by at least one committer and no changes requested.

@heguanhui heguanhui force-pushed the fix/quantile-state-serde-pb-serialization branch from 9f6743d to 47e0034 Compare June 13, 2026 06:51
@heguanhui heguanhui requested a review from yx-keith June 13, 2026 06:51
@heguanhui

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot removed the approved Indicates a PR has been approved by one committer. label Jun 13, 2026
@heguanhui

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28983 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 47e00348a7bf0768cec07fc273f225d0b4695c83, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17706	4029	4009	4009
q2	q3	10783	1373	818	818
q4	4679	472	338	338
q5	7520	866	569	569
q6	179	168	132	132
q7	767	820	617	617
q8	9616	1588	1589	1588
q9	7339	4555	4555	4555
q10	6783	1798	1507	1507
q11	453	270	249	249
q12	664	428	288	288
q13	18185	3307	2769	2769
q14	275	259	250	250
q15	q16	825	770	710	710
q17	1209	1052	884	884
q18	6938	5956	5582	5582
q19	1570	1255	1067	1067
q20	512	405	257	257
q21	6178	2720	2489	2489
q22	452	382	305	305
Total cold run time: 102633 ms
Total hot run time: 28983 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4877	4739	4703	4703
q2	q3	5070	5183	4627	4627
q4	2107	2185	1402	1402
q5	4882	4859	4590	4590
q6	232	176	130	130
q7	1841	1724	1661	1661
q8	2327	2137	1940	1940
q9	7412	7419	7451	7419
q10	4785	4649	4194	4194
q11	528	380	350	350
q12	722	743	526	526
q13	3015	3295	2842	2842
q14	282	274	247	247
q15	q16	674	699	605	605
q17	1256	1249	1242	1242
q18	7398	6868	6715	6715
q19	1104	1070	1103	1070
q20	2206	2207	1922	1922
q21	5260	4572	4407	4407
q22	508	456	403	403
Total cold run time: 56486 ms
Total hot run time: 50995 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 168300 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 47e00348a7bf0768cec07fc273f225d0b4695c83, data reload: false

query5	4306	606	477	477
query6	432	186	172	172
query7	4852	553	294	294
query8	353	207	191	191
query9	8753	4006	3980	3980
query10	443	301	256	256
query11	5888	2348	2158	2158
query12	157	101	94	94
query13	1320	575	427	427
query14	6413	5413	5040	5040
query14_1	4395	4318	4343	4318
query15	203	194	169	169
query16	1022	437	434	434
query17	1090	680	548	548
query18	2691	465	328	328
query19	190	187	136	136
query20	111	105	104	104
query21	219	138	114	114
query22	13536	13620	13352	13352
query23	17183	16460	16228	16228
query23_1	16239	16296	16196	16196
query24	7615	1759	1307	1307
query24_1	1327	1285	1311	1285
query25	572	432	387	387
query26	1282	333	166	166
query27	2661	569	332	332
query28	4459	2035	2083	2035
query29	1084	605	474	474
query30	304	237	197	197
query31	1116	1089	960	960
query32	107	57	56	56
query33	511	313	247	247
query34	1159	1136	629	629
query35	744	781	662	662
query36	1398	1376	1264	1264
query37	150	105	91	91
query38	3201	3159	3120	3120
query39	918	910	886	886
query39_1	877	893	862	862
query40	226	119	97	97
query41	62	60	59	59
query42	92	92	93	92
query43	317	317	275	275
query44	
query45	187	182	177	177
query46	1063	1228	729	729
query47	2370	2364	2309	2309
query48	413	420	284	284
query49	630	461	339	339
query50	1073	365	257	257
query51	4331	4362	4293	4293
query52	85	91	80	80
query53	250	289	185	185
query54	270	210	188	188
query55	76	82	68	68
query56	240	228	211	211
query57	1413	1389	1341	1341
query58	239	206	209	206
query59	1545	1606	1413	1413
query60	281	257	241	241
query61	182	170	177	170
query62	701	644	584	584
query63	231	193	183	183
query64	2545	821	662	662
query65	
query66	1797	463	339	339
query67	29670	29646	29510	29510
query68	
query69	402	297	267	267
query70	993	950	919	919
query71	292	229	194	194
query72	2900	2612	2318	2318
query73	876	752	438	438
query74	5104	4921	4786	4786
query75	2651	2561	2225	2225
query76	2342	1152	778	778
query77	350	382	274	274
query78	12387	12356	11911	11911
query79	1383	1047	767	767
query80	571	446	370	370
query81	447	277	247	247
query82	565	159	118	118
query83	345	269	244	244
query84	
query85	846	497	408	408
query86	360	283	288	283
query87	3428	3330	3169	3169
query88	3621	2757	2739	2739
query89	419	374	324	324
query90	1850	179	182	179
query91	170	156	128	128
query92	61	56	56	56
query93	1552	1344	889	889
query94	534	329	312	312
query95	654	483	336	336
query96	1056	809	329	329
query97	2763	2697	2567	2567
query98	207	203	200	200
query99	1155	1192	1042	1042
Total cold run time: 249813 ms
Total hot run time: 168300 ms

@heguanhui

Copy link
Copy Markdown
Contributor Author

run buildall

1 similar comment
@heguanhui

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28608 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 47e00348a7bf0768cec07fc273f225d0b4695c83, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17618	4100	3975	3975
q2	q3	10749	1353	787	787
q4	4677	466	337	337
q5	7512	849	567	567
q6	180	168	132	132
q7	762	840	613	613
q8	9675	1547	1614	1547
q9	6446	4534	4442	4442
q10	6795	1774	1524	1524
q11	435	262	240	240
q12	644	416	292	292
q13	18146	3425	2742	2742
q14	271	260	243	243
q15	q16	824	782	704	704
q17	1284	1126	738	738
q18	6930	5750	5578	5578
q19	1469	1266	1050	1050
q20	533	385	269	269
q21	6066	2791	2514	2514
q22	443	362	314	314
Total cold run time: 101459 ms
Total hot run time: 28608 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4852	4785	4660	4660
q2	q3	5062	5179	4654	4654
q4	2122	2179	1393	1393
q5	4782	4886	4742	4742
q6	241	183	127	127
q7	1785	1711	1567	1567
q8	2382	1985	1911	1911
q9	7360	7399	7371	7371
q10	4733	4692	4195	4195
q11	528	382	355	355
q12	724	733	528	528
q13	3017	3288	2802	2802
q14	289	278	255	255
q15	q16	680	692	609	609
q17	1264	1241	1248	1241
q18	7275	6838	6949	6838
q19	1065	1109	1150	1109
q20	2208	2226	1946	1946
q21	5231	4533	4459	4459
q22	509	463	403	403
Total cold run time: 56109 ms
Total hot run time: 51165 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 168506 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 47e00348a7bf0768cec07fc273f225d0b4695c83, data reload: false

query5	4313	613	486	486
query6	447	203	169	169
query7	4987	569	301	301
query8	377	218	218	218
query9	8771	4052	4070	4052
query10	444	307	252	252
query11	5903	2344	2154	2154
query12	160	102	99	99
query13	1269	593	379	379
query14	6385	5379	5058	5058
query14_1	4452	4412	4419	4412
query15	204	195	174	174
query16	1018	444	419	419
query17	1134	720	575	575
query18	2576	494	354	354
query19	203	187	149	149
query20	111	111	104	104
query21	215	140	114	114
query22	13582	13474	13437	13437
query23	17412	16468	16200	16200
query23_1	16367	16242	16278	16242
query24	7513	1773	1288	1288
query24_1	1319	1316	1316	1316
query25	577	469	399	399
query26	1287	308	173	173
query27	2663	559	333	333
query28	4472	2048	2038	2038
query29	1089	645	494	494
query30	382	243	197	197
query31	1129	1072	954	954
query32	109	64	61	61
query33	539	333	298	298
query34	1249	1154	677	677
query35	758	839	684	684
query36	1386	1390	1242	1242
query37	154	108	89	89
query38	3215	3142	3055	3055
query39	934	910	896	896
query39_1	882	882	888	882
query40	217	122	95	95
query41	64	62	58	58
query42	96	95	92	92
query43	314	319	275	275
query44	
query45	188	184	178	178
query46	1138	1212	687	687
query47	2367	2368	2316	2316
query48	405	413	300	300
query49	632	464	345	345
query50	1010	356	254	254
query51	4426	4444	4234	4234
query52	85	87	77	77
query53	241	265	182	182
query54	252	210	193	193
query55	78	76	68	68
query56	227	219	212	212
query57	1455	1421	1314	1314
query58	233	208	220	208
query59	1533	1677	1394	1394
query60	278	246	225	225
query61	149	148	143	143
query62	694	652	553	553
query63	232	179	188	179
query64	2533	768	617	617
query65	
query66	1779	474	404	404
query67	29762	29679	29542	29542
query68	
query69	420	285	266	266
query70	985	966	929	929
query71	308	235	208	208
query72	3017	2636	2322	2322
query73	808	772	440	440
query74	5119	4926	4803	4803
query75	2757	2567	2225	2225
query76	2356	1150	757	757
query77	343	374	287	287
query78	12411	12443	11795	11795
query79	1399	1051	772	772
query80	1279	464	402	402
query81	521	278	239	239
query82	603	153	124	124
query83	323	271	251	251
query84	
query85	891	517	431	431
query86	429	295	261	261
query87	3395	3341	3188	3188
query88	3640	2715	2731	2715
query89	428	378	337	337
query90	1947	183	183	183
query91	172	155	135	135
query92	67	58	53	53
query93	1599	1409	895	895
query94	719	356	303	303
query95	684	379	434	379
query96	1031	788	348	348
query97	2697	2706	2613	2613
query98	212	207	205	205
query99	1157	1186	1030	1030
Total cold run time: 252539 ms
Total hot run time: 168506 ms

@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Jun 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by at least one committer and no changes requested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by one committer.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

QuantileState protobuf serialization corrupts data in write/read_column_to_pb

3 participants