You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
flink/flink-table
Fang Yong dd47530f1e
[FLINK-32309][sql-gateway] Use independent resource manager for table environment (#22768)
1 year ago
..
flink-sql-client [FLINK-32309][sql-gateway] Use independent resource manager for table environment (#22768) 1 year ago
flink-sql-gateway [FLINK-32309][sql-gateway] Use independent resource manager for table environment (#22768) 1 year ago
flink-sql-gateway-api Update version to 1.19-SNAPSHOT 1 year ago
flink-sql-jdbc-driver [FLINK-32396][jdbc-driver] Support timestamp and timestamp_ltz for jdbc driver and sql gateway (#22832) 1 year ago
flink-sql-jdbc-driver-bundle [FLINK-32182][build] Use original japicmp plugin 1 year ago
flink-sql-parser Update version to 1.19-SNAPSHOT 1 year ago
flink-table-api-bridge-base Update version to 1.19-SNAPSHOT 1 year ago
flink-table-api-java [FLINK-32309][sql-gateway] Use independent resource manager for table environment (#22768) 1 year ago
flink-table-api-java-bridge [hotfix] Prepare StatefulSequenceSource for removal in 2.0 1 year ago
flink-table-api-java-uber Update version to 1.19-SNAPSHOT 1 year ago
flink-table-api-scala Update version to 1.19-SNAPSHOT 1 year ago
flink-table-api-scala-bridge Update version to 1.19-SNAPSHOT 1 year ago
flink-table-calcite-bridge Update version to 1.19-SNAPSHOT 1 year ago
flink-table-code-splitter Update version to 1.19-SNAPSHOT 1 year ago
flink-table-common [FLINK-33255] [table] Validate argument count during type inference 1 year ago
flink-table-planner [FLINK-25809][table] Improve readability of TableTestPrograms 1 year ago
flink-table-planner-loader Update version to 1.19-SNAPSHOT 1 year ago
flink-table-planner-loader-bundle Update version to 1.19-SNAPSHOT 1 year ago
flink-table-runtime [FLINK-32978][flink-core] Migrate the usage of RichFunction#open(Configuration parameters) to RichFunction#open(OpenContext openContext) 1 year ago
flink-table-test-utils Update version to 1.19-SNAPSHOT 1 year ago
README.md [FLINK-31409][table] Introduce flink-table-calcite-bridge module 2 years ago
pom.xml Update version to 1.19-SNAPSHOT 1 year ago

README.md

Table API & SQL

Apache Flink features two relational APIs - the Table API and SQL - for unified stream and batch processing. The Table API is a language-integrated query API for Java, Scala, and Python that allows the composition of queries from relational operators such as selection, filter, and join in a very intuitive way.

This documentation is intended for contributors of the table modules, and not for users. If you want to use Table API & SQL, check out the documentation.

Modules

Common

  • flink-table-common:
    • Type system definition
    • UDF stack and built-in function definitions
    • Internal data definitions
    • Extension points for catalogs, formats, connectors
    • Core APIs for extension points such as Schema
    • Utilities to deal with type system, internal data types and printing

API

  • flink-table-api-java:
    • Java APIs for Table API and SQL
    • Package org.apache.flink.table.delegation, which serves as entrypoint for all planner capabilities
  • flink-table-api-scala: Scala APIs for Table API and SQL
  • flink-table-api-bridge-base: Base classes for APIs to bridge between Table API and DataStream API
  • flink-table-api-java-bridge:
    • Java APIs to bridge between Table API and DataStream API
    • Connectors that are developed using DataStream API, usually need to depend only on this module.
  • flink-table-api-scala-bridge: Scala APIs to bridge between Table API and DataStream API
  • flink-table-api-java-uber:
    • Uber JAR bundling flink-table-common and all the Java API modules, including the bridging to DataStream API and 3rd party dependencies.
    • This module is intended to be used by the flink-dist, rather than from the users directly.
  • flink-table-calcite-brdge: Calcite dependencies for writing planner plugins (e.g. SQL dialects) that interact with Calcite API

Runtime

  • flink-table-code-splitter: Tool to split generated Java code so that each method does not exceed the limit of 64KB.
  • flink-table-runtime:
    • Operator implementations
    • Built-in functions implementations
    • Type system implementation, including readers/writers, converters and utilities
    • Raw format
    • The produced jar includes all the classes from this module and flink-table-code-splitter, including 3rd party dependencies

Parser and planner

  • flink-sql-parser: Default ANSI SQL parser implementation
  • flink-table-planner:
    • AST and Semantic tree
    • SQL validator
    • Query planner, optimizer and rules implementation
    • Code generator
    • The produced jar includes all the classes from this module together with the two parsers, including 3rd party dependencies (excluding Scala dependencies).
  • flink-table-planner-loader-bundle Bundles flink-table-planner, including Scala dependencies.
  • flink-table-planner-loader: Loader for flink-table-planner that loads the planner and it's Scala dependencies in a separate classpath using flink-table-planner-loader-bundle, isolating the Scala version used to compile the planner.

SQL client

  • flink-sql-client: CLI tool to submit queries to a Flink cluster

Testing

  • flink-table-test-utils: Brings in transitively all the dependencies you need to execute Table pipelines and provides some test utilities such as assertions, mocks and test harnesses.

Notes

No module except flink-table-planner should depend on flink-table-runtime in production classpath, no module except flink-table-planner-loader should depend on flink-table-planner-loader-bundle in production classpath, and similarly no module should depend on flink-table-planner or flink-table-planner-loader in production classpath. For testing, you should depend on flink-table-planner-loader and flink-table-runtime. These are already shipped by the Flink distribution.