Adalennis opened a new pull request, #9200:
URL: https://github.com/apache/hop/pull/9200
Addresses #8970
Thirteenth batch: a Result section on the pages of Check graph database
connections, Graph script, Graph index, Graph constraint and Create property
graph.
Every row comes from a hop-run test against the current code (103 workflows:
Neo4j 2026.09 Community in Docker, reset before each test and queried
afterwards for nodes, indexes and constraints; Oracle AI Database 26ai Free in
Docker for Create property graph, reset before each test; PostgreSQL as a
database without SQL/PGQ). The October 21 snapshot has no graph plugins, so the
tests ran on that snapshot with the Neo4j plugin compiled from upstream/main
(no changes to the plugin or to core graph code since, apart from #9080 which
doesn't touch Neo4j). Both a Neo4j connection and a graph database connection
of type Neo4j were used; Memgraph, FalkorDB, Apache AGE and Neptune were not
tested. Each action was also run after an action that is true with 2 errors and
after a false action on an unconditional hop (all pass on true with 0 errors),
and with a previous result holding files and rows. What the tests show:
- Graph index and Graph constraint are never false: every failure throws out
of execute() and stops the workflow, no hop is followed (empty, unknown or
unreachable connection, missing Update type, Constraint name or Vector
dimensions, or a statement the database refuses: NOT_NULL and NODE_KEY on
Community Edition, duplicate values for UNIQUE, vector dimensions above 4096).
The updates before the failing one stay done, the ones after it are not run.
Drops run before creates.
- Creates use IF NOT EXISTS and drops IF EXISTS: an index or constraint with
the same name on another label or property, or an equivalent one with another
name, means nothing is created and the action is true. Documented as a NOTE.
- Graph script: an empty, unknown or unreachable connection or a refused
login stops the workflow; a failing statement gives false with 1 error. A
semicolon at the end of a line instead of on a new line sends two statements as
one ("Expected exactly one statement per query"), and on Neo4j schema and data
statements in one script fail in either order. The transaction behaviour
described on the page was confirmed, including CALL { } IN TRANSACTIONS. A
query that returns rows is true and its rows are not passed on.
- Check graph database connections checks every connection and counts one
error per failed connection (unknown or empty name, unreachable server, refused
login).
- Create property graph: an empty or unknown relational connection stops the
workflow (loadDatabaseMeta runs outside the try); everything else gives false
with 1 error (empty or unquotable graph name, unknown graph model, unreachable
database, no SQL/PGQ support, unknown schema, missing table without Create
missing tables?, existing graph without Replace an existing graph?). The tables
are created before the graph: on PostgreSQL the tables stayed after CREATE
PROPERTY GRAPH failed.
Also fixed:
- Graph script: the example used the Neo4j 3 index syntax (CREATE INDEX ...
on :Company(id)) and failed on current Neo4j; replaced by CREATE INDEX ... IF
NOT EXISTS FOR (n:Person) ON (n.name), tested. The source block had the
statement as its language. The description now says the connection exceptions
don't give a false result.
- Labels: Graph database connection, Cypher Script, Replace variables in
script? (Graph script); Type of object to put constraint on, Object property
(Graph constraint); Properties (, separated) (Graph index).
Found while testing (not reported yet): Graph index and Graph constraint
stopping the workflow instead of being false, Graph script and Create property
graph stopping on connection problems, and Create property graph leaving the
tables when the graph statement fails.
------------------------
Thank you for your contribution! Follow this checklist to help us
incorporate your contribution quickly and easily:
- [x] Run `mvn clean install apache-rat:check` to make sure basic checks
pass. A more thorough check will be performed on your pull request
automatically.
- [x] If you have a group of commits related to the same change, please
squash your commits into one and force push your branch using `git rebase -i`.
- [x] Mention the appropriate issue in your description (for example:
`addresses #123`), if applicable.
To make clear that you license your contribution under the [Apache License
Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0)
you have to acknowledge this by using the following check-box.
- [x] I hereby declare this contribution to be licensed under the [Apache
License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0)
- [ ] In any other case, please file an [Apache Individual Contributor
License Agreement](https://www.apache.org/licenses/icla.pdf).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]