--- warning: DO NOT CHANGE THIS MANUALLY, THIS IS GENERATED BY https://github.com/duckdb/community-extensions repository, check README there title: orc excerpt: | DuckDB Community Extensions A DuckDB extension for reading Apache ORC files, written in pure Rust. Supports all ORC primitives, struct, list, map types and all compression codecs (Zlib, Snappy, LZO, LZ4, ZSTD). extension: name: orc description: A DuckDB extension for reading Apache ORC files, written in pure Rust. Supports all ORC primitives, struct, list, map types and all compression codecs (Zlib, Snappy, LZO, LZ4, ZSTD). version: 0.2.1 language: Rust build: cargo license: MIT excluded_platforms: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools;windows_amd64_mingw;linux_amd64_musl" requires_toolchains: "rust" maintainers: - alitrack repo: github: alitrack/duckdb_orc ref: e2bb83eb1f50531dddf3074b14eb56d85401b8f3 ref_next: e2bb83eb1f50531dddf3074b14eb56d85401b8f3 docs: hello_world: | -- Install and use the ORC extension INSTALL orc FROM community; LOAD orc; -- Read a single ORC file SELECT * FROM read_orc('data.orc'); -- Read multiple ORC files with a glob pattern SELECT * FROM read_orc('sales/*.orc'); -- Filter and aggregate (DuckDB applies filters post-scan) SELECT region, SUM(amount) FROM read_orc('sales.orc') WHERE year = 2024 GROUP BY region; -- Column projection is pushed down to the ORC reader SELECT col1, col2 FROM read_orc('big_table.orc'); extended_description: | Built on top of [`orc-rust`](https://github.com/datafusion-contrib/orc-rust), a native Rust ORC reader that outputs Arrow record batches. ### Supported ORC Features - **Data types**: all ORC primitives, struct, list, map - **Encodings**: all ORC encodings (direct, dictionary, RLE, etc.) - **Compression**: Zlib, Snappy, LZO, LZ4, ZSTD - **Projection pushdown**: column pruning via DuckDB's optimizer - **Multi-file globs**: `read_orc('*.orc')` — all files must have identical schema - **Streaming**: files of any size, read in 2048-row batches ### Known Limitations - **Write support**: `COPY tbl TO 'file.orc' (FORMAT orc)` writes with ZSTD compression. Supported types: bool, int8-64, float32/64, date, timestamp, varchar, blob. List/Struct/Map/Decimal rejected cleanly (upstream `orc-rust` writer doesn't encode them yet). - **Write column names**: output columns are `column_N` — the DuckDB C API COPY bind does not expose source column names. - **Parallel scan**: multi-stripe files read in parallel across threads (caps at CPU count). - **No filter pushdown**: blocked by missing DuckDB C API (`duckdb_table_function_supports_filter_pushdown` not exposed) - **No union type**: not supported by `orc-rust` upstream extension_star_count: 4 extension_star_count_pretty: 4 extension_download_count: 787 extension_download_count_pretty: 787 image: '/images/community_extensions/social_preview/preview_community_extension_orc.png' layout: community_extension_doc --- ### Compatibility Matrix This table covers all DuckDB releases that have not reached [end-of-life](https://duckdb.org/release_calendar), including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 | | :--- | :---: | :---: | :---: | :---: | :---: | | Linux AMD64 | ❌ | ❌ | ✅ | ❌ | ✅ | | Linux ARM64 | ❌ | ❌ | ✅ | ❌ | ✅ | | macOS AMD64 | ❌ | ❌ | ✅ | ❌ | ✅ | | macOS ARM64 | ❌ | ❌ | ✅ | ❌ | ✅ | | Windows AMD64 | ❌ | ❌ | ✅ | ❌ | ✅ | | Windows ARM64 | ❌ | ❌ | ❌ | ❌ | ❌ | | WebAssembly | ❌ | ❌ | ❌ | ❌ | ❌ | ### Installing and Loading ```sql INSTALL {{ page.extension.name }} FROM community; LOAD {{ page.extension.name }}; ``` {% if page.docs.hello_world %} ### Example ```sql {{ page.docs.hello_world }}``` {% endif %} {% if page.docs.extended_description %} ### About {{ page.extension.name }} {{ page.docs.extended_description }} {% endif %} ### Added Functions | function_name | function_type | description | comment | examples | |---------------|---------------|-------------|---------|----------| | read_orc | table | NULL | NULL | | ### Overloaded Functions This extension does not add any function overloads. ### Added Types This extension does not add any types. ### Added Settings | name | description | input_type | scope | aliases | typed_value | |----------------|---------------------------------------------------------|------------|--------|---------|-------------| | temp_directory | Set the directory to which temporary files are written. | VARCHAR | GLOBAL | [] | post.db.tmp |