根目录下
- ├── be // BE 代码目录
- ├── bin // FE/BE 的启停脚本
- ├── build_plugin.sh // FE 插件编译脚本
- ├── build.sh // Doris 编译脚本
- ├── build-support // 编译用辅助脚本
- ├── CODE_OF_CONDUCT.md // 贡献者代码行为准则
- ├── conf // FE/BE 的配置文件
- ├── contrib // 第三方贡献代码,如 udf
- ├── CONTRIBUTING_CN.md
- ├── CONTRIBUTING.md
- ├── DISCLAIMER
- ├── docker // Doris 开发镜像的 Dockerfile
- ├── docs // 文档目录
- ├── env.sh
- ├── extension // 扩展功能代码,如 flink connector 等
- ├── fe // FE 代码目录
- ├── fe_plugins // FE 插件目录
- ├── fs_brokers // Broker 代码目录
- ├── gensrc // thrift/protobuf 等代码生成目录
- ├── LICENSE.txt
- ├── NOTICE.txt
- ├── README.md
- ├── run-be-ut.sh // BE 单元测试运行脚本
- ├── run-fe-ut.sh // FE 单元测试运行脚本
- ├── samples // 示例代码目录
- ├── thirdparty // 第三方依赖库目录
- ├── tools // 一些辅助工具
- ├── tsan_suppressions
- ├── ui // FE 前端代码目录
- └── webroot // 一些静态网页相关代码
fe/
- ├── checkstyle-apache-header.txt
- ├── checkstyle.xml
- ├── conf
- ├── fe-common // 一些 FE 模块的通用代码
- ├── fe-core // FE 模块主代码
- ├── pom.xml
- ├── README
- └── spark-dpp // Spark Load 所依赖的 Spark 导入程序代码
fe-core为FE的核心代码模块
- ├── main
- │ ├── cup // 语法定义文件
- │ ├── java // 主代码
- │ ├── jflex // 词法定义文件
- │ └── resources
- └── test // 单元测试
- ├── java
- └── resources
在 main/java/org/apache/doris下即是FE代码的主要部分
- ├── alter // 表结构变更操作相关的代码。包括表结构变更,物化视图等。
- ├── analysis // 包含所有SQL语法的java实例类
- ├── backup // 备份恢复操作相关的代码
- ├── blockrule // SQL 黑名单相关代码
- ├── catalog // 包含元数据操作的主类和各种数据库、表、分区的元数据实例类
- ├── clone // 数据副本修复和均衡相关的代码
- ├── cluster // 已废弃
- ├── common // 一些工具类和通用定义
- ├── consistency // 数据一致性校验相关的代码
- ├── deploy // 部署相关代码
- ├── external // Doris on Elasticsearch相关的代码
- ├── ha // 元数据高可用相关的代码
- ├── http // http v1 代码
- ├── httpv2 // http v2 代码(逐步替换v1)
- ├── journal // 元数据日志相关的代码
- ├── ldap // LDAP 认证相关代码
- ├── load // 导入作业相关代码
- ├── master // FE Master角色相关的操作代码,如元数据Checkpoint,BE任务汇报的处理等。
- ├── metric // FE 监控指标相关的代码
- ├── monitor // JVM 监控相关代码
- ├── mysql // MySQL协议层相关代码
- ├── PaloFe.java // Main函数入口
- ├── persist // 元数据持久化相关的代码
- ├── planner // 查询优化器相关的代码
- ├── plugin // Frontend端插件管理相关代码
- ├── qe // 用于处理各类SQL请求相关的代码。如查询请求的处理类、DDL请求的处理类等
- ├── resource // 资源标签相关的代码
- ├── rewrite // 查询优化器重写规则相关的代码
- ├── rpc // Frontend和Backend之间RPC协议相关的代码
- ├── service // Frontend侧各种服务器端代码
- ├── system // 集群节点的实例类和集群节点管理相关的代码
- ├── task // Frontend发往Backend的各类任务相关的代码
- └── transaction // 导入事务相关代码
be/
- ├── CMakeLists.txt // CMake 编译文件
- ├── src // 主代码目录
- ├── test // 单元测试
主代码目录包含:
- ├── agent // FE 下发的 agent task 相关处理类
- ├── common // 通用类
- ├── env // 文件系统操作类
- ├── exec // 执行算子相关代码
- ├── exprs // 表达式、函数计算相关代码
- ├── geo // 地理位置函数相关代码
- ├── glibc-compatibility // GLIBC 兼容代码
- ├── gutil // Google gutil 相关代码
- ├── http // BE 端 http server 相关代码
- ├── olap // 存储层代码
- ├── plugin // BE 插件管理相关代码
- ├── runtime // 查询层运行时相关代码
- ├── service // BE 对外服务接口相关代码
- ├── testutil // 单元测试辅助类
- ├── tools // 辅助工具相关代码
- ├── udf // 用户自定义函数相关代码
- └── util // 一些工具类
gensrc/
- ├── Makefile
- ├── proto // protobuf 定义文件
- ├── script // 一些辅助脚本,包括函数定义代码生成模板等
- └── thrift // thrift 定义文件
extension/
- ├── DataX // DataX doriswriter 插件
- ├── flink-doris-connector // Flink Doris Connector
- ├── logstash // logstash 导入插件
- └── spark-doris-connector // Spark Doris Connector
Apache Doris代码合入准则
开发者在本地修改完代码后,需要完成以下几个步骤,方可提交代码:
运行
run-fe-ut.sh和run-be-ut.sh来运行单元测试并确认通过。提交 Pull Request
Pull Request 会触发准入测试:
1.
Travis CI/continuous-integration:文档编译准入。会对docs/目录进行编译2.
ut_build:单元测试准入。会运行 fe/be 单元测试。3.
NewDorisTest:一个包含100多个 case 的最小回归测试集。只有在以上准入测试都通过,并且有至少一个 Committer Approve 后,代码方可合入。