dremio 的ArpDialect 简单介绍
dremio 的ArpDialect 让我们可以直接基于yaml 文件配置sql 类型以及处理,可以很大程度上简单jdbc 存储插件的开发
核心上还都是扩展的apache calcite sql 方言
核心部分
- 参考代码
截取了部分,同时基于yaml 处理了ArpTypeMapper,包含了不少类型映射,比较重要,好多地方都会用到
public class ArpDialect extends JdbcDremioSqlDialect {
private final ArpYaml yaml;
private final ArpTypeMapper typeMapper;
private static final Set<SqlKind> MANDATORY_OPERATORS;
private static final Logger logger;
public ArpDialect(ArpYaml yaml) {
super(yaml.getMetadata().getName(), yaml.getSyntax().getIdentifierQuote(), yaml.getNullCollation());
this.yaml = yaml;
this.typeMapper = new ArpTypeMapper(yaml);
}
- yaml 类型映射
简单参考
- ArpTypeMapper 类型的引用
实际上dremio jdbc 处理部分都依赖了ArpTypeMapper,进行类型转换处理(核心使用建议详细阅读源码)
参考图
参考实现子类
说明
dremio 的ArpDialect 实现是很方便的,简化了不少类型处理,我们基于yaml 定义就行了,arp yaml 定义可以参考以下链接
参考资料
https://www.dremio.com/resources/tutorials/how-to-create-an-arp-connector/