☰
Apache Calcite 版本下载与获取指南:源码发行包、Maven 构件与完整性校验全解析
2026/10/13 2:12:09 网站建设 项目流程
  • 后端
  • 数据库

【免费下载链接】calcite

Apache Calcite

项目地址:https://gitcode.com/gh_mirrors/ca/calcite
点击查看免费下载

导读:本文以 Apache Calcite 官网 Downloads 页面(site/downloads/index.md)为核心,系统讲解 Calcite 的两种官方获取方式——源码发行包(Source Release)与 Maven 构件(Maven Artifact),并给出完整的 PGP 签名与哈希校验流程、源码包构建方法,以及各版本(0.9.0 至 1.42.0)的演进脉络与适配器模块选型指引。读完本文,你将能够准确选择适合自己的 Calcite 版本与下载渠道,安全地完成文件完整性验证,并快速把 Calcite 以 Maven 依赖的形式接入自己的 Java 项目。

Apache Calcite 是一个动态数据管理框架:它不提供存储原语,而是提供标准的 SQL 解析与校验器、可插拔规则的优化器、逻辑与物理代数算子、SQL 与关系代数之间的转换算法,以及面向 Cassandra、Druid、Elasticsearch、MongoDB、Kafka 等多种数据源的执行适配器(见 README.md)。Calcite 通过 Apache 官方渠道发布两种形态的交付物——源码发行包与Maven 构件,本文围绕 Downloads 页面 的完整内容展开,并深入仓库源码与发布文档进行印证。

一、Calcite 的发布形态:源码包与 Maven 构件

Calcite 的每个版本都同时以两种形式交付(对应 site/downloads/index.md 的说明):

  1. 源码发行包(Source artifact):一个包含完整源代码的.tar.gz(旧版本另有.zip)归档,适合需要阅读、修改或离线构建源码的用户;
  2. Maven 构件(Maven artifact):发布到 Maven 中央仓库的二进制构件(如calcite-core),适合以依赖方式直接集成到 Java 项目。

两者的定位不同:源码包面向"想要构建和运行整个项目"的用户,Maven 构件面向"只想在自己的工程里使用 Calcite API"的开发者。需要注意,GitHub 上的 commit hash 链接只指向版本控制历史,并不包含最终的正式源码产物(见 site/downloads/index.md),正式产物一律以 Apache 官方发布渠道为准。

二、源码发行包下载:版本表与镜像策略

2.1 版本表结构与条目含义

Downloads 页面的"Source releases"表格由 Jekyll 根据site/_posts/目录下的发布公告(categories: [release])自动生成,每一行包含四个字段:

字段含义说明
Release版本号链接到 history.html 中对应版本的发布记录(锚点如#v1-42-0),1.42.0 之后的版本才带此链接
Date发布日期取自发布公告 front matter 中的date字段
Commit版本对应 commit链接到 GitHub 上该版本的提交记录,显示前 7 位短 hash
Download下载链接tar(较新版本)与zip(旧版本)格式的源码包,附 digest(校验和)与 pgp(签名)文件

以 1.42.0 为例,其发布公告位于 site/_posts/2026-05-31-release-1.42.0.md,front matter 中的version: 1.42.0、sha: c01f6b5519d4a906cf41bbe7843f5929662cf5fd、tag: v1-42-0正是版本表各列的数据来源。而 0.9.0 时代由于项目前身叫 Optiq,发布公告中带有fullVersion: apache-optiq-0.9.0-incubating特殊字段(见 2014-08-19-release-0.9.0-incubating.md),版本表会据此对 0.9.0 单独渲染optiq-0.9.0-incubating-source-release.zip。

2.2 下载渠道与镜像策略

页面模板对下载链接按发布时间做了分阶段处理(见 site/downloads/index.md 的模板逻辑):

  • 最新的一个版本:优先指向 Apache 官方下载镜像调度器https://www.apache.org/dyn/closer.lua(自动选择就近镜像,追加?action=download参数),追求下载速度;
  • 历史较近版本:指向https://archive.apache.org/dist/incubator/calcite/(早期孵化期版本)或https://archive.apache.org/dist/calcite/(正式版本);
  • 更早版本:统一指向https://archive.apache.org/dist/calcite/归档区。

页面明确提示(见 site/downloads/index.md):

  • 当前版本的源码包托管在镜像服务器上以获得更快的下载速度;
  • 旧版本源码包在 Apache 归档区(archive);
  • 如果从某个镜像下载失败,重试一次,第二次下载通常会成功(不同镜像的可用性不同);
  • 为安全起见,哈希和签名文件始终只托管在 Apache 官方服务器https://downloads.apache.org,绝不由镜像提供。

2.3 下载与选择建议

  • 需要最新稳定版时,点击版本表第一行(当前为 1.42.0)的tar链接,得到apache-calcite-1.42.0-src.tar.gz;
  • 需要特定旧版本(如企业生产环境固定版本)时,到归档区按apache-calcite-<version>-src.tar.gz命名规律查找,旧版本同时提供zip格式(见 site/downloads/index.md);
  • 只看版本历史、不下载源码的用户,可直接浏览 history.html 了解各版本特性、贡献者与兼容性说明。

三、校验下载文件的完整性(必须步骤)

3.1 为什么必须校验

页面明确要求:必须使用 PGP 签名(.asc文件)或哈希(新版本为.sha256,旧版本为.md5)校验下载文件的完整性(见 site/downloads/index.md)。这样做是为了确认文件确实由 Apache 官方发布、且在传输过程中未被篡改。模板逻辑显示校验算法随发布时间变化:2020-03-01 之后的版本用sha512,2018-06-01 之后的版本用sha256,2017-08-31 之后用md5,更早版本统一用md5(见 site/downloads/index.md)。

3.2 使用 GPG/PGP 校验签名(官方推荐)

官方给出完整的操作步骤(见 site/downloads/index.md):

  1. 从上面的版本表中下载发布产物(如apache-calcite-1.42.0-src.tar.gz)及其对应的 PGP 签名文件(*.asc);
  2. 下载 Apache Calcite 官方KEYS文件(https://downloads.apache.org/calcite/KEYS),其中包含 Calcite 所有发布经理的公钥;
  3. 导入 KEYS 并校验,三种方式任选其一:

方式一:GPG(推荐)

% gpg --import KEYS % gpg --verify downloaded_file.asc downloaded_file

方式二:PGP 的 PGP/PGPi(Unix 系工具)

% pgpk -a KEYS % pgpv downloaded_file.asc

方式三:旧版 PGP(Windows 系工具)

% pgp -ka KEYS % pgp downloaded_file.asc

3.3 使用哈希校验

如果不想使用签名校验,也可以直接用官方发布的校验和文件验证:

# 新版本(sha256 / sha512) % sha256sum -c apache-calcite-1.42.0-src.tar.gz.sha256 # 旧版本(md5) % md5sum -c apache-calcite-0.9.1-incubating-src.tar.gz.md5

无论选择哪种方式,校验通过(输出OK或签名有效)之后再进行解压和构建。

四、从源码包构建 Calcite

校验通过后即可解压构建。根据 howto.md 的官方说明:

$ tar xvfz apache-calcite-1.42.0-src.tar.gz $ cd apache-calcite-1.42.0-src $ gradle build

构建前提:Java(JDK 8、11、17、21 或 24)与 Gradle(版本 8.14.4)需在 PATH 中;构建过程用 JDK 25 编译代码,并通过--release 8参数保证产物可运行在 Java 8 及以上环境。仓库的 gradle/wrapper/gradle-wrapper.properties 锁定了 Gradle Wrapper 版本为 8.14.4 并附带 SHA-256 校验和,确保构建环境一致性。

如果从 Git 克隆代码构建(等价于源码包的开发版),则使用内置 Wrapper:

$ git clone https://github.com/apache/calcite.git $ cd calcite $ ./gradlew build

Calcite 包含大量机器生成代码(如core/build/javacc/javaCCMain/org/apache/calcite/sql/parser/impl/SqlParserImpl.java),默认在每次构建时重新生成;若 IDE 未自动生成源码,可手动执行./gradlew generateSources(详见 howto.md)。

五、通过 Maven 获取 Calcite 构件

5.1 在 pom.xml 中声明依赖

页面给出了标准的 Maven 依赖声明模板(见 site/downloads/index.md)。以当前最新版为例(版本号由模板自动取最新发布公告的 version 字段):

<dependencies> <dependency> <groupId>org.apache.calcite</groupId> <artifactId>calcite-core</artifactId> <version>1.42.0</version> </dependency> </dependencies>

其中calcite-core是 Calcite 的核心模块,包含 SQL 解析、校验、优化器与核心关系代数实现。当前仓库源码版本为 1.43.0-SNAPSHOT(见 gradle.properties 的calcite.version=1.43.0,构建时自动追加-SNAPSHOT),比已发布的 1.42.0 更新一个迭代版本,读者应以 Maven 中央仓库中实际可见的最新稳定版本号为准。

5.2 按需引入扩展模块

页面特别提醒:还要为任何需要的扩展模块添加对应的<dependency>元素,例如calcite-mongodb、calcite-spark、calcite-splunk等(见 site/downloads/index.md)。这与仓库的模块划分完全一致——settings.gradle.kts 中列出了全部子模块:

Maven 构件(artifactId)对应仓库模块功能定位
calcite-corecore核心引擎:解析、校验、优化、执行
calcite-csvexample/csv读取 CSV 文件的标准示例适配器(tutorial.md)
calcite-arrowarrow读取 Apache Arrow Feather 格式文件的实验性适配器(arrow_adapter.md)
calcite-mongodbmongodbMongoDB 适配器
calcite-sparksparkSpark 适配器
calcite-splunksplunkSplunk 适配器
calcite-cassandracassandraCassandra 适配器
calcite-druiddruidDruid 适配器
calcite-elasticsearchelasticsearchElasticsearch 适配器
calcite-kafkakafkaKafka 流数据适配器
calcite-filefile文件系统数据适配器
calcite-babelbabel解析器扩展框架(支持 PostgreSQL 等多方言)
calcite-serverserverCalcite 服务端扩展
calcite-linq4jlinq4jLINQ 风格的 .NET 查询语法 Java 实现
calcite-pig/calcite-pigletpig/pigletApache Pig 集成

此外仓库还包含bom(统一版本管理)、plus(生产环境增强)、geode、innodb、redis、testkit、ubenchmark等模块。选择原则:只引入你实际需要的数据源适配器,避免过度依赖。

5.3 使用 Calcite 的最小 Java 示例

引入calcite-core后,即可通过 JDBC 驱动连接 Calcite。以 CSV 适配器为例,可参考 tutorial.md 的启动方式,或直接使用仓库自带的./sqlline脚本连接:

$ ./sqlline sqlline> !connect jdbc:calcite:model=example/csv/src/test/resources/model.json admin admin

Maven 用户则直接在自己的应用中通过DriverManager.getConnection("jdbc:calcite:model=...")建立连接,模型文件(model JSON)定义数据源 schema,Calcite 负责其余全部 SQL 处理。

六、版本演进脉络:从 Optiq 到 1.42.0

版本表的发布公告数据可以串起 Calcite 的完整演进历史(详见 history.html 与site/_posts/下的各发布公告):

阶段版本区间里程碑
孵化期前身0.9.0-incubating(2014-08-19)项目前身 Optiq 的第一个 Apache 孵化器发布(发布公告)
更名 Calcite0.9.1-incubating(2014-10-02)更名为 Calcite 后的首个发布(发布公告)
首个主要版本1.0.0-incubating(2015-01-31)代码重新组织到org.apache.calcite命名空间(发布公告)
适配器扩展期1.8.0(2016-06-13)新增 Elasticsearch、Druid 适配器,UNNEST多参数、DESCRIBE、TRANSLATE等 SQL 特性(发布公告)
大型功能期1.18.0(2018-12-21)新增 JSON 函数、线性回归函数、WITHIN GROUP子句、lattice 推荐工具(发布公告)
类型系统进化1.39.0(2025-03-16)新增VARIANT、UUID数据类型、checked arithmetic、基于动态规划的 DPhyp 连接枚举算法、Arrow 适配器新算子(history.md)
集合运算优化1.40.0(2025-05-28)INTERSECT→semi-join、MINUS→anti-join 等新规则;新增 Doris、DuckDB、SQLite、Trino 方言(history.md)
类型与位运算1.41.0(2025-11-01)支持UNSIGNED类型、DPhyp 各类连接、新的位运算符与公共子表达式 API(history.md)
当前最新稳定版1.42.0(2026-05-31)新的去关联算法(基于 Neumann & Kemper 研究论文)、CSV 自定义分隔符、SELECT ... BY、SELECT * EXCLUDE等 SQL 扩展、HYPOT/AGE/REGEXP等新函数、HepPlanner 大计划优化模式(history.md)

各版本的兼容性声明(以 1.42.0 为例)为:在 Linux、macOS、Microsoft Windows 上测试;支持 JDK/OpenJDK 8 至 24;支持 Guava 21.0 至 33.4.8-jre(见 history.md)。这些信息可帮助你在选定版本时评估与自身运行环境的匹配度。

七、常见问题与最佳实践

7.1 镜像下载失败怎么办

页面明确说明重试即可大概率成功(见 site/downloads/index.md)。若多次失败,可直接切换到 Apache 官方归档区https://archive.apache.org/dist/calcite/手动下载。

7.2 下载后直接解压构建可以吗

不可以直接跳过校验。官方要求先完成 PGP 或哈希校验(见上文第三节)。未校验就使用外部渠道获取的包存在被篡改的风险。

7.3 用 Maven 时如何确认版本号

以 Maven 中央仓库org.apache.calcitegroup 下实际可见的版本为准。页面模板会自动取最新发布公告的version字段填入示例,因此示例中的版本号总是随仓库更新;集成时请同步核对calcite-core与各适配器构件的版本一致性,避免混用不同版本的构件导致不兼容。

7.4 推荐实践清单

  1. 新项目优先使用当前最新稳定版(1.42.0)及其发布公告中标注的对应 commit;
  2. 生产环境固定版本后,将版本号与 history.md 中的 Breaking Changes 章节对照评估升级风险;
  3. 所有下载操作完成后,养成先gpg --verify再使用的习惯;
  4. 仅引入用到的适配器构件,保持依赖最小化。

八、参考与延伸阅读

  • Downloads 页面源文件:site/downloads/index.md
  • 发布历史全记录:site/_docs/history.md
  • 构建与测试指南:site/_docs/howto.md
  • 入门教程(CSV 适配器实战):site/_docs/tutorial.md
  • 模块清单与版本配置:settings.gradle.kts、gradle.properties
  • 项目概览:README.md
  • 后端
  • 数据库

【免费下载链接】calcite

Apache Calcite

项目地址:https://gitcode.com/gh_mirrors/ca/calcite
点击查看免费下载

相关推荐

上一篇:RapidOCR模型转换工具:Paddle模型转ONNX实操指南
下一篇:LeetCode 698「划分为k个相等的子集」全解:搜索剪枝与模拟退火双解法实战

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询