This is an automated email from the ASF dual-hosted git repository.
gregfelice pushed a change to branch PG18
in repository https://gitbox.apache.org/repos/asf/age.git
from 806fa2eb Advance PG18 branch to Apache AGE version 1.7.0 (#2317)
add 571c1982 Fix issue 2245 - Creating more than 41 vlabels causes crash
in drop_graph (#2248)
add 5aed9ecc Add index on id columns (#2117)
add 26f748c4 Fix Issue 2256: segmentation fault when calling coalesce
function (#2259)
add fa9973aa Adjust 'could not find rte for' ERROR message (#2266)
add 0ea94644 Fix possible memory and file descriptors leaks (#2258)
add 898481a8 Fix ORDER BY alias resolution with AS in Cypher queries
(#2269)
add 91de779a Update grammar file for maintainability (#2270)
add 1bb95bf6 Convert string to raw string to remove invalid escape
sequence warning (#2267)
add 838926cc Migrate python driver configuration to pyproject.toml (#2272)
add 48fca83d Restrict age_load commands (#2274)
add dd6deb70 Makefile: fix race condition on cypher_gram_def.h (#2273)
add 4eeceab2 Revise README for Python driver updates (#2298)
add 2e8f7ab9 Fix Issue 2289: handle empty list in IN expression (#2294)
add 7beb6533 Fix and improve index.sql regression test coverage (#2300)
add a1f472d6 Fix and improve index.sql addendum (#2301)
add c979380e feat: Add 32-bit platform support for graphid type (#2286)
add b9d09828 Optimize vertex/edge field access with direct array indexing
(#2302)
add 8bdeec54 Upgrade Jest to v29 for node: protocol compatibility (#2307)
add 56a92d8c Fix Issue 1884: Ambiguous column reference (#2306)
add b29ca5e7 Replace libcsv with pg COPY for csv loading (#2310)
add 1702ae07 Add RLS support and fix permission checks (#2309)
add b3219fd4 Master to PostgreSQL version 18 (#2315)
add 6287af85 Fix upgrade script for 1.6.0 to 1.7.0 (#2320)
add 858747c7 Advance master branch to Apache AGE version 1.7.0 (#2316)
add 5fe2121a Add pg_upgrade support functions for PostgreSQL (#2326)
add 887564d9 Fix JDBC driver CI test failures (#2333)
add 5f5b744a Update python-driver security and formatting (#2330)
add 77a16ece Fix security vulnerabilities in Node.js driver (#2329)
add 0c9a5278 Fix null pointer handling in array iteration (#2313)
add fa91350b Fix ISO C90 forbids mixed declarations and code warning
(#2334)
add 3c4d9cc7 Remove labeler github action (#2335)
add 55476ad2 fix incorrect variable assignment (#2336)
add 5005c21e Fix VLE NULL handling for chained OPTIONAL MATCH (#2337)
add 346f3194 Fix VLE queries failing on read-only replicas (#2160) (#2345)
add 20ada845 Fix chained MERGE not seeing sibling MERGE's changes (#1446)
(#2344)
add 217467a3 Fix MATCH after CREATE returning 0 rows (issue #2308) (#2340)
add a21120bf Support doubled-quote escaping in Cypher string literals
(issue #2222) (#2342)
add d0741d8d Fix entity_exists() CID visibility for CREATE + WITH + MERGE
(#2343)
add 23146a44 Fix crash in PREPARE with property parameter when
enable_containment is off (#2339)
add 90c33eb6 Add extension upgrade template regression test (#2364)
add a29e2810 Fix nondeterministic age_global_graph regression test (#2365)
add d6f1b7f6 Fix MATCH on brand-new label after CREATE returning 0 rows
(#2341)
add b3a00eea Add index scan (#2351)
add 945a259d Add missing include for PR: Add index scan (#2351) (#2379)
add 1847644c Improve extension upgrade regression test (addendum to #2364)
(#2377)
add f1a9b1d9 Fix upgrade test: build default install SQL from HEAD, not
initial commit (#2397)
add ce500459 Python driver: Add `skip_load` parameter to skip `LOAD 'age'`
statement (#2366)
add 15030a03 Fix OPTIONAL MATCH dropping null-preserving rows with
subquery WHERE (#2380)
add 4f9db377 Implement predicate functions: all(), any(), none(), single()
(#2359)
add bdc8b6dd fix(python-driver): quote-escape column aliases in
buildCypher() (#2373)
add 6c408386 Fix substring() crash when start-offset is NULL and length is
supplied (#2401)
add 908d7b29 Return an empty list from tail() for empty and singleton
lists (#2399)
add 26bd4f4d fix(python-driver): add null-guards in ANTLR parser and relax
runtime version pin (#2372)
add ee25e2a3 CI: fail build on compiler and bison warnings (#2398)
add 798917c2 VLE cache + performance improvements (#2376)
add 6f520fed Propagate null in agtype_access_slice bounds (#2400)
add 84e29542 Add MERGE ON CREATE SET / ON MATCH SET support (#2347)
add 5a740487 Fix property access on list comprehension / predicate loop
variables (#2402)
add 9f9d0f3b Add VLE semantics and cost model design note (#2349) (#2413)
add 22f4c94f Update README.md (#2414)
add 774e781b Propagate null through agtype arithmetic operators (#2405)
add ff47828b Allow safe Cypher reserved keywords in alias positions
(#2355) (#2415)
add 54e19fac Fix upgrade test: replace data-integrity checks with catalog
comparison (#2403)
add e9ef30b1 Zero-initialize parent_cpstate in analyze_cypher (#2423)
add a1b749af Fix upgrade test: allow function removal (#2422)
add 01ee9414 feat(python-driver): add public API for connection pooling
and model dict conversion (#2374)
add 9960e9c6 Add agtype <-> jsonb bidirectional casts (#350) (#2361)
add f02eda0e perf: VLE terminal-qual rewrite (#2420)
add 5ef7d6d5 Add vertex and edge composite types with direct field access
optimization (#2303)
add 795a881d perf(agtype): arena passthrough + binary-direct id extraction
(#2424)
add 5a254d68 python driver: preserve trailing quotes in agtype string
values (#2425)
add 73d0705e perf: VLE hash-adjacency overhaul — agehash + flat-array
VertexEdgeArray (#2421)
add 639c8d5a Restore contsel/contjoinsel for containment & key-existence
operators (#2356) (#2417)
add 23cbe57a fix: remove pthread_mutex that causes self-deadlock on VLE
queries (#2433)
add 12e2a31c Fix VLE [*0..N] zero-hop self-binding when edge label is
missing (#2382) (#2419)
add 14732bfa Fix locale-dependent string comparison in direct_field_access
test (#2439)
add a17bf457 Make age extension usable from shared_preload_libraries
(#2438)
add 310dc3f6 feature: add create_subgraph() (#2441)
add 932d26f2 cypher_vle: add ORDER BY to non-deterministic RETURN queries
(#2434)
add 34483efa age_global_graph: stabilize regression tests (#2431)
add 581d236e Makefile: add installcheck-existing target and improve
readability (#2437)
add 01ea79de Make ag_catalog ownership and built-in resolution explicit
(#2440)
add 3cc74a4f cypher_with: add ORDER BY to non-deterministic RETURN queries
(#2436)
add 5abb02f8 Add shortest_path / all_shortest_paths SRFs (#2430)
add 2bc8e95f Support pattern expressions as boolean expressions (#2360)
add 92e48e9b Add reduce() list folding function (#2435)
add ce073ef0 resolve subgraph staging sequences via regclass (#2446)
add 08da2ced Support relationship-type filters and a minimum hop count
(#2442)
add fe48740d Fix single-node labeled pattern expressions not filtering by
label (#2443) (#2444)
add 54668e1b Preserve null-valued keys in map literals (#2391) (#2412)
add 51376713 Fix Node.js driver CI build broken by @types/node drift
(#2452)
add fafdaa1c Fix stack overflow and precision loss in toFloatList()
conversion (#2451)
add 7bfeb24c Support outer references in reduce() fold bodies (#2448)
add 09fce2ce Fix segfault and out-of-bounds reads in file loaders on
malformed rows (#2453)
add c1617a26 ci: pin Build/Regression runner to ubuntu-24.04 and guard
Bison version for GLR grammar (#2445)
add d84b4578 Add automatic header-dependency tracking to the Makefile
(#2454)
add 39273ca8 Propagate null through unnest and single() three-valued logic
(#2406)
add 53ecacf8 Fix segfault on CREATE/MERGE/SET with generated or extra
label columns (#2458)
add fef54700 Fix installcheck fetch-depth parameter to 100 (#2461)
add 9fb7df8c Advance master branch to Apache AGE version 1.8.0 (#2455)
add f4798d33 Merge master into PG18: advance to Apache AGE 1.8.0
No new revisions were added by this update.
Summary of changes:
.github/labeler.yml | 26 -
.github/workflows/installcheck.yaml | 32 +-
.github/workflows/labeler.yml | 31 -
.github/workflows/nodejs-driver.yaml | 4 +-
.github/workflows/python-driver.yaml | 5 +-
.gitignore | 2 +
META.json | 8 +-
Makefile | 297 ++-
README.md | 110 +-
RELEASE | 119 +-
age--1.6.0--1.7.0.sql | 142 ++
age--1.7.0--1.8.0.sql | 1120 +++++++++++
age--1.7.0--y.y.y.sql => age--1.8.0--y.y.y.sql | 3 +
age.control | 2 +-
docker/Dockerfile | 2 +-
drivers/jdbc/lib/build.gradle.kts | 6 +-
.../org/apache/age/jdbc/BaseDockerizedTest.java | 19 +-
drivers/nodejs/package.json | 3 +-
drivers/nodejs/src/antlr4/CustomAgTypeListener.ts | 6 +-
drivers/nodejs/src/index.ts | 301 ++-
drivers/nodejs/test/Agtype.test.ts | 27 +
drivers/nodejs/test/index.test.ts | 285 ++-
drivers/python/README.md | 20 +-
drivers/python/age/VERSION.py | 44 +-
drivers/python/age/__init__.py | 81 +-
drivers/python/age/age.py | 693 ++++---
drivers/python/age/builder.py | 462 +++--
drivers/python/age/exceptions.py | 59 +-
drivers/python/age/gen/AgtypeLexer.py | 7 +-
drivers/python/age/gen/AgtypeListener.py | 7 +-
drivers/python/age/gen/AgtypeParser.py | 7 +-
drivers/python/age/gen/AgtypeVisitor.py | 7 +-
drivers/python/age/models.py | 626 +++---
drivers/python/age/networkx/lib.py | 97 +-
drivers/python/pyproject.toml | 7 +-
drivers/python/requirements.txt | Bin 176 -> 64 bytes
drivers/python/setup.py | 44 +-
drivers/python/test_age_py.py | 380 +++-
drivers/python/test_agtypes.py | 454 +++--
drivers/python/test_networkx.py | 2 +-
drivers/python/test_security.py | 274 +++
regress/age_load/data/bad_delim_edges.csv | 2 +
regress/age_load/data/edges_long_row.csv | 2 +
regress/age_load/data/edges_short_row.csv | 2 +
regress/age_load/data/labels_long_row.csv | 2 +
regress/expected/age_global_graph.out | 366 +++-
regress/expected/age_load.out | 57 +
regress/expected/age_reduce.out | 850 ++++++++
regress/expected/age_shortest_path.out | 1729 ++++++++++++++++
regress/expected/age_upgrade.out | 579 ++++++
regress/expected/agehash.out | 14 +
regress/expected/agtype.out | 140 +-
regress/expected/agtype_jsonb_cast.out | 261 +++
regress/expected/containment_selectivity.out | 245 +++
regress/expected/cypher_match.out | 479 ++++-
regress/expected/cypher_merge.out | 552 +++++
regress/expected/cypher_vle.out | 364 +++-
regress/expected/cypher_with.out | 337 +++-
regress/expected/direct_field_access.out | 2 +-
regress/expected/drop.out | 12 +-
regress/expected/expr.out | 1378 ++++++++++++-
regress/expected/extension_security.out | 99 +
regress/expected/generated_columns.out | 222 +++
regress/expected/list_comprehension.out | 125 +-
regress/expected/pattern_expression.out | 513 +++++
regress/expected/pgvector.out | 4 +-
regress/expected/predicate_functions.out | 641 ++++++
regress/expected/reserved_keyword_alias.out | 248 +++
regress/expected/scan.out | 41 +
regress/expected/subgraph.out | 341 ++++
regress/sql/age_global_graph.sql | 238 ++-
regress/sql/age_load.sql | 29 +
regress/sql/age_reduce.sql | 548 +++++
regress/sql/age_shortest_path.sql | 1113 +++++++++++
regress/sql/age_upgrade.sql | 546 +++++
regress/sql/agehash.sql | 9 +
regress/sql/agtype.sql | 100 +-
regress/sql/agtype_jsonb_cast.sql | 137 ++
regress/sql/containment_selectivity.sql | 156 ++
regress/sql/cypher_match.sql | 259 ++-
regress/sql/cypher_merge.sql | 299 +++
regress/sql/cypher_vle.sql | 202 +-
regress/sql/cypher_with.sql | 156 +-
regress/sql/direct_field_access.sql | 2 +-
regress/sql/drop.sql | 9 +
regress/sql/expr.sql | 466 ++++-
regress/sql/extension_security.sql | 82 +
regress/sql/generated_columns.sql | 129 ++
regress/sql/list_comprehension.sql | 28 +
regress/sql/pattern_expression.sql | 342 ++++
regress/sql/pgvector.sql | 4 +-
regress/sql/predicate_functions.sql | 383 ++++
regress/sql/reserved_keyword_alias.sql | 102 +
regress/sql/scan.sql | 21 +
regress/sql/subgraph.sql | 189 ++
sql/age_aggregate.sql | 26 +
sql/age_main.sql | 55 +-
sql/age_pg_upgrade.sql | 487 +++++
sql/age_scalar.sql | 9 +
sql/age_subgraph.sql | 294 +++
sql/agtype_coercions.sql | 27 +
sql/agtype_exists.sql | 24 +-
sql/agtype_graphid.sql | 180 +-
sql/agtype_operators.sql | 16 +-
sql/agtype_typecast.sql | 62 +-
sql/sql_files | 2 +
src/backend/age.c | 43 +
src/backend/catalog/ag_catalog.c | 222 ++-
src/backend/catalog/ag_label.c | 156 +-
src/backend/commands/label_commands.c | 62 +-
src/backend/executor/cypher_create.c | 12 +-
src/backend/executor/cypher_delete.c | 418 ++--
src/backend/executor/cypher_merge.c | 343 +++-
src/backend/executor/cypher_set.c | 292 ++-
src/backend/executor/cypher_utils.c | 115 +-
src/backend/nodes/ag_nodes.c | 8 +-
src/backend/nodes/cypher_copyfuncs.c | 28 +
src/backend/nodes/cypher_outfuncs.c | 31 +-
src/backend/nodes/cypher_readfuncs.c | 32 +
src/backend/optimizer/cypher_paths.c | 8 +
src/backend/parser/ag_scanner.l | 10 +
src/backend/parser/cypher_analyze.c | 44 +-
src/backend/parser/cypher_clause.c | 2027 +++++++++++++++++--
src/backend/parser/cypher_expr.c | 414 +++-
src/backend/parser/cypher_gram.y | 490 ++++-
src/backend/parser/cypher_transform_entity.c | 1 +
src/backend/utils/adt/age_global_graph.c | 1060 +++++++---
src/backend/utils/adt/age_graphid_ds.c | 91 +
src/backend/utils/adt/age_vle.c | 2108 ++++++++++++++++----
src/backend/utils/adt/agtype.c | 1236 ++++++++++--
src/backend/utils/adt/agtype_ext.c | 21 +-
src/backend/utils/adt/agtype_ops.c | 42 +
src/backend/utils/adt/agtype_raw.c | 28 +-
src/backend/utils/adt/agtype_util.c | 282 ++-
src/backend/utils/cache/agehash.c | 756 +++++++
src/backend/utils/load/ag_load_edges.c | 39 +
src/backend/utils/load/ag_load_labels.c | 17 +
src/include/catalog/ag_catalog.h | 2 +
src/include/catalog/ag_label.h | 2 +-
src/include/executor/cypher_utils.h | 16 +
src/include/nodes/ag_nodes.h | 6 +-
src/include/nodes/cypher_copyfuncs.h | 8 +
src/include/nodes/cypher_nodes.h | 46 +
src/include/nodes/cypher_outfuncs.h | 2 +
src/include/nodes/cypher_readfuncs.h | 6 +
src/include/parser/cypher_clause.h | 9 +
src/include/parser/cypher_expr.h | 5 +
src/include/parser/cypher_kwlist.h | 5 +
src/include/parser/cypher_transform_entity.h | 11 +
src/include/utils/age_global_graph.h | 61 +-
src/include/utils/age_graphid_ds.h | 25 +
src/include/utils/agehash.h | 216 ++
src/include/utils/agtype.h | 67 +
153 files changed, 30010 insertions(+), 3072 deletions(-)
delete mode 100644 .github/labeler.yml
delete mode 100644 .github/workflows/labeler.yml
create mode 100644 age--1.6.0--1.7.0.sql
create mode 100644 age--1.7.0--1.8.0.sql
rename age--1.7.0--y.y.y.sql => age--1.8.0--y.y.y.sql (93%)
create mode 100644 drivers/python/test_security.py
create mode 100644 regress/age_load/data/bad_delim_edges.csv
create mode 100644 regress/age_load/data/edges_long_row.csv
create mode 100644 regress/age_load/data/edges_short_row.csv
create mode 100644 regress/age_load/data/labels_long_row.csv
create mode 100644 regress/expected/age_reduce.out
create mode 100644 regress/expected/age_shortest_path.out
create mode 100644 regress/expected/age_upgrade.out
create mode 100644 regress/expected/agehash.out
create mode 100644 regress/expected/agtype_jsonb_cast.out
create mode 100644 regress/expected/containment_selectivity.out
create mode 100644 regress/expected/extension_security.out
create mode 100644 regress/expected/generated_columns.out
create mode 100644 regress/expected/pattern_expression.out
create mode 100644 regress/expected/predicate_functions.out
create mode 100644 regress/expected/reserved_keyword_alias.out
create mode 100644 regress/expected/subgraph.out
create mode 100644 regress/sql/age_reduce.sql
create mode 100644 regress/sql/age_shortest_path.sql
create mode 100644 regress/sql/age_upgrade.sql
create mode 100644 regress/sql/agehash.sql
create mode 100644 regress/sql/agtype_jsonb_cast.sql
create mode 100755 regress/sql/containment_selectivity.sql
create mode 100644 regress/sql/extension_security.sql
create mode 100644 regress/sql/generated_columns.sql
create mode 100644 regress/sql/pattern_expression.sql
create mode 100644 regress/sql/predicate_functions.sql
create mode 100755 regress/sql/reserved_keyword_alias.sql
create mode 100644 regress/sql/subgraph.sql
create mode 100644 sql/age_pg_upgrade.sql
create mode 100644 sql/age_subgraph.sql
create mode 100644 src/backend/utils/cache/agehash.c
create mode 100644 src/include/utils/agehash.h