首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Apache IoTDB

    在 Apache IoTDB 中使用编译时代码生成

    } ,{ "dataType": "double", "column": "DoubleColumn" } ] } 实际上,我们使用了 fmpp 写法可以参考 FMPP doc。 原文链接如下: https://fmpp.sourceforge.net/qtour.html 第三步,数据模型和模版代码组合起来! 为了把数据模型和模版代码组合,在 FreeMarker 中需要编写一个 main 方法,在 fmpp 中需要一个命令行命令。 但是这些我们都不想要,我们想要在 maven 编译的时候自动生成,不需要额外操心任何事情,所以我们借助了 drill 提供的 maven 插件 drill-fmpp-maven-plugin。 -- generate sources from fmpp --> <groupId>org.apache.drill.tools</groupId> <artifactId>drill-fmpp-maven-plugin

    65220编辑于 2023-03-21
  • 来自专栏麒思妙想

    基于Calcite自定义SQL解析器

    configuration> <sourceDirectory>${project.build.directory}/generated-sources/fmpp execution> <configuration> <config>src/main/codegen/config.fmpp </config> <output>${project.build.directory}/generated-sources/fmpp</output> 修改config.fmpp文件 找到 package: "org.apache.calcite.sql.parser.impl", 将下方的class,替换成一个你自己的类名,后面会用到。 测试 在构建测试的时候,注意将自己的解析解析类设置好,即在fmpp里设置的类名 .setParserFactory(JackySqlParserImpl.FACTORY) 完整测试代码如下 package

    3.7K30发布于 2020-07-10
  • 来自专栏大数据羊说

    flink sql 知其所以然(六)| flink sql 约会 calcite(看这篇就够了)

    4.5.3.fmpp 是啥? 5 fmpp 就是一个基于 freemarker 的模板生产器。用户可以统一管理自己的变量,然后用 ftl 模板 + 变量 生成对应的最终文件。 在 calcite 中使用 fmpp 作为变量 + 模板的统一管理器。然后基于 fmpp 来生成对应的 Parser.jj 文件。 3 你没猜错,还是上面那些流程,fmpp(Parser.jj 模板生成) -> javacc(Parser 生成) -> calcite。 </groupId> <artifactId>fmpp-maven-plugin</artifactId> <version>1.0</version> <dependencies goals> <configuration> <cfgFile>${project.build.directory}/codegen/config.fmpp

    2.8K20编辑于 2022-04-04
  • 来自专栏数栈技术分享

    看这篇就够了丨基于Calcite框架的SQL语法扩展探索

    Apache FreeMaker 模版,该模版包含着变量,这些变量在编译时可以被替换・parserImpl.ftl:提供自定义 SQL 语句、literals、dataType 的实现方法・config.fmpp :该文件是 FMPP 的配置文件,提供了 SQL 语句、literals、dataType 的接口扩展入口Calcite 使用 javacc 作为语法解析器,freemaker 作为模版,把 parserImpls.ftl 、config.fmpp、Parser.jj 模版合成最终的语法词法文件,最终通过 javacc 编译成自定义的解析器源码,整体流程如下图所示:扩展 SQL 实现● 工程目录● 扩展 sql 实现案例支持以下 04parserImpl.ftl 定义扩展的 SqlNode ExtendDollarVariable: 05config.fmpp 定义包以及扩展实现类的 import: 06扩展 SqlNode 实现

    6.5K30编辑于 2023-01-12
  • 来自专栏Calcite剖析

    Calcite系列(六):执行流程-语法解析

    为了便于语法扩展,支持基于FMPP(Apache FreeMarker)模板动态生成Parser.jj,主要涉及以下三个文件: config.fmpp:FreeMarker配置文件,描述可扩展的解析配置 Parser.jj:JavaCC模板文件,可结合FreeMarker模板替换生成,最终通过JavaCC编译生成对应的解析器源码 解析流程如下图所示:基于FreeMarker作为模板,整合config.fmpp

    1.5K84编辑于 2024-05-12
  • 来自专栏章鱼carl的专栏

    【Flink】第二十八篇:Flink SQL 与 Apache Calcite

    模板引擎FreeMarker 语法模板文件 parserImpls.ftl + 配置文件 conf.fmpp -> .jj 模板文件 2. 我们看config.fmpp, 至此,我们大致了解Flink是如何在工程角度与Calcite相遇的,更多细节限于笔者能力和时间有限就不过多展开了。

    2.9K32编辑于 2022-03-31
  • 来自专栏数栈技术分享

    基于开源流批一体数据同步引擎 ChunJun 数据还原 —DDL 解析模块的实战分享

    - 第二步 Main 工程目录下添加对应的 Codegen 文件夹,里面主要由 config.fmpp(Calcite 的配置文件) 和 FTL 语法文件组成。

    1.1K10编辑于 2022-06-30
  • 来自专栏大数据&分布式

    统一元数据:数据血缘

    Calcite JavaCC SQL解析依赖 FMPP配置文件、FreeMarker模板文件,官方建议在配置模板扩展,尽量避免改动Parser.jj文件。

    4.9K98编辑于 2024-05-11
  • 来自专栏编码小白

    FreeMarker与JSP 2.0 + JSTL组合进行比较

    FMPP中可以看到这个解决方案的一个例子。 它允许你做这样的事情(pp存储FMPP为模板提供的服务): <#assign a = pp.newWritableSequence()> <@ pp.add seq = a value =“red” 作为一种解决方法,在执行上述问题的操作后,要么确保不会修改用作输入的对象,<#assign b = pp.newWritableSequence(a[5..10])>或创建结果的副本与由上述两个点(例如在FMPP

    6.7K40发布于 2018-03-08
领券