diff --git a/Makefile b/Makefile
index c0a847830..3e73f3e68 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
MODULE_big = age
-age_sql = age--1.5.0.sql
+age_sql = age--1.6.0.sql
OBJS = src/backend/age.o \
src/backend/catalog/ag_catalog.o \
diff --git a/README.md b/README.md
index 15a2e9f95..b12acb574 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@
-
+
diff --git a/RELEASE b/RELEASE
index c984b7582..99e1491fe 100644
--- a/RELEASE
+++ b/RELEASE
@@ -15,65 +15,103 @@
# specific language governing permissions and limitations
# under the License.
-Release Notes for Apache AGE release 1.5.0 for PostgreSQL version 16
+Release Notes for Apache AGE release 1.6.0 for PostgreSQL version 16
-Apache AGE 1.5.0 - Release Notes
+#
+# WARNING!
+#
+# Since there are modifications to agtype gin operators, users who are
+# upgrading will need to drop the gin indexes before running the upgrade
+# script and recreate them afterwards.
+#
+# As always, please backup your database prior to any upgrade.
+#
+# WARNING!
+#
-NOTE: This is an initial release of Apache AGE for PostgreSQL version
- 16. There are no upgrade scripts to this release.
+Apache AGE 1.6.0 - Release Notes
-Add additional index support and performance enhancements (#1232)
-Add an additional way to find a previous variable ref (#1450)
-Add auto apply labeler workflow for PRs (#1161)
-Add checks for array functions to recognize and decode VPC (#1064)
-Add concat || operator to agtype (#1198)
-Add exist(?, ?|, ?&) operators for agtype (#1218)
-Add missing dependency in cypher_expr.c (#1256)
-Add path extraction(#>, #>>)operators to agtype (#1224)
-Add support for chained expressions in CASE (#1431)
-Clean up agtype_to_int8, agtype_to_int4, & agtype_to_int2 (#1354)
-Clean up #included files in parser directory (#1465)
-Converted SQL main file into multiple files. (#1401)
-docs: Add to Docker setup (#1204)
-Extend access(->, ->>), addition and subtraction operators (#1258)
-Extend agtype containment operators (@>, <@) (#1285)
-Extend EXPLAIN and add config param to switch transformation of property filter (#1262)
-Fix ambiguous conditions (#1373)
-Fix Docker file to reflect PostgreSQL version 15 (#1449)
-Fix DockerHub warning messages for latest (#1380)
-Fix issue #1045 - error using path var in WHERE (#1295)
-Fix Issue #1159 - Server terminates for SET plus-equal (#1160)
-Fix issue #1219 - MERGE not seeing previous clause var (#1441)
-Fix issue #1302 - crash on NULL input to UNWIND (#1304)
-Fix issue #1303: Server crashes on executing SELECT * FROM agtype(null); (#1317)
-Fix Issue #1305 - drop_label NULL cases (#1306)
-Fix Issue #1329 - agtype_to_int4 crash (#1339)
-Fix issue #1347 - unknow type of agtype container 0 (#1349)
-Fix issue #1389 - Server crash on using null operand for access operators (#1390)
-Fix issue #1393 - previous clause variables not seen with EXISTS (#1426)
-Fix issue #1398 - SET followed by DELETE does not delete (#1412)
-Fix issue #1399 EXISTS doesn't handle non-existent labels (#1400)
-Fix Issue #945 - incorrect count(*) return values (#1288)
-Fix typo in agtype_raw.h header guard (#1368)
-Implement chained expression order of operations (#1402)
-Implemented age_tail function (#1283)
-Implemented the toBooleanList() function (#1014)
-Implement EXISTS subquery for CASE (#1345)
-Master to PostgreSQL version 16 (#1451)
-Minor fix in `agtype_volatile_wrapper` function (#1172)
-Modify COUNT() to output agtype (#1311)
-Optimize performance of detach delete (#1271)
-Optimize vertex and edge builder functions (#1252)
-py_driver : optimised Antlr4ResultHandler to improve time (#1107)
-Refactor Regression Tests for CASE statement (#1268)
-Refactor the IN operator to use '= ANY()' syntax (#1236)
-Removed unnecessary assignment (#1185)
-Remove redundant job from CIs (#1473)
-Remove unnecessary #include in src/backend/utils
-Updated age.control.
-Updated files, format, and version information.
-Updated Makefile.
-Updated RELEASE.
-Update Discord channel in README.md (#1253)
-Update README.md file for PostgreSQL version 16 support (#1463)
-Update the Python Driver (#1246)
+ Fix issue 2205: left doesn't catch overflow (#2207)
+ Fix issue 2201: unexpected empty string behavior (#2203)
+ Add support for operators in cypher query (#2172)
+ Reimplement list comprehension (#2169)
+ Update labeler.yml (#2186)
+ Fix issue with the CI build and labeler (#2183)
+ Fix CSV import for edge with one property (#2175)
+ Remove stale bot and update .asf.yaml settings (#2171)
+ Prevent object access hook from accesing not installed namespace (#2161)
+ Fix CI build errors caused by missing dependencies (#2163)
+ Add support for external extensions (#2088)
+ Fix issue 2093: pfree() called with a NULL pointer (#2095)
+ Fix issue 1955 - List comprehension in WHERE clause (#2094)
+ Add support for fuzzystrmatch and other external extensions (#2083)
+ Fix memory leaks in functions part 1 (#2066)
+ Issue 1996 - Add agtype to json typecast (#2075)
+ Fix issue 2046: Memory leak during btree(agtype) (#2060)
+ Refactor Dockerfile to use multi-stage builds (#2004)
+ Revamp age csv loader (#2044)
+ Fix issue 2020: Memory leak (#2028)
+ Fix Issue 1907: SET on MERGE not storing edge properties (#2019)
+ Add EmitWarningsOnPlaceholders("age") (#1997)
+ Fix Issue 1988: How to update a property which is a keyword (#2005)
+ Fix obsolete docker-compose command in CIs (#2007)
+ Fix issue 1986: Failure creating label name close to MAX_LABEL_NAME_LEN (#1989)
+ Fix issue 1953 - PG Boolean used as AGTYPE object (#1959)
+ Add graph_exists function (#1958)
+ Fix issue 1956 - null key name passed. (#1957)
+ docs: add link to .NET open-source driver (#1938)
+ Add the `load_from_plugins` parameter in the Python driver to load AGE from the $libdir/plugins directory (#1935)
+ Fix issue 1910: Server crashes when using exists(vle path) (#1924)
+ Converted single line comments to multiline (#1908)
+ Add function is_valid_label_name (#1911) (#1912)
+ Fixes small typos in the python driver's README.md file (#1909)
+ Fix agtype_build_map to allow more than 50 pairs (#1901)
+ Agtype hash cmp (#1893)
+ Order some regression tests for stability on big-endian (#1892)
+ Update github stale action (#1891)
+ Make CALL YIELD grammar more precise (#1852)
+ Fix issue 1878 - Regression test failure with delete global graphs (#1881)
+ Corrected typos and grammatical errors in apache-age-basic.ipynb (#879)
+ Add workflow for stale issues and PRs (#1872)
+ Implement Returnless Unions in Subqueries (#1803)
+ [CI] Update docker image tags (#1865)
+ Add branch protection rules in .asf.yaml (#1854)
+ [CI] Update labeler github action (#1851)
+ Fix error using list comprehension with WITH * (#1838)
+ python driver psycopg3 (#1793)
+ Minor VLE and agtype_eq/ne performance updates (#1808)
+ Fix issue 1767: CREATE TABLE AS SELECT * FROM cypher, errors (#1799)
+ Implement Constraints on Subqueries (#1751)
+ Fix connection string in Python Driver (#1757)
+ Added integer conversion in toBoolean functions (#1199)
+ Update README.md (#1756)
+ Add the command graph_stats and improve VLE messaging for load (#1750)
+ Add helpful messages to the VLE subsystem (#1742)
+ Update README.md (#1728)
+ Added Networkx Support in python driver (#1716)
+ Remove duplicate check (#1740)
+ Fix Issue 1709 - MERGE creates incomplete vertices after the first one (#1721)
+ Fix shift/reduce conflict in grammar (#1719)
+ Fix Issue 1691 - MERGE incorrectly creates multiple vertices (#1718)
+ Implement map projection (#1710)
+ Add hooks for multi-arch builds on dockerhub (#1683)
+ Sample code for AGE-JDBC driver (#390)
+ Allow agtype_build_map to use AGTYPE keys (#1666)
+ Implement EXISTS Subquery (#1562)
+ Fix Issue 1634: Setting all properties with map object causes error (#1637)
+ Fix Issue 1630: MERGE using array not working in some cases (#1636)
+ Implement list comprehension (#1610)
+ Update Go installation and add in parser files (#1582)
+ Add optional parameter '=' in property constraints (#1516)
+ Fix unsorted output of some queries in the cypher_match test (#1507)
+ Update age_load to make property value conversion optional (#1525)
+ Update the Go driver documentation, Linux installer, and CI (#1527)
+ Fix json serialization error in Python Driver (#1228)
+ Add template for upgrading between versions of Apache AGE (#1506)
+ Update age_load to load scalar property values with appropriate type (#1519)
+ Fix apache#1513 - Invalid variable reuse in CREATE and MERGE clause (#1515)
+ Clean up #included files in src/include directories (#1518)
+ Bump gopkg.in/yaml.v3 in /drivers/golang (#1202)
+ Clean up #included files in catalog & commands directories (#1514)
+ Clean up #included files in nodes, executor, & optimizer directories (#1509)
+ Correct cleanup of age--x.x.x.sql files (#1505)
diff --git a/age--1.5.0--y.y.y.sql b/age--1.5.0--1.6.0.sql
similarity index 93%
rename from age--1.5.0--y.y.y.sql
rename to age--1.5.0--1.6.0.sql
index 5c33bec78..48e8c8327 100644
--- a/age--1.5.0--y.y.y.sql
+++ b/age--1.5.0--1.6.0.sql
@@ -17,16 +17,23 @@
* under the License.
*/
--- This is a template for upgrading from the previous version of Apache AGE
--- It will only work within versions of PostgreSQL, not across.
--- Please adjust the below ALTER EXTENSION to reflect the correct version
--- it is upgrading to.
+-- This will only work within a major version of PostgreSQL, not across
+-- major versions.
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "ALTER EXTENSION age UPDATE TO '1.4.0'" to load this file. \quit
-
--- Please add all additions, deletions, and modifications to the end of this
--- file. We need to keep the order of these changes.
+\echo Use "ALTER EXTENSION age UPDATE TO '1.6.0'" to load this file. \quit
+
+--
+-- WARNING!
+--
+-- Since there are modifications to agtype gin operators, users who are
+-- upgrading will have to drop the gin indexes before running this script and
+-- recreate them afterwards.
+--
+-- As always, please backup your database prior to any upgrade.
+--
+-- WARNING!
+--
CREATE FUNCTION ag_catalog.agtype_contains_top_level(agtype, agtype)
RETURNS boolean
@@ -64,7 +71,7 @@ CREATE OPERATOR <<@ (
/*
* We have to drop and recreate the operators, because
- * commutator is not modifiable using ALTER OPERATOR.
+ * commutator is not modifiable using ALTER OPERATOR.
*/
ALTER EXTENSION age
DROP OPERATOR ? (agtype, agtype);
diff --git a/age--1.6.0--y.y.y.sql b/age--1.6.0--y.y.y.sql
new file mode 100644
index 000000000..50b03458d
--- /dev/null
+++ b/age--1.6.0--y.y.y.sql
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+--* This is a TEMPLATE for upgrading from the previous version of Apache AGE
+--* Please adjust the below ALTER EXTENSION to reflect the -- correct version it
+--* is upgrading to.
+
+-- This will only work within a major version of PostgreSQL, not across
+-- major versions.
+
+-- As always, please backup your database prior to any upgrade.
+
+-- complain if script is sourced in psql, rather than via CREATE EXTENSION
+\echo Use "ALTER EXTENSION age UPDATE TO '1.X.0'" to load this file. \quit
+
+--* Please add all additions, deletions, and modifications to the end of this
+--* file. We need to keep the order of these changes.
+--* REMOVE ALL LINES ABOVE, and this one, that start with --*
+
diff --git a/age.control b/age.control
index d82a479aa..8bd40360f 100644
--- a/age.control
+++ b/age.control
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
-default_version = '1.5.0'
+default_version = '1.6.0'
comment = 'AGE database extension'
module_pathname = '$libdir/age'
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 336070589..381a94cf2 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -49,7 +49,7 @@ ENV LC_COLLATE=en_US.UTF-8
ENV LC_CTYPE=en_US.UTF-8
COPY --from=build /usr/lib/postgresql/16/lib/age.so /usr/lib/postgresql/16/lib/
-COPY --from=build /usr/share/postgresql/16/extension/age--1.5.0.sql /usr/share/postgresql/16/extension/
+COPY --from=build /usr/share/postgresql/16/extension/age--1.6.0.sql /usr/share/postgresql/16/extension/
COPY --from=build /usr/share/postgresql/16/extension/age.control /usr/share/postgresql/16/extension/
COPY docker/docker-entrypoint-initdb.d/00-create-extension-age.sql /docker-entrypoint-initdb.d/00-create-extension-age.sql