Skip to content

[fix](fe) Avoid database object loading for schemata scans - #70010

Merged
Gabriel39 merged 1 commit into
apache:masterfrom
Gabriel39:fix/external-namespace-enumeration
Nov 3, 2026
Merged

Gabriel39 merged 1 commit into
apache:masterfrom
Gabriel39:fix/external-namespace-enumeration

Conversation

@Gabriel39

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: N/A

Problem Summary:

Queries such as:

SELECT COUNT(*) FROM example_catalog.information_schema.schemata;

only need database and catalog names. However, SchemaSchemataScanner uses the default getDbNames RPC, whose FE handler calls catalog.getAllDbs() to also return database IDs. For external catalogs, this resolves every database object even though SCHEMATA never reads those IDs. A large namespace list can therefore churn a much smaller database-object cache and allocate substantial temporary metadata while waiting inside a synchronous BE-to-FE RPC. A warm database-name cache does not remove this work.

This PR adds the optional include_db_ids request field, defaulting to true, and lets SCHEMATA set it to false. The FE then calls catalog.getDbNames() and omits the unused database IDs. Both paths share the existing privilege checks, pattern matching, and schema-name formatting. Callers that need IDs keep the object-enumeration path without additional intermediate lists.

The new field uses ID 8; field 7 remains reserved. Definitions were checked on master and branch-3.1/4.0/4.1/4.2. Older FE nodes ignore the optional field and keep serving the existing response; older BE callers retain the default ID-inclusive behavior on a new FE.

Validation

  • Added a 100,000-namespace test that rejects any database-object enumeration and verifies the result-array lengths and omitted IDs.
  • Covered privilege/pattern filtering, qualified schema names, empty/unavailable catalogs, existing ID-returning callers, and binary deserialization of requests without the new field.
  • Confirmed the new behavior tests fail on the original handler before implementing the change. All 7 targeted FE tests pass, including the existing FrontendServiceImplTest#testGetDBNames.
bash run-fe-ut.sh --run 'org.apache.doris.service.FrontendServiceGetDbNamesTest,org.apache.doris.service.FrontendServiceImplTest#testGetDBNames'
  • FE Checkstyle: passed with zero violations.
  • Changed BE scanner: clang-format 16 and C++ syntax-only compilation with regenerated Thrift headers passed.

An in-process FE-handler benchmark uses the actual ExternalCatalog / TestExternalCatalog name and object-cache implementations, a synthetic metadata provider, and stubbed catalog routing and privilege checks. It compares the original handler source at master commit bdb90856e6e468eb495e5bfd67010de90570bfbc with the patched handler, using the same dependencies and fixture. Each trial starts with a warm name cache and cold object cache, whose capacity is 1,000. There are 100,000 synthetic namespaces plus the two system databases. Settings: JDK 17, 2 GiB heap, 4 active processors; discard one warm-up pair and report medians from three measured trials.

Metric Original master Patched SCHEMATA path
FE handler elapsed time 2,984.2 ms 1,331.1 ms
Cumulative current-thread allocation 2,117.2 MiB 726.2 MiB
Database objects constructed 100,002 0
Name-provider invocations 1 1
Returned rows 100,002 100,002

In this fixture, handler time falls by 55.4% (2.24x faster) and cumulative allocation falls by 65.7%. Allocation is total bytes allocated during the call, not peak live heap. This benchmark excludes network transport, Thrift serialization, and SQL execution; it does not measure a deployed PostgreSQL/Iceberg environment. Full BE linking and a deployed end-to-end SQL test were not run locally.

Release note

Improve information_schema.schemata enumeration for large catalogs by avoiding unnecessary database-object loading.

Check List (For Author)

  • Test
    • Regression test
    • Unit Test
    • Manual test (FE-handler benchmark described above)
    • No need to test or manual test.
  • Behavior changed:
    • No. SQL result semantics and existing ID-returning requests are preserved.
    • Yes.
  • 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

### What problem does this PR solve?

Issue Number: N/A

Problem Summary: SCHEMATA only consumes database names, but its metadata RPC materializes every database object to compute unused IDs. Let this scanner opt out of IDs through an optional request flag while preserving existing ID-inclusive callers and privilege filtering.

### Release note

Improve information_schema.schemata enumeration for large catalogs.

### Check List (For Author)

- Test: 7 targeted FE tests; FE Checkstyle; clang-format 16; BE scanner syntax check; synthetic 100,000-namespace FE-handler benchmark.
- Behavior changed: No SQL result-semantic changes.
- 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?

@Gabriel39

Copy link
Copy Markdown
Contributor Author

run buildall

@Gabriel39

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Codex automated review failed and did not complete.

Error: Selected model is at capacity. Please try a different model.
Workflow run: https://github.com/apache/doris/actions/runs/41569550661

Please inspect the workflow logs and rerun the review after the underlying issue is resolved.

@Gabriel39

Copy link
Copy Markdown
Contributor Author

/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.

Automated review completed for PR 70010 at head 6ce6ae7. No verified correctness, compatibility, concurrency, memory, or error-handling findings remain, so no inline comments are submitted.

The change meets its stated goal: SCHEMATA sets include_db_ids=false, the FE uses the catalog name snapshot without materializing every DatabaseIf, and all output lists remain aligned. Existing callers keep the optional Thrift field's default true and continue receiving db_ids. Field 8 is unused on the checked maintained branches and is optional, so mixed-version FE/BE behavior remains compatible.

Critical checkpoints: the implementation is focused and the added FE tests cover names-only behavior, legacy defaults, privileges, patterns, empty/unavailable catalogs, and display names; tests and builds were inspected but not executed under the static-only review contract. The new lambda mutates only request-local result lists and captures effectively-final per-request state; no new shared concurrency or lifecycle hazard is present. No configuration, transaction, persistence, data-write, or observability changes are involved. All parallel TGetDbs consumers and the BE schema scanners were checked, and only SCHEMATA uses the false flag. There is no additional user-provided review focus.

The review converged in round 1: all assigned scopes returned NO_NEW_VALUABLE_FINDINGS, every risk focus was verified and dismissed with evidence, and there are no existing blocking inline findings to carry forward.

Review converged after 1 round(s).

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17419	5164	5044	5044
q2	2181	311	250	250
q3	10083	1498	829	829
q4	4675	468	339	339
q5	7427	786	520	520
q6	183	182	153	153
q7	751	813	603	603
q8	9269	1326	1123	1123
q9	5696	4220	4198	4198
q10	6838	1296	1040	1040
q11	440	242	226	226
q12	650	395	278	278
q13	18094	3618	3035	3035
q14	276	277	252	252
q15	q16	734	707	675	675
q17	1208	750	591	591
q18	7075	6197	6153	6153
q19	1116	977	606	606
q20	403	349	226	226
q21	5196	2162	2279	2162
q22	346	296	254	254
Total cold run time: 100060 ms
Total hot run time: 28557 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5627	5603	5597	5597
q2	692	607	524	524
q3	5245	5414	4992	4992
q4	1996	2145	1558	1558
q5	5292	5168	5766	5168
q6	271	200	162	162
q7	2276	2066	1867	1867
q8	3084	2718	2691	2691
q9	8064	8081	8002	8002
q10	4018	3699	3254	3254
q11	635	447	439	439
q12	720	716	554	554
q13	3457	3811	3298	3298
q14	323	328	311	311
q15	q16	731	720	639	639
q17	8253	7014	6940	6940
q18	13056	12214	12869	12214
q19	907	792	815	792
q20	2141	2150	1929	1929
q21	5612	4569	4739	4569
q22	508	443	434	434
Total cold run time: 72908 ms
Total hot run time: 65934 ms

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17602	5193	5072	5072
q2	2124	316	270	270
q3	10219	1521	807	807
q4	4681	467	332	332
q5	7458	802	524	524
q6	184	183	154	154
q7	747	789	591	591
q8	9246	1402	1028	1028
q9	5476	4208	4214	4208
q10	6832	1307	1028	1028
q11	433	251	231	231
q12	639	411	286	286
q13	18090	3704	3050	3050
q14	277	273	241	241
q15	q16	729	725	678	678
q17	1199	748	591	591
q18	7159	6193	6150	6150
q19	1129	976	593	593
q20	405	329	230	230
q21	5743	2498	2464	2464
q22	387	318	289	289
Total cold run time: 100759 ms
Total hot run time: 28817 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	6017	5968	6175	5968
q2	735	605	582	582
q3	6107	5857	5376	5376
q4	2112	2186	1598	1598
q5	6023	5696	5689	5689
q6	239	187	150	150
q7	2284	1968	1802	1802
q8	3049	2745	2676	2676
q9	7849	7529	7493	7493
q10	3681	3608	3159	3159
q11	597	423	392	392
q12	684	703	509	509
q13	3417	3646	3027	3027
q14	289	286	272	272
q15	q16	671	684	652	652
q17	7871	7045	6922	6922
q18	12962	12203	12909	12203
q19	940	800	816	800
q20	2150	2197	1911	1911
q21	5732	4781	4841	4781
q22	526	455	401	401
Total cold run time: 73935 ms
Total hot run time: 66363 ms

@hello-stephen

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

query5	4307	636	443	443
query6	435	210	185	185
query7	4806	458	244	244
query8	323	169	156	156
query9	8760	3213	3230	3213
query10	473	341	272	272
query11	6002	3858	3594	3594
query12	155	94	100	94
query13	1276	455	331	331
query14	6082	3960	3659	3659
query14_1	3374	3435	3459	3435
query15	210	201	191	191
query16	944	431	404	404
query17	866	669	545	545
query18	2410	420	309	309
query19	194	169	136	136
query20	86	83	83	83
query21	214	134	111	111
query22	12975	12983	12755	12755
query23	13526	13217	12470	12470
query23_1	12669	12582	12624	12582
query24	7378	854	497	497
query24_1	497	494	489	489
query25	540	420	374	374
query26	1262	264	147	147
query27	2762	446	281	281
query28	4606	2057	2049	2049
query29	1527	618	461	461
query30	300	228	183	183
query31	1024	929	813	813
query32	141	93	92	92
query33	547	301	248	248
query34	942	893	508	508
query35	733	742	631	631
query36	833	809	736	736
query37	117	102	83	83
query38	1811	1727	1688	1688
query39	797	824	747	747
query39_1	732	731	755	731
query40	220	121	90	90
query41	66	66	60	60
query42	84	80	79	79
query43	345	362	310	310
query44	1367	707	708	707
query45	181	174	165	165
query46	845	975	574	574
query47	2668	3029	2862	2862
query48	300	308	222	222
query49	567	407	287	287
query50	683	293	214	214
query51	10743	10775	10576	10576
query52	79	79	69	69
query53	191	211	154	154
query54	231	186	193	186
query55	69	66	63	63
query56	247	212	200	200
query57	1684	1590	1574	1574
query58	283	265	248	248
query59	2230	2184	1952	1952
query60	304	243	225	225
query61	147	143	144	143
query62	391	344	283	283
query63	194	164	165	164
query64	2763	917	732	732
query65	3325	3296	3276	3276
query66	1738	415	311	311
query67	19952	20040	19717	19717
query68	3153	1049	620	620
query69	384	338	248	248
query70	876	782	818	782
query71	294	234	226	226
query72	2703	2492	2258	2258
query73	542	548	298	298
query74	4663	4511	4332	4332
query75	2322	2313	1904	1904
query76	2315	1045	617	617
query77	361	378	275	275
query78	9829	9893	9181	9181
query79	989	921	531	531
query80	628	432	356	356
query81	555	322	276	276
query82	571	138	104	104
query83	255	194	186	186
query84	320	123	99	99
query85	813	428	374	374
query86	317	246	235	235
query87	2019	1992	1813	1813
query88	3881	2813	2800	2800
query89	335	282	246	246
query90	1872	179	172	172
query91	175	151	126	126
query92	100	92	90	90
query93	1047	1019	585	585
query94	443	298	278	278
query95	584	341	301	301
query96	690	498	250	250
query97	2478	2413	2313	2313
query98	157	152	149	149
query99	776	753	648	648
Total cold run time: 234655 ms
Total hot run time: 151509 ms

@hello-stephen

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

query1	0.00	0.01	0.01
query2	0.10	0.04	0.05
query3	0.26	0.09	0.09
query4	1.62	0.09	0.09
query5	0.24	0.25	0.24
query6	1.17	0.68	0.68
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.40	0.35	0.32
query10	0.58	0.57	0.60
query11	0.20	0.16	0.14
query12	0.17	0.16	0.14
query13	0.51	0.50	0.49
query14	1.05	1.04	1.00
query15	0.63	0.62	0.61
query16	0.34	0.35	0.34
query17	1.11	1.11	1.11
query18	0.20	0.19	0.19
query19	2.08	2.06	2.00
query20	0.02	0.02	0.01
query21	15.54	0.18	0.13
query22	4.94	0.06	0.06
query23	16.29	0.32	0.13
query24	3.17	0.66	0.28
query25	0.12	0.07	0.06
query26	1.24	0.20	0.16
query27	0.06	0.04	0.05
query28	3.47	0.74	0.36
query29	12.50	4.21	3.27
query30	0.29	0.13	0.10
query31	2.76	0.56	0.33
query32	3.22	0.62	0.51
query33	3.23	3.19	3.21
query34	15.30	4.03	3.39
query35	3.38	3.36	3.36
query36	0.56	0.64	0.52
query37	0.10	0.08	0.08
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.16	0.16	0.16
query41	0.08	0.04	0.03
query42	0.03	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 97.36 s
Total hot run time: 24.41 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 67.22% (32064/47699)
Line Coverage 52.04% (337063/647676)
Region Coverage 47.57% (273963/575905)
Branch Coverage 49.41% (129129/261351)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.72% (35903/46197)
Line Coverage 63.03% (403678/640420)
Region Coverage 59.61% (341591/573024)
Branch Coverage 60.76% (158179/260338)

@Gabriel39
Gabriel39 merged commit 74b477d into apache:master Nov 3, 2026
38 of 39 checks passed
github-actions Bot pushed a commit that referenced this pull request Nov 3, 2026
### What problem does this PR solve?

Issue Number: N/A

Problem Summary:

Queries such as:

```sql
SELECT COUNT(*) FROM example_catalog.information_schema.schemata;
```

only need database and catalog names. However, `SchemaSchemataScanner`
uses the default `getDbNames` RPC, whose FE handler calls
`catalog.getAllDbs()` to also return database IDs. For external
catalogs, this resolves every database object even though SCHEMATA never
reads those IDs. A large namespace list can therefore churn a much
smaller database-object cache and allocate substantial temporary
metadata while waiting inside a synchronous BE-to-FE RPC. A warm
database-name cache does not remove this work.

This PR adds the optional `include_db_ids` request field, defaulting to
`true`, and lets SCHEMATA set it to `false`. The FE then calls
`catalog.getDbNames()` and omits the unused database IDs. Both paths
share the existing privilege checks, pattern matching, and schema-name
formatting. Callers that need IDs keep the object-enumeration path
without additional intermediate lists.

The new field uses ID 8; field 7 remains reserved. Definitions were
checked on master and branch-3.1/4.0/4.1/4.2. Older FE nodes ignore the
optional field and keep serving the existing response; older BE callers
retain the default ID-inclusive behavior on a new FE.

### Validation

- Added a 100,000-namespace test that rejects any database-object
enumeration and verifies the result-array lengths and omitted IDs.
- Covered privilege/pattern filtering, qualified schema names,
empty/unavailable catalogs, existing ID-returning callers, and binary
deserialization of requests without the new field.
- Confirmed the new behavior tests fail on the original handler before
implementing the change. All 7 targeted FE tests pass, including the
existing `FrontendServiceImplTest#testGetDBNames`.

```bash
bash run-fe-ut.sh --run 'org.apache.doris.service.FrontendServiceGetDbNamesTest,org.apache.doris.service.FrontendServiceImplTest#testGetDBNames'
```

- FE Checkstyle: passed with zero violations.
- Changed BE scanner: clang-format 16 and C++ syntax-only compilation
with regenerated Thrift headers passed.

An in-process FE-handler benchmark uses the actual `ExternalCatalog` /
`TestExternalCatalog` name and object-cache implementations, a synthetic
metadata provider, and stubbed catalog routing and privilege checks. It
compares the original handler source at master commit
`bdb90856e6e468eb495e5bfd67010de90570bfbc` with the patched handler,
using the same dependencies and fixture. Each trial starts with a warm
name cache and cold object cache, whose capacity is 1,000. There are
100,000 synthetic namespaces plus the two system databases. Settings:
JDK 17, 2 GiB heap, 4 active processors; discard one warm-up pair and
report medians from three measured trials.

| Metric | Original master | Patched SCHEMATA path |
| --- | ---: | ---: |
| FE handler elapsed time | 2,984.2 ms | 1,331.1 ms |
| Cumulative current-thread allocation | 2,117.2 MiB | 726.2 MiB |
| Database objects constructed | 100,002 | 0 |
| Name-provider invocations | 1 | 1 |
| Returned rows | 100,002 | 100,002 |

In this fixture, handler time falls by 55.4% (2.24x faster) and
cumulative allocation falls by 65.7%. Allocation is total bytes
allocated during the call, not peak live heap. This benchmark excludes
network transport, Thrift serialization, and SQL execution; it does not
measure a deployed PostgreSQL/Iceberg environment. Full BE linking and a
deployed end-to-end SQL test were not run locally.

### Release note

Improve `information_schema.schemata` enumeration for large catalogs by
avoiding unnecessary database-object loading.

### Check List (For Author)

- Test
    - [ ] Regression test
    - [x] Unit Test
    - [x] Manual test (FE-handler benchmark described above)
    - [ ] No need to test or manual test.
- Behavior changed:
- [x] No. SQL result semantics and existing ID-returning requests are
preserved.
    - [ ] Yes.
- Does this need documentation?
    - [x] No.
    - [ ] Yes.

### Check List (For Reviewer who merge this PR)

- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label
yiguolei pushed a commit that referenced this pull request Nov 4, 2026
Gabriel39 added a commit that referenced this pull request Nov 9, 2026
)

### What problem does this PR solve?

Backport three master fixes to `branch-4.1`: avoid unnecessary
database-object loading for SCHEMATA scans, prevent ORC condition-cache
seek crashes or missing rows, and preserve JSON/WAL row counts when no
file columns are projected.

The commits retain their original authors and are applied in master
merge order:

1. #70010 — Avoid database-object
enumeration when SCHEMATA only needs names.
2. #70079 — Advance safely past
SARG-filtered ORC stripe suffixes during condition-cache seeks.
3. #70154 — Track logical JSON
records independently of projected columns and capture WAL row counts
before column ownership is transferred.

Branch adaptations:

- Keep Thrift field 7 reserved and add the optional `include_db_ids`
flag at upstream field 8 with its default `true`. Preserve existing
privilege checks, pattern matching and schema-name formatting for both
enumeration paths.
- Use the upstream fixed ORC dependency revision
`5962bb071d6345cc29c5353d64d85a203525e4d9`, which descends from the
branch's existing revision.
- Resolve the JSON reader conflicts by retaining 4.1's error handling
and adding logical row accounting without importing unrelated
missing-field/load-rejection changes. Remove the rooted-array pre-count
that consumes the ondemand cursor before JSON-path materialization;
retain the upstream rooted-array coverage.

### Validation

- The branch's FE production and test sources compiled with the existing
Java 8 target settings. All **7 targeted FE tests passed**, including
the existing `FrontendServiceImplTest#testGetDBNames`, the
100,000-namespace case, filtering and legacy-request compatibility. FE
Checkstyle passed.
- A fresh ASAN build of the exact pinned ORC dependency passed **56
focused tests**, including **32 filtered-stripe-suffix boundary cases**.
- All **7 affected C++ implementation/test/generator translation units
compiled**. Clang-format 16 passed for all **8 affected C++
source/header files**.
- The ORC fixture generator reproduced the committed fixture byte for
byte. All **3 added Groovy suites compiled**.
- Full Doris BE unit-test execution and external SQL regression
execution remain for CI; they were not run locally for this backport.

### Release note

Improve SCHEMATA enumeration for large catalogs. Fix potential crashes
or missing rows during ORC condition-cache seeks and incorrect JSON/WAL
row counts with empty file projections.

### Check List (For Author)

- Test
  - [x] Unit tests and focused dependency tests
- [x] Regression tests included and compiled; full SQL execution pending
CI
- Behavior changed:
- [x] Yes. Apply the upstream fixes while preserving branch-specific
validation and protocol compatibility.
- Does this need documentation?
  - [x] No.

### Check List (For Reviewer who merge this PR)

- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Add branch pick label

### ARM64 link dependency follow-up

The ORC revision enables libdeflate ZLIB decoding on every architecture.
Remove the old x86-only guard around `add_thirdparty(deflate)` so ARM64
BE links also receive the required library, matching master. An adjacent
comment records this dependency invariant.

Validation: probes include each branch's actual
`be/cmake/thirdparty.cmake` and select `aarch64`, `arm64`, `x86` and
`x86_64` dependency configurations. Before the fix, both ARM
configurations fail to link with missing libdeflate symbols while both
x86 controls pass. After the fix, all eight repository/configuration
combinations link and pass a DEFLATE compression/decompression round
trip. These probes run natively on x86_64 and validate CMake dependency
selection; a native ARM64/full BE build remains for CI. Clang-format 16
passed for the PR-affected C++ files.
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