ORC-2146: Upgrade `brotli4j` to 1.22.0 Bumps [com.aayushatharva.brotli4j:brotli4j](https://github.com/hyperxpro/Brotli4j) from 1.20.0 to 1.22.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/hyperxpro/Brotli4j/releases">com.aayushatharva.brotli4j:brotli4j's releases</a>.</em></p> <blockquote> <h2>Brotli4j v1.22.0 Release</h2> <h2>What's Changed</h2> <ul> <li>Add native binary validation script by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/247">hyperxpro/Brotli4j#247</a></li> <li>Prepare release and bump version to 1.22.0 by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/248">hyperxpro/Brotli4j#248</a></li> </ul> <h2>Important Fix:</h2> <p>v1.21.0 was released with missing native binaries for OSX aarch64 and OSX amd64; See <a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/246">hyperxpro/Brotli4j#246</a></p> <p><strong>Full Changelog</strong>: <a href="https://github.com/hyperxpro/Brotli4j/compare/v1.21.0...v1.22.0">https://github.com/hyperxpro/Brotli4j/compare/v1.21.0...v1.22.0</a></p> <h2>Brotli4j v1.21.0 Release</h2> <h2>What's Changed</h2> <ul> <li>Fix CI workflow for Maven Central release by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/228">hyperxpro/Brotli4j#228</a></li> <li>Bump the actions group with 5 updates by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/229">hyperxpro/Brotli4j#229</a></li> <li>Bump CMake to 3.5 min by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/238">hyperxpro/Brotli4j#238</a></li> <li>Bump the actions group across 1 directory with 4 updates by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/237">hyperxpro/Brotli4j#237</a></li> <li>Add hardwood project link to README by <a href="https://github.com/sullis"><code>sullis</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/240">hyperxpro/Brotli4j#240</a></li> <li>Bump the actions group with 2 updates by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/241">hyperxpro/Brotli4j#241</a></li> <li>Sync with Brotli 1.2.0 by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/242">hyperxpro/Brotli4j#242</a></li> <li>Bump the dependencies group across 1 directory with 12 updates by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/235">hyperxpro/Brotli4j#235</a></li> <li>Bump crazy-max/ghaction-import-gpg from 6.3.0 to 7.0.0 in the actions group by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/244">hyperxpro/Brotli4j#244</a></li> <li>Bump the dependencies group with 3 updates by <a href="https://github.com/dependabot"><code>dependabot</code></a>[bot] in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/243">hyperxpro/Brotli4j#243</a></li> <li>Release v1.21.0 by <a href="https://github.com/hyperxpro"><code>hyperxpro</code></a> in <a href="https://redirect.github.com/hyperxpro/Brotli4j/pull/245">hyperxpro/Brotli4j#245</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/hyperxpro/Brotli4j/compare/v1.20.0...v1.21.0">https://github.com/hyperxpro/Brotli4j/compare/v1.20.0...v1.21.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/0dd11c1ac24b2b29a985cc6ff203e501cd7eea35"><code>0dd11c1</code></a> Prepare release and bump version to 1.22.0 (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/248">#248</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/91bc58b70cc3cb7fee1cb4a58c34cdd6bbd667c0"><code>91bc58b</code></a> Add native binary validation script (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/247">#247</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/4dce45f14df4e70999c2e722014d86090dedf8f3"><code>4dce45f</code></a> Release v1.21.0 (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/245">#245</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/7d81bc37357e1ac1a68565a8f6459b5f04eb3351"><code>7d81bc3</code></a> Bump the dependencies group with 3 updates (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/243">#243</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/7ecf24973ca6eca75231a658935b7827da66172e"><code>7ecf249</code></a> Bump crazy-max/ghaction-import-gpg from 6.3.0 to 7.0.0 in the actions group (...</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/606013e4624e7a02c8450c0ed4e42c3ae75cfebf"><code>606013e</code></a> Bump the dependencies group across 1 directory with 12 updates (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/235">#235</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/c462c361f3179809cb204c629958162a26e47e09"><code>c462c36</code></a> Sync with Brotli 1.2.0 (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/242">#242</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/9a27043baf5cffd0620924ada5a0006d72ccaa1c"><code>9a27043</code></a> Bump the actions group with 2 updates (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/241">#241</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/4e1e36f57d253911df82ff25e66f010da5abe72b"><code>4e1e36f</code></a> Add hardwood project link to README (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/240">#240</a>)</li> <li><a href="https://github.com/hyperxpro/Brotli4j/commit/d65b3d2529c533b16cea08dd7c367cffa1594767"><code>d65b3d2</code></a> Bump the actions group across 1 directory with 4 updates (<a href="https://redirect.github.com/hyperxpro/Brotli4j/issues/237">#237</a>)</li> <li>Additional commits viewable in <a href="https://github.com/hyperxpro/Brotli4j/compare/v1.20.0...v1.22.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Closes #2597 from dependabot[bot]/dependabot/maven/java/com.aayushatharva.brotli4j-brotli4j-1.22.0. Authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
ORC is a self-describing type-aware columnar file format designed for Hadoop workloads. It is optimized for large streaming reads, but with integrated support for finding required rows quickly. Storing data in a columnar format lets the reader read, decompress, and process only the values that are required for the current query. Because ORC files are type-aware, the writer chooses the most appropriate encoding for the type and builds an internal index as the file is written. Predicate pushdown uses those indexes to determine which stripes in a file need to be read for a particular query and the row indexes can narrow the search to a particular set of 10,000 rows. ORC supports the complete set of types in Hive, including the complex types: structs, lists, maps, and unions.
This project includes both a Java library and a C++ library for reading and writing the Optimized Row Columnar (ORC) file format. The C++ and Java libraries are completely independent of each other and will each read all versions of ORC files.
Releases:
The current build status:
| Branch | Build Status |
|---|---|
| main | |
| branch-2.3 | |
| branch-2.2 | |
| branch-2.1 | |
| branch-2.0 | |
| branch-1.9 |
Bug tracking: Apache Jira
The subdirectories are:
To build a release version with debug information:
% mkdir build % cd build % cmake .. % make package % make test-out
To build a debug version:
% mkdir build % cd build % cmake .. -DCMAKE_BUILD_TYPE=DEBUG % make package % make test-out
To build a release version without debug information:
% mkdir build % cd build % cmake .. -DCMAKE_BUILD_TYPE=RELEASE % make package % make test-out
To build only the Java library:
% cd java % ./mvnw package
To build only the C++ library:
% mkdir build % cd build % cmake .. -DBUILD_JAVA=OFF % make package % make test-out
To build the C++ library with AVX512 enabled:
export ORC_USER_SIMD_LEVEL=AVX512 % mkdir build % cd build % cmake .. -DBUILD_JAVA=OFF -DBUILD_ENABLE_AVX512=ON % make package % make test-out
Cmake option BUILD_ENABLE_AVX512 can be set to “ON” or (default value)“OFF” at the compile time. At compile time, it defines the SIMD level(AVX512) to be compiled into the binaries.
Environment variable ORC_USER_SIMD_LEVEL can be set to “AVX512” or (default value)“NONE” at the run time. At run time, it defines the SIMD level to dispatch the code which can apply SIMD optimization.
Note that if ORC_USER_SIMD_LEVEL is set to “NONE” at run time, AVX512 will not take effect at run time even if BUILD_ENABLE_AVX512 is set to “ON” at compile time.
While CMake is the official build system for orc, there is unofficial support for using Meson to build select parts of the project. To build a debug version of the library and test it using Meson, from the project root you can run:
meson setup build meson compile -C build meson test -C build
By default, Meson will build unoptimized libraries with debug symbols. By contrast, the CMake build system generates release libraries by default. If you would like to create release libraries ala CMake, you should set the buildtype option. You must either remove the existing build directory before changing that setting, or alternatively pass the --reconfigure flag:
meson setup build -Dbuildtype=release --reconfigure meson compile -C build meson test -C build
Meson supports running your test suite through valgrind out of the box:
meson test -C build --wrap=valgrind
If you'd like to enable sanitizers, you can leverage the -Db_sanitize= option. For example, to enable both ASAN and UBSAN, you can run:
meson setup build -Dbuildtype=debug -Db_sanitize=address,undefined --reconfigure meson compile -C build meson test
Meson takes care of detecting all dependencies on your system, and downloading missing ones as required through its Wrap system. The dependencies for the project are all stored in the subprojects directory in individual wrap files. The majority of these are system generated files created by running:
meson wrap install <depencency_name>
From the project root. If you are developing orc and need to add a new dependency in the future, be sure to check Meson's WrapDB to check if a pre-configured wrap entry exists. If not, you may still manually configure the dependency as outlined in the aforementioned Wrap system documentation.