This is an automated email from the ASF dual-hosted git repository.
MuhammadTahaNaveed pushed a change to branch PG15
in repository https://gitbox.apache.org/repos/asf/age.git
from fa1af8de Add upgrade warning to RELEASE (#2250)
add a16d0a47 Implement Returnless Unions in Subqueries (#1803)
add a829b901 Make CALL YIELD grammar more precise (#1852)
add 443b55dc Backport Datum and node compatibility fixes for PostgreSQL 15
add 8d582ad7 Fix issue with CALL/YIELD for user defined and qualified
functions. (#2217)
add af785027 Bump gopkg.in/yaml.v3 from 3.0.0 to 3.0.1 in /drivers/golang
(#2212)
add bd1cb77a Add fast functions for checking edge uniqueness (#2227)
add aaced954 Fix issue 2243 - Regression in string concatenation (#2244)
add 5bf85046 Fix issue 2245 - Creating more than 41 vlabels causes crash
in drop_graph (#2248)
add 2c14f045 Add index on id columns (#2117)
add 7963ac2d Fix Issue 2256: segmentation fault when calling coalesce
function (#2259)
add 01c38b0b Adjust 'could not find rte for' ERROR message (#2266)
add 6699911d Fix possible memory and file descriptors leaks (#2258)
add 58cc572c Fix ORDER BY alias resolution with AS in Cypher queries
(#2269)
add 9642a4ad Update grammar file for maintainability (#2270)
add 3804fe96 Convert string to raw string to remove invalid escape
sequence warning (#2267)
add ed04be3c Migrate python driver configuration to pyproject.toml (#2272)
add 3425d42a Restrict age_load commands (#2274)
add 89586ca4 Makefile: fix race condition on cypher_gram_def.h (#2273)
add 951cd8da Revise README for Python driver updates (#2298)
add 87c68b10 Fix Issue 2289: handle empty list in IN expression (#2294)
add 0033834b Fix and improve index.sql regression test coverage (#2300)
add c5e83d65 Fix and improve index.sql addendum (#2301)
add dac924dd feat: Add 32-bit platform support for graphid type (#2286)
add 6d3b3f13 Optimize vertex/edge field access with direct array indexing
(#2302)
add baecf66f Upgrade Jest to v29 for node: protocol compatibility (#2307)
add 9836e9f9 Fix Issue 1884: Ambiguous column reference (#2306)
add dd5f59e2 Replace libcsv with pg COPY for csv loading (#2310)
add 7657c7c8 Add RLS support and fix permission checks (#2309)
add 87e4b139 Backport index ownership and header fixes for PostgreSQL 15
(#2315)
add caf8261a Fix upgrade script for 1.6.0 to 1.7.0 (#2320)
add fd451f40 Advance master branch to Apache AGE version 1.7.0 (#2316)
add 85de14c7 Add pg_upgrade support functions for PostgreSQL (#2326)
add 7169cc71 Fix JDBC driver CI test failures (#2333)
add 84df17b8 Update python-driver security and formatting (#2330)
add edb93e80 Fix security vulnerabilities in Node.js driver (#2329)
add f6be1ef0 Fix null pointer handling in array iteration (#2313)
add 3a25687d Fix ISO C90 forbids mixed declarations and code warning
(#2334)
add 423dddf8 Remove labeler github action (#2335)
add ce6480b9 fix incorrect variable assignment (#2336)
add 71bd6c80 Fix VLE NULL handling for chained OPTIONAL MATCH (#2337)
add cd004bb0 Fix VLE queries failing on read-only replicas (#2160) (#2345)
add b463644a Fix chained MERGE not seeing sibling MERGE's changes (#1446)
(#2344)
add 91ff5ecb Fix MATCH after CREATE returning 0 rows (issue #2308) (#2340)
add 183264d5 Support doubled-quote escaping in Cypher string literals
(issue #2222) (#2342)
add 71162b9f Fix entity_exists() CID visibility for CREATE + WITH + MERGE
(#2343)
add aa9825b3 Fix crash in PREPARE with property parameter when
enable_containment is off (#2339)
add 8a99d913 Add extension upgrade template regression test (#2364)
add 4e8d1d58 Fix nondeterministic age_global_graph regression test (#2365)
add 25bac2a4 Fix MATCH on brand-new label after CREATE returning 0 rows
(#2341)
add 147613f1 Add index scan (#2351)
add beebd3c6 Add missing include for PR: Add index scan (#2351) (#2379)
add c74e0580 Improve extension upgrade regression test (addendum to #2364)
(#2377)
add 595fda3c Fix upgrade test: build default install SQL from HEAD, not
initial commit (#2397)
add cfb5d084 Python driver: Add `skip_load` parameter to skip `LOAD 'age'`
statement (#2366)
add ed59e5ee Fix OPTIONAL MATCH dropping null-preserving rows with
subquery WHERE (#2380)
add d53a3b71 Implement predicate functions: all(), any(), none(), single()
(#2359)
add ced3c5a8 fix(python-driver): quote-escape column aliases in
buildCypher() (#2373)
add 33436e80 Fix substring() crash when start-offset is NULL and length is
supplied (#2401)
add 7300f57b Return an empty list from tail() for empty and singleton
lists (#2399)
add 09dd54ec fix(python-driver): add null-guards in ANTLR parser and relax
runtime version pin (#2372)
add e9864f7e CI: fail build on compiler and bison warnings (#2398)
add eedf91f8 VLE cache + performance improvements (#2376)
add 7215d3f5 Propagate null in agtype_access_slice bounds (#2400)
add 75d8b2af Add MERGE ON CREATE SET / ON MATCH SET support (#2347)
add 9a3ee803 Fix property access on list comprehension / predicate loop
variables (#2402)
add 9e687130 Add VLE semantics and cost model design note (#2349) (#2413)
add d32ed928 Update README.md (#2414)
add 02bd7a69 Propagate null through agtype arithmetic operators (#2405)
add e8958482 Allow safe Cypher reserved keywords in alias positions
(#2355) (#2415)
add 7d70ce03 Fix upgrade test: replace data-integrity checks with catalog
comparison (#2403)
add 57e6b2c3 Zero-initialize parent_cpstate in analyze_cypher (#2423)
add a6a5fd08 Fix upgrade test: allow function removal (#2422)
add 5d366a47 feat(python-driver): add public API for connection pooling
and model dict conversion (#2374)
add 27f6978c Add agtype <-> jsonb bidirectional casts (#350) (#2361)
add 81898f43 perf: VLE terminal-qual rewrite (#2420)
add 0b0f55d8 Add vertex and edge composite types with direct field access
optimization (#2303)
add e172e07d perf(agtype): arena passthrough + binary-direct id extraction
(#2424)
add ddb04cac python driver: preserve trailing quotes in agtype string
values (#2425)
add 018d5d9d perf: VLE hash-adjacency overhaul — agehash + flat-array
VertexEdgeArray (#2421)
add c3105cf1 Restore contsel/contjoinsel for containment & key-existence
operators (#2356) (#2417)
add c51bb0ef fix: remove pthread_mutex that causes self-deadlock on VLE
queries (#2433)
add f1c9b82f Fix VLE [*0..N] zero-hop self-binding when edge label is
missing (#2382) (#2419)
add d81c74aa Fix locale-dependent string comparison in direct_field_access
test (#2439)
add 26e41efd Make age extension usable from shared_preload_libraries
(#2438)
add 4a7d5c0a feature: add create_subgraph() (#2441)
add c05cdc16 cypher_vle: add ORDER BY to non-deterministic RETURN queries
(#2434)
add 7b0d9453 age_global_graph: stabilize regression tests (#2431)
add db6b4d35 Makefile: add installcheck-existing target and improve
readability (#2437)
add ac4e6338 Make ag_catalog ownership and built-in resolution explicit
(#2440)
add ac620ae7 cypher_with: add ORDER BY to non-deterministic RETURN queries
(#2436)
add 9b6b0eb5 Add shortest_path / all_shortest_paths SRFs (#2430)
add f19968ec Support pattern expressions as boolean expressions (#2360)
add be34e14f Add reduce() list folding function (#2435)
add f9bd068d resolve subgraph staging sequences via regclass (#2446)
add 481b54a4 Support relationship-type filters and a minimum hop count
(#2442)
add 8f2aff3b Fix single-node labeled pattern expressions not filtering by
label (#2443) (#2444)
add c65273ec Preserve null-valued keys in map literals (#2391) (#2412)
add b7a62e84 Fix Node.js driver CI build broken by @types/node drift
(#2452)
add 27145a07 Fix stack overflow and precision loss in toFloatList()
conversion (#2451)
add 76fa372e Support outer references in reduce() fold bodies (#2448)
add 736b07b1 Fix segfault and out-of-bounds reads in file loaders on
malformed rows (#2453)
add 71b6a7d5 ci: pin Build/Regression runner to ubuntu-24.04 and guard
Bison version for GLR grammar (#2445)
add 7c123f6c Add automatic header-dependency tracking to the Makefile
(#2454)
add 892b466c Propagate null through unnest and single() three-valued logic
(#2406)
add a28dc9dd Fix segfault on CREATE/MERGE/SET with generated or extra
label columns (#2458)
add c9c9ef87 Fix installcheck fetch-depth parameter to 100 (#2461)
add 88646eb7 Advance master branch to Apache AGE version 1.8.0 (#2455)
No new revisions were added by this update.
Summary of changes:
.github/labeler.yml | 17 -
.github/workflows/installcheck.yaml | 34 +-
.github/workflows/labeler.yml | 30 -
.github/workflows/nodejs-driver.yaml | 4 +-
.github/workflows/python-driver.yaml | 9 +-
.gitignore | 4 +
META.json | 10 +-
Makefile | 314 ++-
README.md | 114 +-
RELEASE | 206 +-
age--1.6.0--1.8.0.sql | 1238 ++++++++++
age--1.6.0--y.y.y.sql => age--1.8.0--y.y.y.sql | 4 +-
age.control | 2 +-
docker/Dockerfile | 2 +-
drivers/golang/go.mod | 2 +-
drivers/golang/go.sum | 10 +-
drivers/jdbc/lib/build.gradle.kts | 6 +-
.../org/apache/age/jdbc/BaseDockerizedTest.java | 19 +-
drivers/nodejs/package.json | 11 +-
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 | 33 +-
drivers/python/age/VERSION.py | 44 +-
drivers/python/age/__init__.py | 81 +-
drivers/python/age/age.py | 692 ++++--
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 | 53 +
drivers/python/requirements.txt | Bin 174 -> 64 bytes
drivers/python/setup.py | 62 +-
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 | 304 ++-
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 | 241 +-
regress/expected/agtype_jsonb_cast.out | 261 +++
regress/expected/catalog.out | 141 +-
regress/expected/containment_selectivity.out | 245 ++
regress/expected/cypher.out | 16 +
regress/expected/cypher_call.out | 54 +
regress/expected/cypher_match.out | 573 ++++-
regress/expected/cypher_merge.out | 554 ++++-
regress/expected/cypher_set.out | 266 +++
regress/expected/cypher_subquery.out | 169 +-
regress/expected/cypher_union.out | 1 +
regress/expected/cypher_vle.out | 366 ++-
regress/expected/cypher_with.out | 341 ++-
regress/expected/direct_field_access.out | 535 +++++
regress/expected/drop.out | 12 +-
regress/expected/expr.out | 1637 +++++++++++++-
regress/expected/extension_security.out | 99 +
regress/expected/generated_columns.out | 222 ++
regress/expected/graph_generation.out | 20 +-
regress/expected/index.out | 421 +++-
regress/expected/list_comprehension.out | 127 +-
regress/expected/map_projection.out | 2 +-
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 | 47 +
regress/expected/security.out | 1657 ++++++++++++++
regress/expected/subgraph.out | 341 +++
regress/sql/age_global_graph.sql | 238 +-
regress/sql/age_load.sql | 198 +-
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 | 147 +-
regress/sql/agtype_jsonb_cast.sql | 137 ++
regress/sql/catalog.sql | 42 +-
regress/sql/containment_selectivity.sql | 156 ++
regress/sql/cypher.sql | 7 +
regress/sql/cypher_call.sql | 25 +
regress/sql/cypher_match.sql | 259 ++-
regress/sql/cypher_merge.sql | 299 +++
regress/sql/cypher_set.sql | 164 ++
regress/sql/cypher_subquery.sql | 17 +-
regress/sql/cypher_vle.sql | 202 +-
regress/sql/cypher_with.sql | 156 +-
regress/sql/direct_field_access.sql | 319 +++
regress/sql/drop.sql | 9 +
regress/sql/expr.sql | 546 ++++-
regress/sql/extension_security.sql | 82 +
regress/sql/generated_columns.sql | 129 ++
regress/sql/index.sql | 222 +-
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/security.sql | 1451 ++++++++++++
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 | 201 +-
sql/agtype_operators.sql | 16 +-
sql/agtype_typecast.sql | 62 +-
sql/sql_files | 2 +
src/backend/age.c | 44 +
src/backend/catalog/ag_catalog.c | 222 +-
src/backend/catalog/ag_label.c | 157 +-
src/backend/commands/label_commands.c | 138 +-
src/backend/executor/cypher_create.c | 25 +-
src/backend/executor/cypher_delete.c | 430 +++-
src/backend/executor/cypher_merge.c | 354 ++-
src/backend/executor/cypher_set.c | 366 ++-
src/backend/executor/cypher_utils.c | 923 +++++++-
src/backend/nodes/ag_nodes.c | 8 +-
src/backend/nodes/cypher_copyfuncs.c | 28 +
src/backend/nodes/cypher_outfuncs.c | 40 +-
src/backend/nodes/cypher_readfuncs.c | 57 +-
src/backend/optimizer/cypher_paths.c | 8 +
src/backend/parser/ag_scanner.l | 10 +
src/backend/parser/cypher_analyze.c | 68 +-
src/backend/parser/cypher_clause.c | 2368 ++++++++++++++++++--
src/backend/parser/cypher_expr.c | 465 +++-
src/backend/parser/cypher_gram.y | 913 +++++---
src/backend/parser/cypher_parse_agg.c | 33 +-
src/backend/parser/cypher_transform_entity.c | 1 +
src/backend/utils/adt/age_global_graph.c | 1069 ++++++---
src/backend/utils/adt/age_graphid_ds.c | 91 +
src/backend/utils/adt/age_vle.c | 2157 ++++++++++++++----
src/backend/utils/adt/agtype.c | 1434 ++++++++++--
src/backend/utils/adt/agtype_ext.c | 29 +-
src/backend/utils/adt/agtype_ops.c | 46 +-
src/backend/utils/adt/agtype_raw.c | 28 +-
src/backend/utils/adt/agtype_util.c | 497 +++-
src/backend/utils/cache/ag_cache.c | 174 +-
src/backend/utils/cache/agehash.c | 756 +++++++
src/backend/utils/load/ag_load_edges.c | 489 ++--
src/backend/utils/load/ag_load_labels.c | 586 ++---
src/backend/utils/load/age_load.c | 475 +++-
src/backend/utils/load/libcsv.c | 549 -----
src/include/catalog/ag_catalog.h | 2 +
src/include/catalog/ag_label.h | 2 +-
src/include/executor/cypher_utils.h | 38 +
src/include/nodes/ag_nodes.h | 9 +-
src/include/nodes/cypher_copyfuncs.h | 8 +
src/include/nodes/cypher_nodes.h | 47 +
src/include/nodes/cypher_outfuncs.h | 2 +
src/include/nodes/cypher_readfuncs.h | 6 +
src/include/optimizer/cypher_createplan.h | 7 +
src/include/optimizer/cypher_pathnode.h | 7 +
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 | 171 ++
src/include/utils/load/ag_load_edges.h | 52 +-
src/include/utils/load/ag_load_labels.h | 55 +-
src/include/utils/load/age_load.h | 41 +-
src/include/utils/load/csv.h | 108 -
tools/gen_keywordlist.pl | 1 +
182 files changed, 39559 insertions(+), 5266 deletions(-)
delete mode 100644 .github/labeler.yml
delete mode 100644 .github/workflows/labeler.yml
create mode 100644 age--1.6.0--1.8.0.sql
rename age--1.6.0--y.y.y.sql => age--1.8.0--y.y.y.sql (93%)
create mode 100644 drivers/python/pyproject.toml
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/direct_field_access.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/security.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/direct_field_access.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/security.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
delete mode 100644 src/backend/utils/load/libcsv.c
create mode 100644 src/include/utils/agehash.h
delete mode 100644 src/include/utils/load/csv.h