This is an automated email from the ASF dual-hosted git repository.
mtaha pushed a commit to branch PG18
in repository https://gitbox.apache.org/repos/asf/age.git
The following commit(s) were added to refs/heads/PG18 by this push:
new 806fa2eb Advance PG18 branch to Apache AGE version 1.7.0 (#2317)
806fa2eb is described below
commit 806fa2ebdb300b3e76ef30cdba61803babbf2683
Author: John Gemignani <[email protected]>
AuthorDate: Wed Jan 21 11:40:57 2026 -0800
Advance PG18 branch to Apache AGE version 1.7.0 (#2317)
Updated the following files to advance the Apache AGE version
to 1.7.0
modified: Makefile
modified: README.md
modified: RELEASE
new file: age--1.7.0--y.y.y.sql
modified: age.control
modified: docker/Dockerfile
deleted: age--1.5.0--1.6.0.sql
---
Makefile | 2 +-
README.md | 12 +-
RELEASE | 122 ++++--------
age--1.5.0--1.6.0.sql | 256 -------------------------
age--1.6.0--y.y.y.sql => age--1.7.0--y.y.y.sql | 21 --
age.control | 2 +-
docker/Dockerfile | 2 +-
7 files changed, 45 insertions(+), 372 deletions(-)
diff --git a/Makefile b/Makefile
index 2d291257..394951ca 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
MODULE_big = age
-age_sql = age--1.6.0.sql
+age_sql = age--1.7.0.sql
OBJS = src/backend/age.o \
src/backend/catalog/ag_catalog.o \
diff --git a/README.md b/README.md
index 9f99f6dd..dad7f103 100644
--- a/README.md
+++ b/README.md
@@ -30,11 +30,11 @@
</a>
<a href="https://github.com/apache/age/releases">
- <img
src="https://img.shields.io/badge/Release-v1.6.0-FFA500?labelColor=gray&style=flat&link=https://github.com/apache/age/releases"/>
+ <img
src="https://img.shields.io/badge/Release-v1.7.0-FFA500?labelColor=gray&style=flat&link=https://github.com/apache/age/releases"/>
</a>
- <a href="https://www.postgresql.org/docs/17/index.html">
- <img src="https://img.shields.io/badge/Version-Postgresql
17-00008B?labelColor=gray&style=flat&link=https://www.postgresql.org/docs/17/index.html"/>
+ <a href="https://www.postgresql.org/docs/18/index.html">
+ <img src="https://img.shields.io/badge/Version-Postgresql
18-00008B?labelColor=gray&style=flat&link=https://www.postgresql.org/docs/18/index.html"/>
</a>
<a href="https://github.com/apache/age/issues">
@@ -125,7 +125,7 @@ Apache AGE is intended to be simple to install and run. It
can be installed with
Install PostgreSQL
</h4>
-You will need to install an AGE compatible version of Postgres<a>, for now AGE
supports Postgres 11, 12, 13, 14, 15, 16 & 17. Supporting the latest versions
is on AGE roadmap.
+You will need to install an AGE compatible version of Postgres<a>, for now AGE
supports Postgres 11, 12, 13, 14, 15, 16, 17 & 18. Supporting the latest
versions is on AGE roadmap.
<h4>
Installation via Package Manager
@@ -143,7 +143,7 @@ sudo apt install postgresql
Installation From Source Code
</h4>
-You can <a href="https://www.postgresql.org/ftp/source/"> download the
Postgres </a> source code and install your own instance of Postgres. You can
read instructions on how to install from source code for different versions on
the <a href="https://www.postgresql.org/docs/17/installation.html">official
Postgres Website.</a>
+You can <a href="https://www.postgresql.org/ftp/source/"> download the
Postgres </a> source code and install your own instance of Postgres. You can
read instructions on how to install from source code for different versions on
the <a href="https://www.postgresql.org/docs/18/installation.html">official
Postgres Website.</a>
@@ -152,7 +152,7 @@ You can <a href="https://www.postgresql.org/ftp/source/">
download the Postgres
Clone the <a href="https://github.com/apache/age">github repository</a> or
download the <a href="https://github.com/apache/age/releases">download an
official release.
</a>
-Run the pg_config utility and check the version of PostgreSQL. Currently, only
PostgreSQL versions 11, 12, 13, 14, 15, 16 & 17 are supported. If you have any
other version of Postgres, you will need to install PostgreSQL version 11, 12,
13, 14, 15, 16 & 17.
+Run the pg_config utility and check the version of PostgreSQL. Currently, only
PostgreSQL versions 11, 12, 13, 14, 15, 16, 17 & 18 are supported. If you have
any other version of Postgres, you will need to install PostgreSQL version 11,
12, 13, 14, 15, 16, 17 & 18.
<br>
```bash
diff --git a/RELEASE b/RELEASE
index 4525eab2..4e8b0903 100644
--- a/RELEASE
+++ b/RELEASE
@@ -15,91 +15,41 @@
# specific language governing permissions and limitations
# under the License.
-Release Notes for Apache AGE release 1.6.0 for master branch (currently PG17)
+Release Notes for Apache AGE release 1.7.0 for PG18 branch
-Apache AGE 1.6.0 - Release Notes
+Apache AGE 1.7.0 - Release Notes
- 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)
+NOTE: There isn't an upgrade path for PostgreSQL PG18 1.7.0 as
+ there isn't a prior version.
+
+Advance PG18 branch to Apache AGE version 1.7.0
+Add RLS support and fix permission checks (#2309)
+Replace libcsv with pg COPY for csv loading (#2310)
+Fix Issue 1884: Ambiguous column reference (#2306)
+Upgrade Jest to v29 for node: protocol compatibility (#2307)
+Optimize vertex/edge field access with direct array indexing (#2302)
+feat: Add 32-bit platform support for graphid type (#2286)
+Fix and improve index.sql addendum (#2301)
+Fix and improve index.sql regression test coverage (#2300)
+Fix Issue 2289: handle empty list in IN expression (#2294)
+Revise README for Python driver updates (#2298)
+Makefile: fix race condition on cypher_gram_def.h (#2273)
+Restrict age_load commands (#2274)
+Migrate python driver configuration to pyproject.toml (#2272)
+Convert string to raw string to remove invalid escape sequence warning (#2267)
+Update grammar file for maintainability (#2270)
+Fix ORDER BY alias resolution with AS in Cypher queries (#2269)
+Fix possible memory and file descriptors leaks (#2258)
+Adjust 'could not find rte for' ERROR message (#2266)
+Fix Issue 2256: segmentation fault when calling coalesce function (#2259)
+Add index on id columns (#2117)
+Fix issue 2245 - Creating more than 41 vlabels causes crash in drop_graph
(#2248)
+Fix DockerHub build warning messages (#2252)
+Update CI for BaseDockerizedTest (#2254)
+PG18 port for AGE (#2251)
+Updated CI, Labeler, Docker, and branch security files for PG18 (#2246)
+Fix issue 2243 - Regression in string concatenation (#2244)
+Add fast functions for checking edge uniqueness (#2227)
+Bump gopkg.in/yaml.v3 from 3.0.0 to 3.0.1 in /drivers/golang (#2212)
+Update branch security (#2219)
+Fix issue with CALL/YIELD for user defined and qualified functions. (#2217)
diff --git a/age--1.5.0--1.6.0.sql b/age--1.5.0--1.6.0.sql
deleted file mode 100644
index ede715c1..00000000
--- a/age--1.5.0--1.6.0.sql
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * 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.
-
---* 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 --*
-
--- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "ALTER EXTENSION age UPDATE TO '1.6.0'" to load this file. \quit
-
-CREATE FUNCTION ag_catalog.agtype_contains_top_level(agtype, agtype)
- RETURNS boolean
- LANGUAGE c
- IMMUTABLE
-RETURNS NULL ON NULL INPUT
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE OPERATOR @>> (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_contains_top_level,
- COMMUTATOR = '<<@',
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE FUNCTION ag_catalog.agtype_contained_by_top_level(agtype, agtype)
- RETURNS boolean
- LANGUAGE c
- IMMUTABLE
-RETURNS NULL ON NULL INPUT
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE OPERATOR <<@ (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_contained_by_top_level,
- COMMUTATOR = '@>>',
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-/*
- * We have to drop and recreate the operators, because
- * commutator is not modifiable using ALTER OPERATOR.
- */
-ALTER EXTENSION age
- DROP OPERATOR ? (agtype, agtype);
-ALTER EXTENSION age
- DROP OPERATOR ? (agtype, text);
-ALTER EXTENSION age
- DROP OPERATOR ?| (agtype, agtype);
-ALTER EXTENSION age
- DROP OPERATOR ?| (agtype, text[]);
-ALTER EXTENSION age
- DROP OPERATOR ?& (agtype, agtype);
-ALTER EXTENSION age
- DROP OPERATOR ?& (agtype, text[]);
-ALTER EXTENSION age
- DROP OPERATOR @> (agtype, agtype);
-ALTER EXTENSION age
- DROP OPERATOR <@ (agtype, agtype);
-
-DROP OPERATOR ? (agtype, agtype), ? (agtype, text),
- ?| (agtype, agtype), ?| (agtype, text[]),
- ?& (agtype, agtype), ?& (agtype, text[]),
- @> (agtype, agtype), <@ (agtype, agtype);
-
-CREATE OPERATOR ? (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_exists_agtype,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR ? (
- LEFTARG = agtype,
- RIGHTARG = text,
- FUNCTION = ag_catalog.agtype_exists,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR ?| (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_exists_any_agtype,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR ?| (
- LEFTARG = agtype,
- RIGHTARG = text[],
- FUNCTION = ag_catalog.agtype_exists_any,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR ?& (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_exists_all_agtype,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR ?& (
- LEFTARG = agtype,
- RIGHTARG = text[],
- FUNCTION = ag_catalog.agtype_exists_all,
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR @> (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_contains,
- COMMUTATOR = '<@',
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-CREATE OPERATOR <@ (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.agtype_contained_by,
- COMMUTATOR = '@>',
- RESTRICT = matchingsel,
- JOIN = matchingjoinsel
-);
-
-/*
- * Since there is no option to add or drop operator from class,
- * we have to drop and recreate the whole operator class.
- * Reference: https://www.postgresql.org/docs/current/sql-alteropclass.html
- */
-
-ALTER EXTENSION age
- DROP OPERATOR CLASS ag_catalog.gin_agtype_ops USING gin;
-
-DROP OPERATOR CLASS ag_catalog.gin_agtype_ops USING gin;
-DROP OPERATOR FAMILY ag_catalog.gin_agtype_ops USING gin;
-
-CREATE OPERATOR CLASS ag_catalog.gin_agtype_ops
-DEFAULT FOR TYPE agtype USING gin AS
- OPERATOR 7 @>(agtype, agtype),
- OPERATOR 8 <@(agtype, agtype),
- OPERATOR 9 ?(agtype, agtype),
- OPERATOR 10 ?|(agtype, agtype),
- OPERATOR 11 ?&(agtype, agtype),
- OPERATOR 12 @>>(agtype, agtype),
- OPERATOR 13 <<@(agtype, agtype),
- FUNCTION 1 ag_catalog.gin_compare_agtype(text,text),
- FUNCTION 2 ag_catalog.gin_extract_agtype(agtype, internal),
- FUNCTION 3 ag_catalog.gin_extract_agtype_query(agtype, internal, int2,
- internal, internal),
- FUNCTION 4 ag_catalog.gin_consistent_agtype(internal, int2, agtype, int4,
- internal, internal),
- FUNCTION 6 ag_catalog.gin_triconsistent_agtype(internal, int2, agtype, int4,
- internal, internal, internal),
-STORAGE text;
-
--- this function went from variadic "any" to just "any" type
-CREATE OR REPLACE FUNCTION ag_catalog.age_tostring("any")
- RETURNS agtype
- LANGUAGE c
- IMMUTABLE
-RETURNS NULL ON NULL INPUT
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
--- this is a new function for graph statistics
-CREATE FUNCTION ag_catalog.age_graph_stats(agtype)
- RETURNS agtype
- LANGUAGE c
- STABLE
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE FUNCTION ag_catalog.graph_exists(graph_name name)
- RETURNS agtype
- LANGUAGE c
- AS 'MODULE_PATHNAME', 'age_graph_exists';
-
-CREATE FUNCTION ag_catalog.age_is_valid_label_name(agtype)
- RETURNS boolean
- LANGUAGE c
- IMMUTABLE
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE OR REPLACE FUNCTION ag_catalog.create_vlabel(graph_name cstring,
label_name cstring)
- RETURNS void
- LANGUAGE c
- AS 'MODULE_PATHNAME';
-
-CREATE OR REPLACE FUNCTION ag_catalog.create_elabel(graph_name cstring,
label_name cstring)
- RETURNS void
- LANGUAGE c
- AS 'MODULE_PATHNAME';
-
-CREATE FUNCTION ag_catalog.agtype_to_json(agtype)
- RETURNS json
- LANGUAGE c
- IMMUTABLE
-RETURNS NULL ON NULL INPUT
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE CAST (agtype AS json)
- WITH FUNCTION ag_catalog.agtype_to_json(agtype);
-
-CREATE FUNCTION ag_catalog.agtype_array_to_agtype(agtype[])
- RETURNS agtype
- LANGUAGE c
- IMMUTABLE
-RETURNS NULL ON NULL INPUT
-PARALLEL SAFE
-AS 'MODULE_PATHNAME';
-
-CREATE CAST (agtype[] AS agtype)
- WITH FUNCTION ag_catalog.agtype_array_to_agtype(agtype[]);
-
-CREATE OPERATOR =~ (
- LEFTARG = agtype,
- RIGHTARG = agtype,
- FUNCTION = ag_catalog.age_eq_tilde
-);
diff --git a/age--1.6.0--y.y.y.sql b/age--1.7.0--y.y.y.sql
similarity index 74%
rename from age--1.6.0--y.y.y.sql
rename to age--1.7.0--y.y.y.sql
index 2d693a43..c95bb000 100644
--- a/age--1.6.0--y.y.y.sql
+++ b/age--1.7.0--y.y.y.sql
@@ -30,24 +30,3 @@
--* 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 --*
-
-CREATE FUNCTION ag_catalog._ag_enforce_edge_uniqueness2(graphid, graphid)
- RETURNS bool
- LANGUAGE c
- STABLE
-PARALLEL SAFE
-as 'MODULE_PATHNAME';
-
-CREATE FUNCTION ag_catalog._ag_enforce_edge_uniqueness3(graphid, graphid,
graphid)
- RETURNS bool
- LANGUAGE c
- STABLE
-PARALLEL SAFE
-as 'MODULE_PATHNAME';
-
-CREATE FUNCTION ag_catalog._ag_enforce_edge_uniqueness4(graphid, graphid,
graphid, graphid)
- RETURNS bool
- LANGUAGE c
- STABLE
-PARALLEL SAFE
-as 'MODULE_PATHNAME';
diff --git a/age.control b/age.control
index 8bd40360..57f9fbc1 100644
--- a/age.control
+++ b/age.control
@@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.
-default_version = '1.6.0'
+default_version = '1.7.0'
comment = 'AGE database extension'
module_pathname = '$libdir/age'
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3eb17c79..abdf0ccd 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/18/lib/age.so /usr/lib/postgresql/18/lib/
-COPY --from=build /usr/share/postgresql/18/extension/age--1.6.0.sql
/usr/share/postgresql/18/extension/
+COPY --from=build /usr/share/postgresql/18/extension/age--1.7.0.sql
/usr/share/postgresql/18/extension/
COPY --from=build /usr/share/postgresql/18/extension/age.control
/usr/share/postgresql/18/extension/
COPY docker/docker-entrypoint-initdb.d/00-create-extension-age.sql
/docker-entrypoint-initdb.d/00-create-extension-age.sql