**Neo.ClientError.Procedure.ProcedureNotFound** error on Neo4J - algorithm

I have installed Neo4J 4.1.0 on Windows 10. When I run the following command I get the error.
CALL algo.list()
ERROR
Neo.ClientError.Procedure.ProcedureNotFound
There is no procedure with the name algo.list registered for this database instance. Please ensure you've spelled the procedure name correctly and that the procedure is properly deployed.

Neo4j 4.x does not support the Graph Algorithms library.
Instead, you should be using the new Graph Data Science library. In that library, the equivalent query would be gds.list(), as in:
CALL gds.list

Related

How do I make triggers fire without error when connecting to an OpenEdge 12.2 database using JDBC?

I am connecting to an OpenEdge 12.2.0 database using the latest OpenEdge JDBC driver. The OpenEdge database is using Eclipse Temurin JDK version 11.0.14.101 and the application that connects via JDBC is using Eclipse Temurin JDK version 8.0.322.6. Both the database and the application are running on the same Windows 10 PC.
I can create triggers without issue, but when I cause a trigger to fire by updating a row via JDBC, the following exception is thrown:
java.sql.SQLException: [DataDirect][OpenEdge JDBC Driver][OpenEdge] Failed during dynamic load of Java dynamic library. Reason = [126]The specified module could not be found.
[jvm].
I did some research and found the following articles that address this issue:
https://community.progress.com/s/article/P66180
https://community.progress.com/s/article/21181
I called the sql_env script before starting the OpenEdge database and set my CLASSPATH and PATH environment variables as advised in the above articles, but my application continues to throw this exception when it causes a trigger to fire. I first tried setting my environment variables using %DLC% and then tried using the absolute path. I suspect that the above articles are outdated, as they do not include 12.x in the affected versions and the second article only has instructions for Windows NT / 2000.
Does anyone know what I need to do to prevent this exception?
I don't know what the root cause of the issue was, but it stopped throwing the exception after I reinstalled OpenEdge.

"autoKeyInfo is not initialized" when trying to batch insert into table with generated id

When I tried to upgrade my Oracle JDBC driver from ojdbc8 19.6.0.0 to ojdbc11 21.6.0.0.1 I started to receive the following exception when trying to do a batch insert with ids being generated in the database:
java.lang.AssertionError: autoKeyInfo is not initialized
I created a reproducer for this.
How can I resolve this problem?
This seems to be a bug in the later versions of the Oracle JDBC drivers.
They have the findings in the issue tracker, but I have nothing to link to since it is not public.
The recommended workaround is to use the LTS driver version, which is ojdbc 19.15.0.0.1
The reproducer is not just doing a batch update, it uses a Keyholder and tries to return the IDs generated by the database. The problem is not the generation of values, the problem is the attempt to return them.
https://docs.oracle.com/en/database/oracle/oracle-database/21/jjdbc/Oracle-extensions.html#GUID-9EC82134-1206-4325-A17B-9FA7610F0169 says "DML returning cannot be combined with batch update". "DML returning" refers to "returning into" clauses used by the driver to return values for out parameters. Looks like a conscious regression in the newer driver versions. Spring uses Keyholders to handle out parameters.
When creating the keys in the database with identity columns or triggers or with <sequence>.nextval in the SQL statement and not trying to return it the generated value, batch inserts should work.

Adding Oracle Database driver to ESB server

I am new to ESB and have the Talend Runtime installed on my local machine and am able to run it partially. By partially I mean the child job of the ESB service does everything EXCEPT for performing an insert statement to an Oracle database. The error is the following:
Exception in component tOracleConnection_1
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver cannot be found
I'm a bit confused because prior to attempting to make the Oracle connection, it makes a connection, successfully, to a Greenplum database. So, my question is how do I point the ESB job, or the child job itself to the connection driver needed for Oracle?
I've found this link https://help.talend.com/reader/AskO0G1x~W7LBNnA0laezg/qEeVYD~sI3lhozl8PjJxRA and have attempted both the "bundle" method as well as the "installing simple copy to deploy folder" with no success.
Any help will be appreciated!
Thanks.
You can copy the required jars in [talend install directory]\esb\ContainerESB\lib\ext

dataflow output to neo4j using jdbcIO vs java driver

I'm currently working on a setup that uses Google Cloud Dataflow to transform data and save into a Neo4j Database hosted on a Compute Engine VM. The current setup uses a JdbcIO to write to Neo4j by running a prepared statement, but it seems also possible to use a Neo4j driver directly in Java, which allows more flexibility on creating the query dynamically.
I wonder if anyone had compared the 2 approaches and notice any differences? I would guess the Jdbc approach would be more efficient since it only need to run the prepared statement, but that is just my guess.
Update
I'm going to post my findings as I experiment more with the two methods
One difference I found was that when using JdbcIO, I run into a deadlock when multiple transaction is trying to write to the same node at the same time. However that issue did not occur when using Neo4j driver directly.

What causes a JDBC Type 91 error?

I have a web app hosted on BEA Weblogic 10.x with an Oracle 10g database backend.
It works perfectly with one database, but when we make a clone of it and try to use a different WebLogic and Oracle instance we are getting this error:
ERROR - Problem initializing invocation tracking - disabling
tracking xxxxclass.BadTableMappingException: Database column
xxxxPeriodEnding in database yyyyyyy, table zzzzzzz has an
unknown type: JDBC Type 91.
We get it every time we do a query that involves a column of type DATE. There was no ORA-XXXX code in the message.
I can access the database using SQL*Plus using the same access and do selects and updates on the same tables with no errors.
The answer to this question is not just a simple description of what a type 91 error is (although that will help) but what could be causing this given the circumstances described above.
I am using ojdbc14.jar for JDBC on both instances of weblogic.
I have no idea about the error, but have you considered the jdbc jar version and more importantly if the oracle DB needs to be updated.
I faced very weird problems with oracle, and struggled for a while to find at the end that installing some patches for oracle would solve the problem.
Set oracle.jdbc.V8Compatible=true.
This remaps the oracle DATE type to a DATETIME time in JDBC. This parameter was missing on the new Weblogic server.

Resources