
<!DOCTYPE html>
<html lang="en" dir=ZgotmplZ>

<head>
  


<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
<script src="/js/anchor.min.js"></script>
<script src="/js/flink.js"></script>
<link rel="canonical" href="https://flink.apache.org/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/">

  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).
We highly recommend all users upgrade to Flink Table Store 0.3.0. 0.3.0 completed 150&#43; issues, which were completed by nearly 30 contributors.
Please check out the full documentation for detailed information and user guides.
Flink Table Store 0.3 completes many exciting features, enhances its ability as a data lake storage and greatly improves the availability of its stream pipeline.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink Table Store 0.3.0 Release Announcement" />
<meta property="og:description" content="The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).
We highly recommend all users upgrade to Flink Table Store 0.3.0. 0.3.0 completed 150&#43; issues, which were completed by nearly 30 contributors.
Please check out the full documentation for detailed information and user guides.
Flink Table Store 0.3 completes many exciting features, enhances its ability as a data lake storage and greatly improves the availability of its stream pipeline." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-01-13T08:00:00+00:00" />
<meta property="article:modified_time" content="2023-01-13T08:00:00+00:00" />
<title>Apache Flink Table Store 0.3.0 Release Announcement | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->

  <meta name="generator" content="Hugo 0.124.1">

    
    <script>
      var _paq = window._paq = window._paq || [];
       
       
      _paq.push(['disableCookies']);
       
      _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//analytics.apache.org/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    
</head>

<body dir=ZgotmplZ>
  


<header>
  <nav class="navbar navbar-expand-xl">
    <div class="container-fluid">
      <a class="navbar-brand" href="/">
        <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
        <span>Apache Flink</span>
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <i class="fa fa-bars navbar-toggler-icon"></i>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav">
          





    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.19 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.8 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.0 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
  

          </li>
        
      </ul>
    </li>
  

    


    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/posts/">Flink Blog</a>
  

    </li>
  

    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/downloads/">Downloads</a>
  

    </li>
  

    


    









        </ul>
        <div class="book-search">
          <div class="book-search-spinner hidden">
            <i class="fa fa-refresh fa-spin"></i>
          </div>
          <form class="search-bar d-flex" onsubmit="return false;"su>
            <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
            <i class="fa fa-search search"></i>
            <i class="fa fa-circle-o-notch fa-spin spinner"></i>
          </form>
          <div class="book-search-spinner hidden"></div>
          <ul id="book-search-results"></ul>
        </div>
      </div>
    </div>
  </nav>
  <div class="navbar-clearfix"></div>
</header>
 
  
      <main class="flex">
        <section class="container book-page">
          
<article class="markdown">
    <h1>
        <a href="/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/">Apache Flink Table Store 0.3.0 Release Announcement</a>
    </h1>
    


  January 13, 2023 -



  Jingsong Lee




    <p><p>The Apache Flink community is pleased to announce the release of the
<a href="https://github.com/apache/flink-table-store">Apache Flink Table Store</a> (0.3.0).</p>
<p>We highly recommend all users upgrade to Flink Table Store 0.3.0. 0.3.0 completed 150+ issues, which were completed by nearly 30 contributors.</p>
<p>Please check out the full <a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/">documentation</a> for detailed information and user guides.</p>
<br/>
<p>Flink Table Store 0.3 completes many exciting features, enhances its ability as a data lake storage and greatly
improves the availability of its stream pipeline. Some important features are described below.</p>
<h2 id="changelog-producer-full-compaction">
  Changelog Producer: Full-Compaction
  <a class="anchor" href="#changelog-producer-full-compaction">#</a>
</h2>
<p>If:</p>
<ul>
<li>You are using <code>partial-update</code> or <code>aggregation</code> table, at the time of writing, table store can&rsquo;t know what the
result is after merging, so table store can&rsquo;t generate the corresponding changelog.</li>
<li>Your input can’t produce a complete changelog but you still want to get rid of the costly normalized operator,</li>
</ul>
<p>You may consider using the <a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/features/table-types/#full-compaction">Full compaction changelog producer</a>.</p>
<p>By specifying <code>'changelog-producer' = 'full-compaction'</code>, Table Store will compare the results between full compactions
and produce the differences as changelog. The latency of changelog is affected by the frequency of full compactions.
By specifying <code>changelog-producer.compaction-interval</code> table property (default value 30min), users can define the
maximum interval between two full compactions to ensure latency.</p>
<center>
<img src="/img/blog/table-store/changelog-producer-full-compaction.png" width="100%"/>
</center>
<br/>
<h2 id="dedicated-compaction-job--multiple-writers">
  Dedicated Compaction Job &amp;&amp; Multiple Writers
  <a class="anchor" href="#dedicated-compaction-job--multiple-writers">#</a>
</h2>
<p>By default, Table Store writers will perform compaction as needed when writing records. This is sufficient for most use cases, but there are two downsides:</p>
<ul>
<li>This may result in unstable write throughput because throughput might temporarily drop when performing a compaction.</li>
<li>Compaction will mark some data files as &ldquo;deleted&rdquo;. If multiple writers mark the same file a conflict will occur when
committing the changes. Table Store will automatically resolve the conflict, but this may result in job restarts.</li>
</ul>
<p>To avoid these downsides, users can also choose to skip compactions in writers, and run a
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/maintenance/write-performance/#dedicated-compaction-job">dedicated job only for compaction</a>.
As compactions are performed only by the dedicated job, writers can continuously write records without pausing and no conflicts will ever occur.</p>
<p>To skip compactions in writers, set <code>write-only</code> to <code>true</code>.</p>
<p>To run a dedicated job for compaction, follow these instructions.</p>
<p>Flink SQL currently does not support statements related to compactions, so we have to submit the compaction job through <code>flink run</code>.</p>
<p>Run the following command to submit a compaction job for the table.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">&lt;FLINK_HOME&gt;/bin/flink run <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    -c org.apache.flink.table.store.connector.action.FlinkActions <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    /path/to/flink-table-store-dist-&lt;version&gt;.jar <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    compact <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --warehouse &lt;warehouse-path&gt; <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --database &lt;database-name&gt; <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --table &lt;table-name&gt;
</span></span></code></pre></div><h2 id="aggregation-table">
  Aggregation Table
  <a class="anchor" href="#aggregation-table">#</a>
</h2>
<p>Sometimes users only care about aggregated results. The
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/features/table-types/#aggregation">aggregation merge engine</a>
aggregates each value field with the latest data one by one under the same primary key according to the aggregate function.</p>
<p>Each field that is not part of the primary keys must be given an aggregate function, specified by the
<code>fields.&lt;field-name&gt;.aggregate-function</code> table property.</p>
<p>For example:</p>
<pre tabindex="0"><code>CREATE TABLE MyTable (
    product_id BIGINT,
    price DOUBLE,
    sales BIGINT,
    PRIMARY KEY (product_id) NOT ENFORCED
) WITH (
    &#39;merge-engine&#39; = &#39;aggregation&#39;,
    &#39;fields.price.aggregate-function&#39; = &#39;max&#39;,
    &#39;fields.sales.aggregate-function&#39; = &#39;sum&#39;
);
</code></pre><h2 id="schema-evolution">
  Schema Evolution
  <a class="anchor" href="#schema-evolution">#</a>
</h2>
<p>In version 0.2, the research and development of Schema Evolution has begun. In version 0.3, some of the capabilities
of Schema Evolution have been completed. You can use below operations in Spark-SQL (Flink SQL completes the following syntax in 1.17):</p>
<ul>
<li>Adding New Columns</li>
<li>Renaming Column Name</li>
<li>Dropping Columns</li>
</ul>
<p>Flink Table Store ensures that the above operations are safe, and the old data will automatically adapt to
the new schema when it is read.</p>
<p>For example:</p>
<pre tabindex="0"><code>CREATE TABLE T (i INT, j INT);

INSERT INTO T (1, 1);

ALTER TABLE T ADD COLUMN k INT;

ALTER TABLE T RENAME COLUMN i to a;

INSERT INTO T (2, 2, 2);

SELECT * FROM T;
-- outputs (1, 1, NULL) and (2, 2, 2)
</code></pre><h2 id="flink-lookup-join">
  Flink Lookup Join
  <a class="anchor" href="#flink-lookup-join">#</a>
</h2>
<p><a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/features/lookup-joins/">Lookup Joins</a> are a type of join
in streaming queries. It is used to enrich a table with data that is queried from Table Store. The join requires one
table to have a processing time attribute and the other table to be backed by a lookup source connector.</p>
<p>Table Store supports lookup joins on unpartitioned tables with primary keys in Flink.</p>
<p>The lookup join operator will maintain a RocksDB cache locally and pull the latest updates of the table in real time.
Lookup join operator will only pull the necessary data, so your filter conditions are very important for performance.</p>
<p>This feature is only suitable for tables containing at most tens of millions of records to avoid excessive use of local disks.</p>
<h2 id="time-traveling">
  Time Traveling
  <a class="anchor" href="#time-traveling">#</a>
</h2>
<p>You can use <a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/how-to/querying-tables/#snapshots-table">Snapshots Table</a>
and <a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/how-to/querying-tables/#scan-mode">Scan Mode</a> to time traveling.</p>
<ul>
<li>You can view all current snapshots by reading snapshots table.</li>
<li>You can travel time through <code>from-timestamp</code> and <code>from-snapshot</code>.</li>
</ul>
<p>For example:</p>
<pre tabindex="0"><code>SELECT * FROM T$options;

/*
+--------------+------------+--------------+-------------------------+
|  snapshot_id |  schema_id |  commit_kind |             commit_time |
+--------------+------------+--------------+-------------------------+
|            2 |          0 |       APPEND | 2022-10-26 11:44:15.600 |
|            1 |          0 |       APPEND | 2022-10-26 11:44:15.148 |
+--------------+------------+--------------+-------------------------+
2 rows in set
*/

SELECT * FROM T /*+ OPTIONS(&#39;from-snapshot&#39;=&#39;1&#39;) */;
</code></pre><h2 id="audit-log-table">
  Audit Log Table
  <a class="anchor" href="#audit-log-table">#</a>
</h2>
<p>If you need to audit the changelog of the table, you can use the
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/how-to/querying-tables/#audit-log-table">audit_log</a>
system table. Through audit_log table, you can get the <code>rowkind</code> column when you get the incremental data of the table.
You can use this column for filtering and other operations to complete the audit.</p>
<p>There are four values for <code>rowkind</code>:</p>
<ul>
<li>+I: Insertion operation.</li>
<li>-U: Update operation with the previous content of the updated row.</li>
<li>+U: Update operation with new content of the updated row.</li>
<li>-D: Deletion operation.</li>
</ul>
<p>For example:</p>
<pre tabindex="0"><code>SELECT * FROM MyTable$audit_log;

/*
+------------------+-----------------+-----------------+
|     rowkind      |     column_0    |     column_1    |
+------------------+-----------------+-----------------+
|        +I        |      ...        |      ...        |
+------------------+-----------------+-----------------+
|        -U        |      ...        |      ...        |
+------------------+-----------------+-----------------+
|        +U        |      ...        |      ...        |
+------------------+-----------------+-----------------+
3 rows in set
*/
</code></pre><h2 id="ecosystem">
  Ecosystem
  <a class="anchor" href="#ecosystem">#</a>
</h2>
<p>Flink Table Store continues to strengthen its ecosystem and gradually gets through the reading and writing
of all engines. Each engine below 0.3 has been enhanced.</p>
<ul>
<li>Spark write has been supported. But <code>INSERT OVERWRITE</code> and stream write are still unsupported.</li>
<li><a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/filesystems/s3/">S3</a> and
<a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/filesystems/oss/">OSS</a>
are supported by all computing engines.</li>
<li>Hive 3.1 is supported.</li>
<li>Trino the latest version (JDK 1s.17) is supported.</li>
</ul>
<h2 id="getting-started">
  Getting started
  <a class="anchor" href="#getting-started">#</a>
</h2>
<p>Please refer to the <a href="https://nightlies.apache.org/flink/flink-table-store-docs-release-0.3/docs/try-table-store/quick-start/">getting started guide</a> for more details.</p>
<br/>
<h2 id="whats-next">
  What&rsquo;s Next?
  <a class="anchor" href="#whats-next">#</a>
</h2>
<p>In the upcoming 0.4.0 release you can expect the following additional features:</p>
<ul>
<li>Provides Flink decoupled independent Java APIs</li>
<li>Spark: enhance batch write, provide streaming write and streaming read</li>
<li>Flink: complete DDL &amp; DML, providing more management operations</li>
<li>Changelog producer: Lookup, the delay of stream reading each scenario is less than one minute</li>
<li>Provide multi table consistent materialized views in real-time</li>
<li>Data Integration: Schema Evolution integration, whole database integration.</li>
</ul>
<p>Please give the release a try, share your feedback on the Flink mailing list and contribute to the project!</p>
<br/>
<h2 id="list-of-contributors">
  List of Contributors
  <a class="anchor" href="#list-of-contributors">#</a>
</h2>
<p>The Apache Flink community would like to thank every one of the contributors that have made this release possible:</p>
<p>Feng Wang, Hannankan, Jane Chan, Jia Liu, Jingsong Lee, Jonathan Leitschuh, JunZhang, Kirill Listopad, Liwei Li,
MOBIN-F, Nicholas Jiang, Wang Luning, WencongLiu, Yubin Li, gongzhongqiang, houhang1005, liuzhuang2017, openinx,
tsreaper, wuyouwuyoulian, zhuangchong, zjureel (shammon), 吴祥平</p>
</p>
</article>

          



  
    
    <div class="edit-this-page">
      <p>
        <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
      </p>
      <p>
        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2023-01-13-release-table-store-0.3.0.md">
          Edit This Page<i class="fa fa-edit fa-fw"></i> 
        </a>
      </p>
    </div>

        </section>
        
          <aside class="book-toc">
            


<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
  <ul>
    <li>
      <ul>
        <li><a href="#changelog-producer-full-compaction">Changelog Producer: Full-Compaction</a></li>
        <li><a href="#dedicated-compaction-job--multiple-writers">Dedicated Compaction Job &amp;&amp; Multiple Writers</a></li>
        <li><a href="#aggregation-table">Aggregation Table</a></li>
        <li><a href="#schema-evolution">Schema Evolution</a></li>
        <li><a href="#flink-lookup-join">Flink Lookup Join</a></li>
        <li><a href="#time-traveling">Time Traveling</a></li>
        <li><a href="#audit-log-table">Audit Log Table</a></li>
        <li><a href="#ecosystem">Ecosystem</a></li>
        <li><a href="#getting-started">Getting started</a></li>
        <li><a href="#whats-next">What&rsquo;s Next?</a></li>
        <li><a href="#list-of-contributors">List of Contributors</a></li>
      </ul>
    </li>
  </ul>
</nav>


          </aside>
          <aside class="expand-toc hidden">
            <a class="toc" onclick="expandToc()" href="javascript:void(0)">
              <i class="fa fa-bars" aria-hidden="true"></i>
            </a>
          </aside>
        
      </main>

      <footer>
        


<div class="separator"></div>
<div class="panels">
  <div class="wrapper">
      <div class="panel">
        <ul>
          <li>
            <a href="https://flink-packages.org/">flink-packages.org</a>
          </li>
          <li>
            <a href="https://www.apache.org/">Apache Software Foundation</a>
          </li>
          <li>
            <a href="https://www.apache.org/licenses/">License</a>
          </li>
          
          
          
            
          
            
          
          

          
            
              
            
          
            
              
                <li>
                  <a  href="/zh/">
                    <i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
                  </a>
                </li>
              
            
          
       </ul>
      </div>
      <div class="panel">
        <ul>
          <li>
            <a href="/what-is-flink/security">Security</a-->
          </li>
          <li>
            <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
          </li>
          <li>
            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
          </li>
       </ul>
      </div>
      <div class="panel icons">
        <div>
          <a href="/posts">
            <div class="icon flink-blog-icon"></div>
            <span>Flink blog</span>
          </a>
        </div>
        <div>
          <a href="https://github.com/apache/flink">
            <div class="icon flink-github-icon"></div>
            <span>Github</span>
          </a>
        </div>
        <div>
          <a href="https://twitter.com/apacheflink">
            <div class="icon flink-twitter-icon"></div>
            <span>Twitter</span>
          </a>
        </div>
      </div>
  </div>
</div>

<hr/>

<div class="container disclaimer">
  <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>



      </footer>
    
  </body>
</html>






