Skip to content

[fix](fe) Preserve path partition columns with CSV schema - #67407

Closed
0AyanamiRei wants to merge 2 commits into
apache:masterfrom
0AyanamiRei:fix/doris-25094-csv-schema-path-partitions
Closed

0AyanamiRei wants to merge 2 commits into
apache:masterfrom
0AyanamiRei:fix/doris-25094-csv-schema-path-partitions

Conversation

@0AyanamiRei

@0AyanamiRei 0AyanamiRei commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: File table-valued functions returned only explicitly declared CSV columns when csv_schema was set, so columns derived from path_partition_keys disappeared from the table schema. Append non-conflicting path partition columns to the explicit CSV schema in their declared order and reject case-insensitive conflicts before they can create a duplicate schema.

Release note

CSV file table-valued functions now expose path partition columns when csv_schema is specified and reject conflicting column names.

Check List (For Author)

  • Test: FE unit test and regression test
    • FE unit test: ExternalFileTableValuedFunctionTest (5 tests)
    • Regression test: test_csv_schema_with_path_partition_keys, including conflict rejection
  • Behavior changed: Yes. Path partition columns remain available with an explicit CSV schema.
  • Does this need documentation: No

@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?

@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17587	3035	3032	3032
q2	2101	259	217	217
q3	10226	847	526	526
q4	4674	246	199	199
q5	7680	563	385	385
q6	135	113	93	93
q7	527	505	389	389
q8	9242	951	913	913
q9	3496	2352	2356	2352
q10	6510	1022	709	709
q11	400	201	182	182
q12	610	257	202	202
q13	18119	1559	1162	1162
q14	165	151	144	144
q15	q16	434	393	367	367
q17	1394	885	770	770
q18	3115	2226	2227	2226
q19	1265	866	742	742
q20	369	288	208	208
q21	5585	1774	1810	1774
q22	337	264	236	236
Total cold run time: 93971 ms
Total hot run time: 16828 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	3395	3343	3341	3341
q2	515	391	368	368
q3	2221	2788	2198	2198
q4	1179	1158	884	884
q5	2150	2110	2097	2097
q6	169	126	85	85
q7	1047	932	853	853
q8	1597	1407	1420	1407
q9	3147	3136	3089	3089
q10	1886	1786	1618	1618
q11	353	266	250	250
q12	451	428	337	337
q13	1476	1536	1135	1135
q14	176	168	168	168
q15	q16	396	397	363	363
q17	3537	3285	3193	3193
q18	4762	4385	4715	4385
q19	874	899	886	886
q20	986	950	834	834
q21	3720	3004	3262	3004
q22	393	353	318	318
Total cold run time: 34430 ms
Total hot run time: 30813 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 81714 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 465e988df0ad58b2d652b3a56c94542759bce9b1, data reload: false

query5	4250	411	334	334
query6	377	144	126	126
query7	4948	405	241	241
query8	292	135	114	114
query9	8677	2910	2892	2892
query10	383	219	177	177
query11	5365	1058	913	913
query12	120	70	67	67
query13	1190	431	332	332
query14	6029	2189	2097	2097
query14_1	1976	1946	1955	1946
query15	179	124	111	111
query16	922	363	357	357
query17	810	442	369	369
query18	2347	315	247	247
query19	164	138	107	107
query20	76	70	69	69
query21	202	101	86	86
query22	5389	5224	5251	5224
query23	6646	6263	6068	6068
query23_1	6001	6089	5798	5798
query24	7337	1144	801	801
query24_1	771	782	787	782
query25	404	293	238	238
query26	1232	233	127	127
query27	2800	397	251	251
query28	4706	1492	1506	1492
query29	930	416	345	345
query30	248	157	129	129
query31	823	399	322	322
query32	128	76	68	68
query33	455	206	166	166
query34	972	801	479	479
query35	403	397	334	334
query36	554	614	523	523
query37	124	80	66	66
query38	996	830	832	830
query39	494	480	487	480
query39_1	471	450	444	444
query40	204	93	72	72
query41	53	54	51	51
query42	74	75	74	74
query43	251	241	213	213
query44	1026	530	545	530
query45	110	101	99	99
query46	766	855	533	533
query47	770	761	702	702
query48	314	306	231	231
query49	554	240	194	194
query50	780	264	199	199
query51	8024	8036	8069	8036
query52	72	68	62	62
query53	196	196	153	153
query54	218	189	158	158
query55	75	57	58	57
query56	189	157	151	151
query57	691	713	614	614
query58	193	151	160	151
query59	1204	1239	1084	1084
query60	231	182	173	173
query61	122	112	134	112
query62	389	205	178	178
query63	165	141	142	141
query64	2856	680	602	602
query65	1576	1608	1588	1588
query66	1930	269	226	226
query67	9994	9658	9769	9658
query68	2752	1147	758	758
query69	341	222	190	190
query70	665	607	606	606
query71	239	175	162	162
query72	2307	1858	1559	1559
query73	669	602	344	344
query74	1586	1232	1128	1128
query75	1149	1080	949	949
query76	2283	734	556	556
query77	260	260	209	209
query78	3873	3649	3289	3289
query79	1199	814	583	583
query80	1046	331	270	270
query81	469	152	136	136
query82	593	128	98	98
query83	286	215	197	197
query84	289	113	87	87
query85	829	366	292	292
query86	353	178	173	173
query87	1012	951	882	882
query88	2744	2102	2108	2102
query89	279	195	177	177
query90	1835	127	126	126
query91	128	161	102	102
query92	78	65	74	65
query93	1152	1153	745	745
query94	553	256	222	222
query95	529	246	300	246
query96	787	572	270	270
query97	1110	1071	1003	1003
query98	147	132	140	132
query99	428	346	309	309
Total cold run time: 174644 ms
Total hot run time: 81714 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 14.61 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 465e988df0ad58b2d652b3a56c94542759bce9b1, data reload: false

query1	0.01	0.00	0.00
query2	0.07	0.03	0.03
query3	0.25	0.11	0.11
query4	1.61	0.10	0.09
query5	0.17	0.17	0.16
query6	1.22	0.69	0.70
query7	0.04	0.01	0.00
query8	0.05	0.03	0.03
query9	0.29	0.21	0.22
query10	0.35	0.35	0.34
query11	0.17	0.12	0.12
query12	0.15	0.12	0.12
query13	0.32	0.31	0.30
query14	0.45	0.45	0.44
query15	0.37	0.35	0.34
query16	0.21	0.23	0.22
query17	0.68	0.69	0.69
query18	0.18	0.16	0.17
query19	1.18	1.15	1.13
query20	0.02	0.01	0.01
query21	15.45	0.15	0.12
query22	5.07	0.05	0.04
query23	16.17	0.25	0.10
query24	3.01	0.33	0.25
query25	0.12	0.03	0.03
query26	0.73	0.17	0.13
query27	0.05	0.03	0.03
query28	3.62	0.57	0.29
query29	12.47	3.18	2.58
query30	0.25	0.12	0.13
query31	2.76	0.37	0.17
query32	3.51	0.32	0.23
query33	1.72	1.35	1.48
query34	15.36	2.17	1.76
query35	1.76	1.75	1.70
query36	0.46	0.30	0.29
query37	0.07	0.04	0.04
query38	0.05	0.03	0.03
query39	0.03	0.03	0.03
query40	0.11	0.07	0.08
query41	0.07	0.02	0.03
query42	0.03	0.02	0.02
query43	0.04	0.03	0.02
Total cold run time: 90.7 s
Total hot run time: 14.61 s

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: File table-valued functions returned only explicitly declared CSV columns when csv_schema was set, so columns derived from path_partition_keys disappeared from the table schema. Append non-conflicting path partition columns to the explicit CSV schema in their declared order and reject case-insensitive conflicts before they can create a duplicate schema.

### Release note

CSV file table-valued functions now expose path partition columns when csv_schema is specified and reject conflicting column names.

### Check List (For Author)

- Test: FE unit test and regression test
    - FE unit test: ExternalFileTableValuedFunctionTest (5 tests)
    - Regression test: test_csv_schema_with_path_partition_keys, including conflict rejection
- Behavior changed: Yes. Path partition columns remain available with an explicit CSV schema.
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17563	3089	3096	3089
q2	2077	251	220	220
q3	10252	850	507	507
q4	4670	252	195	195
q5	7685	619	390	390
q6	135	115	92	92
q7	519	499	389	389
q8	9259	897	928	897
q9	3427	2369	2380	2369
q10	6530	856	721	721
q11	402	205	187	187
q12	617	252	200	200
q13	18139	1517	1154	1154
q14	153	155	139	139
q15	q16	431	393	366	366
q17	1264	917	808	808
q18	3073	2265	2230	2230
q19	1273	886	780	780
q20	371	277	203	203
q21	5633	1781	1801	1781
q22	329	267	225	225
Total cold run time: 93802 ms
Total hot run time: 16942 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	3449	3348	3387	3348
q2	531	401	375	375
q3	2250	2286	2136	2136
q4	1192	1153	888	888
q5	2184	2091	2108	2091
q6	169	124	84	84
q7	1003	977	849	849
q8	1617	1419	1429	1419
q9	3130	3117	3088	3088
q10	1838	1791	1598	1598
q11	356	270	253	253
q12	458	425	345	345
q13	1504	1516	1153	1153
q14	170	170	157	157
q15	q16	401	390	363	363
q17	3637	3277	3259	3259
q18	4803	4407	4734	4407
q19	848	840	889	840
q20	1009	960	834	834
q21	3864	3126	3309	3126
q22	386	344	334	334
Total cold run time: 34799 ms
Total hot run time: 30947 ms

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 100.00% (12/12) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 81782 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 b895d8a813e29dc78ef97615d66e669fbae50c77, data reload: false

query5	4249	403	327	327
query6	396	138	125	125
query7	4948	394	235	235
query8	308	124	124	124
query9	8670	2860	2896	2860
query10	400	221	172	172
query11	5355	1027	904	904
query12	117	72	73	72
query13	1193	451	317	317
query14	6108	2216	2070	2070
query14_1	1979	1970	1955	1955
query15	173	118	110	110
query16	942	385	357	357
query17	811	469	364	364
query18	2342	336	247	247
query19	176	139	117	117
query20	76	74	79	74
query21	206	129	84	84
query22	5539	5280	5271	5271
query23	6777	6071	6075	6071
query23_1	5856	5954	6009	5954
query24	7255	1091	783	783
query24_1	764	785	771	771
query25	410	280	240	240
query26	1228	234	127	127
query27	2789	423	252	252
query28	4652	1499	1473	1473
query29	924	417	338	338
query30	248	148	128	128
query31	828	396	327	327
query32	153	74	69	69
query33	450	217	162	162
query34	997	823	476	476
query35	403	401	342	342
query36	552	550	542	542
query37	119	80	67	67
query38	1010	838	811	811
query39	492	483	442	442
query39_1	454	458	445	445
query40	201	89	75	75
query41	53	52	54	52
query42	78	70	70	70
query43	243	236	211	211
query44	1049	546	560	546
query45	107	106	100	100
query46	764	838	525	525
query47	743	775	694	694
query48	315	314	226	226
query49	532	255	180	180
query50	758	262	199	199
query51	8245	8334	8091	8091
query52	71	72	59	59
query53	190	201	147	147
query54	261	197	189	189
query55	79	67	58	58
query56	213	177	170	170
query57	679	649	706	649
query58	203	168	163	163
query59	1247	1230	1114	1114
query60	244	208	222	208
query61	140	129	145	129
query62	391	205	175	175
query63	172	142	140	140
query64	2675	674	583	583
query65	1646	1566	1616	1566
query66	1853	253	212	212
query67	9835	9691	9557	9557
query68	3003	1140	759	759
query69	357	229	196	196
query70	677	610	618	610
query71	249	176	167	167
query72	2329	1763	1606	1606
query73	656	590	362	362
query74	2013	1204	1135	1135
query75	1164	1084	943	943
query76	2382	720	534	534
query77	255	250	209	209
query78	3851	3692	3134	3134
query79	2692	848	617	617
query80	1600	352	275	275
query81	494	155	132	132
query82	1115	125	92	92
query83	272	210	200	200
query84	294	111	97	97
query85	806	381	292	292
query86	422	180	180	180
query87	1027	953	895	895
query88	2785	2110	2095	2095
query89	292	195	175	175
query90	1978	119	169	119
query91	129	123	100	100
query92	71	72	72	72
query93	1460	1174	761	761
query94	679	249	230	230
query95	526	317	233	233
query96	843	599	280	280
query97	1050	1048	1014	1014
query98	173	142	132	132
query99	449	347	316	316
Total cold run time: 178890 ms
Total hot run time: 81782 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 14.52 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit b895d8a813e29dc78ef97615d66e669fbae50c77, data reload: false

query1	0.01	0.00	0.00
query2	0.08	0.03	0.04
query3	0.24	0.11	0.10
query4	1.63	0.10	0.09
query5	0.18	0.16	0.16
query6	1.27	0.68	0.67
query7	0.03	0.01	0.00
query8	0.05	0.03	0.03
query9	0.28	0.22	0.21
query10	0.35	0.33	0.35
query11	0.16	0.12	0.11
query12	0.15	0.13	0.12
query13	0.30	0.30	0.33
query14	0.46	0.45	0.44
query15	0.36	0.36	0.35
query16	0.23	0.23	0.21
query17	0.71	0.64	0.73
query18	0.17	0.18	0.18
query19	1.17	1.15	1.25
query20	0.01	0.01	0.01
query21	15.44	0.17	0.11
query22	5.04	0.04	0.04
query23	16.17	0.26	0.10
query24	3.01	0.28	0.24
query25	0.12	0.04	0.03
query26	0.83	0.16	0.12
query27	0.04	0.02	0.02
query28	3.62	0.57	0.28
query29	12.45	3.16	2.58
query30	0.25	0.11	0.12
query31	2.76	0.36	0.17
query32	3.54	0.33	0.24
query33	1.36	1.41	1.40
query34	15.35	2.21	1.77
query35	1.71	1.69	1.73
query36	0.51	0.29	0.28
query37	0.07	0.05	0.04
query38	0.04	0.02	0.02
query39	0.04	0.03	0.02
query40	0.12	0.08	0.07
query41	0.08	0.03	0.02
query42	0.04	0.02	0.02
query43	0.04	0.03	0.02
Total cold run time: 90.47 s
Total hot run time: 14.52 s

liaoxin01
liaoxin01 previously approved these changes Oct 9, 2026

@liaoxin01 liaoxin01 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.

LGTM

### What problem does this PR solve?

Related PR: apache#67407

Problem Summary: Merge current master into the explicit CSV schema path
partition fix. Resolve the overlapping test imports, retain master's UUID
and nested field spelling tests, and adapt the path partition assertions
to JUnit Jupiter. The production patch and existing regression suite/output
are unchanged, preserving appended column order and case-insensitive
conflict rejection.

### Release note

None (conflict resolution preserves the original PR behavior).

### Check List (For Author)

- Test: Unit Test
    - ./run-fe-ut.sh --run org.apache.doris.tablefunction.ExternalFileTableValuedFunctionTest
    - Passed: 7 tests, 0 failures/errors/skips
    - Targeted Maven Checkstyle: 0 violations
    - Source whitespace and conflict-marker checks passed
    - Verified production/regression patches and both parents' test bodies
      are retained, apart from JUnit assertion API migration
    - S3 regression suite not rerun for this merge; its generated output,
      including the existing final blank line, is unchanged
- Behavior changed: No additional behavior beyond the original PR
- Does this need documentation: No
@0AyanamiRei

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17580	5685	5558	5558
q2	2085	306	255	255
q3	10272	1386	870	870
q4	4678	479	349	349
q5	7430	812	539	539
q6	188	191	157	157
q7	800	826	624	624
q8	9257	1338	1084	1084
q9	5886	4425	4456	4425
q10	6832	1288	1024	1024
q11	435	257	241	241
q12	636	408	295	295
q13	18038	3070	2394	2394
q14	266	273	251	251
q15	q16	718	723	683	683
q17	1190	744	568	568
q18	7034	6233	6189	6189
q19	1107	965	607	607
q20	390	340	244	244
q21	5866	2614	2688	2614
q22	422	381	310	310
Total cold run time: 101110 ms
Total hot run time: 29281 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	6679	6626	6812	6626
q2	735	614	540	540
q3	5593	5789	5190	5190
q4	2048	2201	1608	1608
q5	5819	5726	5810	5726
q6	242	190	155	155
q7	2206	2044	1824	1824
q8	3138	2779	2750	2750
q9	8190	8214	7936	7936
q10	3667	3598	3293	3293
q11	588	397	373	373
q12	675	703	505	505
q13	2758	3059	2402	2402
q14	287	283	253	253
q15	q16	668	683	623	623
q17	7788	6961	6912	6912
q18	13182	12321	13003	12321
q19	904	798	777	777
q20	2174	2222	1940	1940
q21	5782	4655	4806	4655
q22	512	458	407	407
Total cold run time: 73635 ms
Total hot run time: 66816 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 151469 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 953e7a7a5fb1f526d485a423d24ed96ee1f3658d, data reload: false

query5	4300	590	446	446
query6	427	224	187	187
query7	4809	434	217	217
query8	320	182	166	166
query9	8750	3967	3960	3960
query10	457	310	254	254
query11	5928	3415	3187	3187
query12	148	91	89	89
query13	1250	432	319	319
query14	6532	4793	4542	4542
query14_1	4266	4239	4270	4239
query15	210	200	184	184
query16	933	437	415	415
query17	873	658	554	554
query18	2421	418	319	319
query19	231	156	128	128
query20	79	79	78	78
query21	203	132	113	113
query22	12973	13047	12785	12785
query23	13101	12674	12114	12114
query23_1	12418	12101	12337	12101
query24	7063	824	462	462
query24_1	459	459	456	456
query25	510	384	338	338
query26	1287	251	136	136
query27	2768	431	266	266
query28	4611	1912	1925	1912
query29	1553	566	428	428
query30	300	217	186	186
query31	878	763	635	635
query32	147	94	84	84
query33	496	285	232	232
query34	872	845	501	501
query35	748	765	645	645
query36	795	811	743	743
query37	125	95	87	87
query38	1780	1760	1698	1698
query39	708	731	659	659
query39_1	687	675	672	672
query40	218	124	97	97
query41	65	64	63	63
query42	86	83	88	83
query43	363	395	337	337
query44	1275	686	677	677
query45	176	180	162	162
query46	839	951	567	567
query47	3018	2989	2897	2897
query48	290	293	206	206
query49	565	382	288	288
query50	675	266	205	205
query51	10573	10305	10245	10245
query52	76	81	71	71
query53	183	202	155	155
query54	243	194	186	186
query55	71	64	65	64
query56	245	201	219	201
query57	1611	1571	1561	1561
query58	271	255	252	252
query59	2342	2377	2111	2111
query60	289	239	216	216
query61	136	148	142	142
query62	384	342	283	283
query63	198	161	160	160
query64	2725	913	751	751
query65	3450	3376	3384	3376
query66	1764	423	294	294
query67	20276	20144	20071	20071
query68	3117	993	598	598
query69	382	296	240	240
query70	918	838	817	817
query71	301	245	213	213
query72	2886	2507	2242	2242
query73	511	524	295	295
query74	4573	4490	4319	4319
query75	2349	2294	1925	1925
query76	2337	1022	610	610
query77	357	401	298	298
query78	8977	8937	8480	8480
query79	863	850	547	547
query80	494	439	358	358
query81	514	328	279	279
query82	205	137	114	114
query83	190	189	176	176
query84	282	124	101	101
query85	757	415	386	386
query86	284	238	232	232
query87	2023	1956	1839	1839
query88	3566	2680	2678	2678
query89	322	292	257	257
query90	2087	173	172	172
query91	156	151	127	127
query92	94	86	89	86
query93	968	989	555	555
query94	441	302	280	280
query95	578	331	391	331
query96	664	527	232	232
query97	2445	2410	2323	2323
query98	159	148	141	141
query99	764	764	652	652
Total cold run time: 233162 ms
Total hot run time: 151469 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.68 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 953e7a7a5fb1f526d485a423d24ed96ee1f3658d, data reload: false

query1	0.00	0.00	0.00
query2	0.11	0.05	0.05
query3	0.26	0.12	0.12
query4	1.61	0.13	0.13
query5	0.24	0.23	0.26
query6	1.16	0.69	0.68
query7	0.04	0.01	0.01
query8	0.05	0.04	0.04
query9	0.42	0.37	0.36
query10	0.58	0.58	0.55
query11	0.22	0.14	0.15
query12	0.19	0.15	0.15
query13	0.49	0.49	0.50
query14	0.98	0.97	0.97
query15	0.64	0.61	0.61
query16	0.33	0.31	0.32
query17	1.16	1.17	1.16
query18	0.24	0.22	0.20
query19	2.14	1.97	1.99
query20	0.02	0.01	0.01
query21	15.47	0.27	0.14
query22	4.44	0.06	0.05
query23	16.26	0.30	0.12
query24	3.10	0.57	0.53
query25	0.11	0.07	0.05
query26	1.61	0.26	0.15
query27	0.05	0.04	0.03
query28	2.56	0.62	0.40
query29	12.48	4.16	3.32
query30	0.28	0.15	0.13
query31	2.78	0.59	0.34
query32	3.22	0.61	0.51
query33	3.22	3.21	3.29
query34	15.34	4.00	3.42
query35	3.39	3.36	3.34
query36	0.54	0.43	0.41
query37	0.10	0.07	0.06
query38	0.05	0.04	0.03
query39	0.04	0.03	0.03
query40	0.17	0.14	0.15
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.03	0.03
Total cold run time: 96.25 s
Total hot run time: 24.68 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 100.00% (12/12) 🎉
Increment coverage report
Complete coverage report

@sollhui

sollhui commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Review of head 953e7a7a5fb1f526d485a423d24ed96ee1f3658d:

[P2] Use the same case-insensitive comparison as Table when rejecting column conflicts

In ExternalFileTableValuedFunction.java, lines 293–298, String.toLowerCase() depends on the JVM default locale. With tr_TR and these properties:

csv_schema = "id:int"
path_partition_keys = "ID"

"ID".toLowerCase() becomes "ıd" (dotless i), so the new check accepts both id and ID. However, Table.nameToColumn uses String.CASE_INSENSITIVE_ORDER, which considers those names equal and overwrites the CSV column entry with the path column. The full schema consequently has two columns while the name index has only one.

Please use a TreeSet<>(String.CASE_INSENSITIVE_ORDER) for conflict detection, matching Table's lookup semantics, and add a test with the default locale set to tr_TR (restoring the original locale in finally).

Confirmed with an isolated Java reproduction of the conflict check and Table's name-index comparison. Full FE and S3 regression tests were not rerun during this review. No other definite regressions were found in the reviewed scan path.

@sollhui sollhui closed this Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants