| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=11"/> |
| <meta name="generator" content="Doxygen 1.9.8"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <title>iceberg-cpp: iceberg-cpp</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="jquery.js"></script> |
| <script type="text/javascript" src="dynsections.js"></script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/searchdata.js"></script> |
| <script type="text/javascript" src="search/search.js"></script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellspacing="0" cellpadding="0"> |
| <tbody> |
| <tr id="projectrow"> |
| <td id="projectalign"> |
| <div id="projectname">iceberg-cpp |
| </div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.9.8 --> |
| <script type="text/javascript"> |
| /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ |
| var searchBox = new SearchBox("searchBox", "search/",'.html'); |
| /* @license-end */ |
| </script> |
| <script type="text/javascript" src="menudata.js"></script> |
| <script type="text/javascript" src="menu.js"></script> |
| <script type="text/javascript"> |
| /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ |
| $(function() { |
| initMenu('',true,false,'search.php','Search'); |
| $(document).ready(function() { init_search(); }); |
| }); |
| /* @license-end */ |
| </script> |
| <div id="main-nav"></div> |
| </div><!-- top --> |
| <!-- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| </div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <div id="MSearchResults"> |
| <div class="SRPage"> |
| <div id="SRIndex"> |
| <div id="SRResults"></div> |
| <div class="SRStatus" id="Loading">Loading...</div> |
| <div class="SRStatus" id="Searching">Searching...</div> |
| <div class="SRStatus" id="NoMatches">No Matches</div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div><div class="header"> |
| <div class="headertitle"><div class="title">iceberg-cpp </div></div> |
| </div><!--header--> |
| <div class="contents"> |
| <div class="textblock"><p><a class="anchor" id="md__2home_2runner_2work_2iceberg-cpp_2iceberg-cpp_2README"></a></p> |
| <p><img src="https://iceberg.apache.org/assets/images/Iceberg-logo.svg" alt="Iceberg" style="pointer-events: none;" class="inline"/></p> |
| <p><a href="https://apache-iceberg.slack.com/"><img src="https://img.shields.io/badge/chat-on%20Slack-brightgreen.svg" alt="Slack" style="pointer-events: none;" class="inline"/></a> <a href="https://deepwiki.com/apache/iceberg-cpp"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" style="pointer-events: none;" class="inline"/></a></p> |
| <h1><a class="anchor" id="autotoc_md1"></a> |
| Apache Iceberg™ C++</h1> |
| <p>C++ implementation of <a href="https://iceberg.apache.org/">Apache Iceberg™</a>.</p> |
| <h2><a class="anchor" id="autotoc_md2"></a> |
| Requirements</h2> |
| <ul> |
| <li>CMake 3.25 or higher</li> |
| <li>C++23 compliant compiler (GCC 14+, Clang 16+, MSVC 2022+)</li> |
| </ul> |
| <h2><a class="anchor" id="autotoc_md3"></a> |
| Customizing Dependency URLs</h2> |
| <p>If you experience network issues when downloading dependencies, you can customize the download URLs using environment variables.</p> |
| <p>The following environment variables can be set to customize dependency URLs:</p> |
| <ul> |
| <li><code>ICEBERG_ARROW_URL</code>: Apache Arrow tarball URL</li> |
| <li><code>ICEBERG_AVRO_URL</code>: Apache Avro tarball URL</li> |
| <li><code>ICEBERG_AVRO_GIT_URL</code>: Apache Avro git repository URL</li> |
| <li><code>ICEBERG_NANOARROW_URL</code>: Nanoarrow tarball URL</li> |
| <li><code>ICEBERG_CROARING_URL</code>: CRoaring tarball URL</li> |
| <li><code>ICEBERG_NLOHMANN_JSON_URL</code>: nlohmann-json tarball URL</li> |
| <li><code>ICEBERG_CPR_URL</code>: cpr tarball URL</li> |
| </ul> |
| <p>Example usage:</p> |
| <div class="fragment"><div class="line">export ICEBERG_ARROW_URL="https://your-mirror.com/apache-arrow-22.0.0.tar.gz"</div> |
| <div class="line">cmake -S . -B build</div> |
| </div><!-- fragment --><h2><a class="anchor" id="autotoc_md4"></a> |
| Build</h2> |
| <h3><a class="anchor" id="autotoc_md5"></a> |
| Build, Run Test and Install Core Libraries</h3> |
| <div class="fragment"><div class="line">cd iceberg-cpp</div> |
| <div class="line">cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_STATIC=ON -DICEBERG_BUILD_SHARED=ON</div> |
| <div class="line">cmake --build build</div> |
| <div class="line">ctest --test-dir build --output-on-failure</div> |
| <div class="line">cmake --install build</div> |
| </div><!-- fragment --><h3><a class="anchor" id="autotoc_md6"></a> |
| Build and Install Iceberg Bundle Library</h3> |
| <h4><a class="anchor" id="autotoc_md7"></a> |
| Vendored Apache Arrow (default)</h4> |
| <div class="fragment"><div class="line">cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_BUNDLE=ON</div> |
| <div class="line">cmake --build build</div> |
| <div class="line">ctest --test-dir build --output-on-failure</div> |
| <div class="line">cmake --install build</div> |
| </div><!-- fragment --><h4><a class="anchor" id="autotoc_md8"></a> |
| Provided Apache Arrow</h4> |
| <div class="fragment"><div class="line">cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_PREFIX_PATH=/path/to/arrow -DICEBERG_BUILD_BUNDLE=ON</div> |
| <div class="line">cmake --build build</div> |
| <div class="line">ctest --test-dir build --output-on-failure</div> |
| <div class="line">cmake --install build</div> |
| </div><!-- fragment --><h3><a class="anchor" id="autotoc_md9"></a> |
| Build Examples</h3> |
| <p>After installing the core libraries, you can build the examples:</p> |
| <div class="fragment"><div class="line">cd iceberg-cpp/example</div> |
| <div class="line">cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH=/path/to/install</div> |
| <div class="line">cmake --build build</div> |
| </div><!-- fragment --><p>If you are using provided Apache Arrow, you need to include <code>/path/to/arrow</code> in <code>CMAKE_PREFIX_PATH</code> as below.</p> |
| <div class="fragment"><div class="line">cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="/path/to/install;/path/to/arrow"</div> |
| </div><!-- fragment --><h2><a class="anchor" id="autotoc_md10"></a> |
| Contribute</h2> |
| <p>Apache Iceberg is an active open-source project, governed under the Apache Software Foundation (ASF). Iceberg-cpp is open to people who want to contribute to it. Here are some ways to get involved:</p> |
| <ul> |
| <li>Submit <a href="https://github.com/apache/iceberg-cpp/issues/new">Issues</a> for bug report or feature requests.</li> |
| <li>Discuss at <a href="#" onclick="location.href='mai'+'lto:'+'dev'+'@i'+'ceb'+'er'+'g.a'+'pa'+'che'+'.o'+'rg'; return false;">dev mailing list</a> (<a href="#" onclick="location.href='mai'+'lto:'+'dev'+'-s'+'ubs'+'cr'+'ibe'+'@i'+'ceb'+'er'+'g.a'+'pa'+'che'+'.o'+'rg?'+'su'+'bje'+'ct'+'=(s'+'en'+'d%2'+'0t'+'his'+'%2'+'0em'+'ai'+'l%2'+'0t'+'o%2'+'0s'+'ubs'+'cr'+'ibe'+')'; return false;">subscribe</a> / <a href="#" onclick="location.href='mai'+'lto:'+'dev'+'-u'+'nsu'+'bs'+'cri'+'be'+'@ic'+'eb'+'erg'+'.a'+'pac'+'he'+'.or'+'g?'+'sub'+'je'+'ct='+'(s'+'end'+'%2'+'0th'+'is'+'%20'+'em'+'ail'+'%2'+'0to'+'%2'+'0un'+'su'+'bsc'+'ri'+'be)'; return false;">unsubscribe</a> / <a href="https://lists.apache.org/list.html?dev@iceberg.apache.org">archives</a>)</li> |
| <li>Talk to the community directly at <a href="https://join.slack.com/t/apache-iceberg/shared_invite/zt-1zbov3k6e-KtJfoaxp97YfX6dPz1Bk7A">Slack #cpp channel</a>.</li> |
| </ul> |
| <p>The Apache Iceberg community is built on the principles described in the <a href="https://www.apache.org/theapacheway/index.html">Apache Way</a> and all who engage with the community are expected to be respectful, open, come with the best interests of the community in mind, and abide by the Apache Foundation <a href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct</a>.</p> |
| <p>In addition, contributors using AI-assisted tools must follow the documented guidelines for AI-assisted contributions available on the Iceberg website: <a href="https://iceberg.apache.org/contribute/#guidelines-for-ai-assisted-contributions">https://iceberg.apache.org/contribute/#guidelines-for-ai-assisted-contributions</a>.</p> |
| <h3><a class="anchor" id="autotoc_md11"></a> |
| Linting</h3> |
| <p>Install the python package <code>pre-commit</code> and run once <code>pre-commit install</code>.</p> |
| <div class="fragment"><div class="line">pip install pre-commit</div> |
| <div class="line">pre-commit install</div> |
| </div><!-- fragment --><p>This will setup a git pre-commit-hook that is executed on each commit and will report the linting problems. To run all hooks on all files use <code>pre-commit run -a</code>.</p> |
| <h3><a class="anchor" id="autotoc_md12"></a> |
| Dev Containers</h3> |
| <p>We provide Dev Container configuration file templates.</p> |
| <p>To use a Dev Container as your development environment, follow the steps below, then select <code>Dev Containers: Reopen in Container</code> from VS Code's Command Palette.</p> |
| <div class="fragment"><div class="line">cd .devcontainer</div> |
| <div class="line">cp Dockerfile.template Dockerfile</div> |
| <div class="line">cp devcontainer.json.template devcontainer.json</div> |
| </div><!-- fragment --><p>If you make improvements that could benefit all developers, please update the template files and submit a pull request.</p> |
| <h2><a class="anchor" id="autotoc_md13"></a> |
| License</h2> |
| <p>Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> </p> |
| </div></div><!-- PageDoc --> |
| </div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 |
| </small></address> |
| </body> |
| </html> |