diff --git a/NOTICE b/NOTICE
index aa41bc56319..fb342f9c909 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
Apache Calcite
-Copyright 2012-2021 The Apache Software Foundation
+Copyright 2012-2022 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
diff --git a/README b/README
index 4543b3601ff..3365c5e341e 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Apache Calcite release 1.29.0
+Apache Calcite release 1.30.0
This is a source or binary distribution of Apache Calcite.
diff --git a/site/_docs/history.md b/site/_docs/history.md
index 98fbeed291b..4f06e5107b4 100644
--- a/site/_docs/history.md
+++ b/site/_docs/history.md
@@ -29,6 +29,157 @@ Downloads are available on the
[downloads page]({{ site.baseurl }}/downloads/).
+## 1.30.0 / 2022-03-20
+{: #v1-30-0}
+
+This release comes over two months after [1.29.0](#v1-29-0),
+contains contributions from 29 authors,
+and resolves 36 issues.
+
+Among others, it is worth highlighting the following.
+
+* [Babel parser support MySQL NULL-safe equal operator '<=>'](https://issues.apache.org/jira/browse/CALCITE-4980)
+* [Support SQL hints for temporal table join](https://issues.apache.org/jira/browse/CALCITE-4967)
+* [Fluent test fixtures so that dependent projects can write parser, validator and rules tests](https://issues.apache.org/jira/browse/CALCITE-4885)
+* [Vulnerability issue CVE-2021-27568 fixed](https://issues.apache.org/jira/browse/CALCITE-5030)
+
+Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
+using JDK/OpenJDK versions 8 to 17;
+Guava versions 19.0 to 31.0.1-jre;
+other software versions as specified in gradle.properties.
+
+Contributors to this release:
+
+Alessandro Solimando,
+Bill Neil,
+Chen Kai,
+Eugen Stan,
+Feng Zhu,
+Jacques Nadeau,
+Jake Xie,
+Jay Narale,
+Jiatao Tao,
+Jing Zhang,
+Julian Hyde,
+LM Kang,
+Liya Fan (release manager),
+Marco Jorge,
+Marieke Gueye,
+NobiGo,
+Roman Puchkovskiy,
+Ruben Quesada Lopez,
+Scott Reynolds,
+Soumyakanti Das,
+Stamatis Zampetakis,
+Vova Vysotskyi,
+Will Noble,
+Xiong Duan,
+Yanjing Wang,
+Yiqun Zhang,
+Xurenhe,
+Zhe Hu,
+mans2singh.
+
+#### New features
+{: #new-features-1-30-0}
+
+* [CALCITE-4980]
+ Babel parser support MySQL NULL-safe equal operator '<=>'
+* [CALCITE-4967]
+ Support SQL hints for temporal table join
+* [CALCITE-4885]
+ Fluent test fixtures so that dependent projects can write parser, validator and rules tests
+
+#### Bug-fixes, API changes and minor enhancements
+{: #fixes-1-30-0}
+
+* [CALCITE-5040]
+ `SqlTypeFactoryTest.testUnknownCreateWithNullabilityTypeConsistency` fails
+* [CALCITE-5019]
+ Avoid multiple scans when table is `ProjectableFilterableTable` and projections and filters act on different columns
+* [CALCITE-5011]
+ `CassandraAdapterDataTypesTest` fails with initialization error
+* [CALCITE-5008]
+ Ignore synthetic and static methods in `MetadataDef`
+* [CALCITE-4997]
+ Keep `APPROX_COUNT_DISTINCT` in some `SqlDialect`s
+* [CALCITE-4996]
+ In `RelJson`, add a `readExpression` method that converts JSON to a `RexNode` expression
+* [CALCITE-4995]
+ `AssertionError` caused by `RelFieldTrimmer` on `SEMI/ANTI` join
+* [CALCITE-4994]
+ SQL-to-RelNode conversion is slow if table contains hundreds of fields
+* [CALCITE-4991]
+ Improve `RuleEventLogger` to also print input rels in `FULL_PLAN` mode
+* [CALCITE-4988]
+ `((A IS NOT NULL OR B) AND A IS NOT NULL)` can't be simplify to `(A IS NOT NULL)` When `A` is deterministic
+* [CALCITE-4986]
+ Make `HepProgram` thread-safe
+* [CALCITE-4968]
+ Use `TOP N` for MsSQL instead of `FETCH` without `OFFSET`
+* [CALCITE-4965]
+ `IS NOT NULL` failed in Elasticsearch Adapter
+* [CALCITE-4963]
+ Make it easier to implement interface `SqlDialectFactory`
+* [CALCITE-4953]
+ Deprecate `TableAccessMap` class
+* [CALCITE-4952]
+ Introduce a simplistic `RelMetadataQuery` option
+* [CALCITE-4912]
+ Confusing javadoc of `RexSimplify.simplify`
+* [CALCITE-4901]
+ JDBC adapter incorrectly adds `ORDER BY` columns to the `SELECT` list of generated SQL query
+* [CALCITE-4877]
+ Support Snapshot in `RelMdColumnOrigins`
+* [CALCITE-4872]
+ Add `UNKNOWN` value to enum `SqlTypeName`, distinct from the `NULL` type
+* [CALCITE-4702]
+ Error when executing query with `GROUP BY` constant via JDBC adapter
+* [CALCITE-4683]
+ IN-list converted to JOIN throws type mismatch exception
+* [CALCITE-4323]
+ If a view definition has an `ORDER BY` clause, retain the sort if the view is used in a query at top level
+* [CALCITE-4054]
+ `RepeatUnion` containing a `Correlate` with a `transientScan` on its RHS causes NPE
+* [CALCITE-3673]
+ `ListTransientTable` should not leave tables in the schema
+* [CALCITE-3627]
+ Incorrect null semantic for `ROW` function
+* [CALCITE-1794]
+ Expressions with numeric comparisons are not simplified when `CAST` is present
+
+#### Build and test suite
+{: #build-1-30-0}
+
+* [CALCITE-5006]
+ Gradle tasks for launching JDBC integration tests are not working
+* [CALCITE-4960]
+ Enable unit tests in Elasticsearch Adapter
+
+#### Dependency version upgrade
+{: #dependency-1-30-0}
+
+* [CALCITE-5030]
+ Upgrade jsonpath version from 2.4.0 to 2.7.0
+* [CALCITE-5025]
+ Upgrade commons-io version from 2.4 to 2.11.0
+* [CALCITE-5007]
+ Upgrade H2 database version to 2.1.210
+* [CALCITE-4973]
+ Upgrade log4j2 version to 2.17.1
+
+#### Web site and documentation
+{: #site-1-30-0}
+
+* Site: Update PMC Chair
+* Site: Add external resources section in the community page
+* Site: Add "calcite-clj - Use Calcite with Clojure" in talks section
+* Site: Add Alessandro Solimando as committer
+* Site: Change the javadoc title to Apache Calcite API
+* Site: For tables that display results, center the content horizontally
+* Site: Add syntax highlighting to SQL statements
+* Site: Improve HTML tables display & update CSV tutorial
+
## 1.29.0 / 2021-12-26
{: #v1-29-0}
diff --git a/site/_docs/howto.md b/site/_docs/howto.md
index c5d1df1199e..e3e6201153d 100644
--- a/site/_docs/howto.md
+++ b/site/_docs/howto.md
@@ -39,8 +39,8 @@ Unpack the source distribution `.tar.gz` file,
then build using Gradle:
{% highlight bash %}
-$ tar xvfz apache-calcite-1.29.0-src.tar.gz
-$ cd apache-calcite-1.29.0-src
+$ tar xvfz apache-calcite-1.30.0-src.tar.gz
+$ cd apache-calcite-1.30.0-src
$ gradle build
{% endhighlight %}
@@ -605,7 +605,7 @@ must:
* resolve the issue (do not close it as this will be done by the release
manager);
* select "Fixed" as resolution cause;
- * mark the appropriate version (e.g., 1.29.0) in the "Fix version" field;
+ * mark the appropriate version (e.g., 1.30.0) in the "Fix version" field;
* add a comment (e.g., "Fixed in ...") with a hyperlink pointing to the commit
which resolves the issue (in GitHub or GitBox), and also thank the contributor
for their contribution.
@@ -693,8 +693,11 @@ Before you start:
is starting and therefore `master` branch is in code freeze until further notice.
* Set up signing keys as described above.
* Make sure you are using JDK 8 (not 9 or 10).
-* Make sure `master` branch and `site` branch are in sync, i.e. there is no commit on `site` that has not
- been applied also to `master`. If you spot missing commits then port them to `master`.
+* Make sure `master` branch and `site` branch are in sync, i.e. there is no
+ commit on `site` that has not been applied also to `master`.
+ We are talking about the commit content, you need to pay attention to the commit message
+ and change, not hash: it is normal to have the same change in `site` and
+ `master`, but with different hashes. If you spot missing commits then port them to `master`.
* Check that `README` and `site/_docs/howto.md` have the correct version number.
* Check that `site/_docs/howto.md` has the correct Gradle version.
* Check that `NOTICE` has the current copyright year.
@@ -926,7 +929,8 @@ Remember that UTC date changes at 4 pm Pacific time.
Svnpubsub will publish to the
[release repo](https://dist.apache.org/repos/dist/release/calcite) and propagate to the
-[mirrors](https://www.apache.org/dyn/closer.cgi/calcite) within 24 hours.
+[mirrors](https://www.apache.org/dyn/closer.cgi/calcite) almost immediately.
+So there is no need to wait more than fifteen minutes before announcing the release.
If there are now more than 2 releases, clear out the oldest ones:
diff --git a/site/_posts/2022-03-20-release-1.30.0.md b/site/_posts/2022-03-20-release-1.30.0.md
new file mode 100644
index 00000000000..090cec47452
--- /dev/null
+++ b/site/_posts/2022-03-20-release-1.30.0.md
@@ -0,0 +1,42 @@
+---
+layout: news_item
+date: "2022-03-20 00:00:00 +0800"
+author: liyafan82
+version: 1.30.0
+categories: [release]
+tag: v1-30-0
+sha:
+---
+
+
+The [Apache Calcite PMC]({{ site.baseurl }})
+is pleased to announce
+[Apache Calcite release 1.30.0]({{ site.baseurl }}/docs/history.html#v1-30-0).
+
+This release comes over two months after [1.29.0](#v1-29-0),
+contains contributions from 29 authors,
+and resolves 36 issues.
+
+Among others, it is worth highlighting the following.
+
+* [Babel parser support MySQL NULL-safe equal operator '<=>'](https://issues.apache.org/jira/browse/CALCITE-4980)
+* [Support SQL hints for temporal table join](https://issues.apache.org/jira/browse/CALCITE-4967)
+* [Fluent test fixtures so that dependent projects can write parser, validator and rules tests](https://issues.apache.org/jira/browse/CALCITE-4885)
+* [Vulnerability issue CVE-2021-27568 fixed](https://issues.apache.org/jira/browse/CALCITE-5030)