Maybe this [1]? Perhaps you have to call unwrap() yourself in this case. IIRC you don't have access to the DataSource but you can check it directly on the connection.
Regards, Matt [1] https://stackoverflow.com/questions/36986653/cast-java-sql-connection-to-pgconnection On Thu, Aug 31, 2023 at 8:15 PM [email protected] <[email protected]> wrote: > > Mark & Matt, > > Thanks for the quick help. I really appreciate it. > > PGvector.addVectorType(con) returns the following: > *java.sql.SQLException: Cannot unwrap to org.postgresql.PGConnection* > > Could this be a connection pool issue? > > Interestingly, I didn't call addVectorType() at all in my test java code > and it still works?! > I'll have to check again ... maybe I'm not seeing it correctly anymore. > It is already 2:05 a.m. here. > > > Regards, > Uwe > > > java.sql.SQLException: Cannot unwrap to org.postgresql.PGConnection > > On 31.08.23 18:53, Matt Burgess wrote: > > This means the JDBC driver you're using does not support the use of > > the two-argument setObject() call when the object is a PGVector. Did > > you register the Vector type by calling: > > > > PGvector.addVectorType(conn); > > > > The documentation [1] says that the two-argument setObject() should > > work if you have registered the Vector type. > > > > Regards, > > Matt > > > > [1]https://github.com/pgvector/pgvector-java > > > > On Thu, Aug 31, 2023 at 12:01 PM Mark Payne<[email protected]> wrote: > >> Hey Uwe, > >> > >> The DBCPConnectionPool returns a java.sql.Connection. From that you’d > >> create a Statement. So I’m a little confused when you say that you’ve got > >> it working in Pure JDBC but not with NiFi, as the class returned IS pure > >> JDBC. Perhaps you can share a code snippet of what you’re doing in the > >> “Pure JDBC” route that is working versus what you’re doing in the NiFi > >> processor that’s not working? > >> > >> Thanks > >> -Mark > >> > >> > >>> On Aug 31, 2023, at 10:58 AM,[email protected] wrote: > >>> > >>> Hi, > >>> > >>> I am currently writing a processor to write OpenAI embeddings to Postgres. > >>> I am using DBCPConnectionPool for this. > >>> I use Maven to integrate PGVector (https://github.com/pgvector/pgvector). > >>> > >>> With pure JDBC this works fine. With the database classes from NiFi I get > >>> the error: > >>> *Cannot infer the SQL type to use for an instance of > >>> com.pgvector.PGvector. Use setObject() with an explicit Types value to > >>> specify the type to use.* > >>> > >>> I use -> setObject (5, new PGvector(embeddingArray)). > >>> embeddingArray is defined as: float[] embeddingArray > >>> > >>> Of course I know why I get the error from NiFi and not from the JDBC > >>> driver, but unfortunately this knowledge does not help me. > >>> > >>> Can anyone tell me what SQLType I need to specify for this? > >>> I have searched the internet and the NiFi sources on GitHub for several > >>> hours now and have found nothing. > >>> > >>> One option would be to use native JDBC and ignore the ConnectionPool. But > >>> that would be a very bad style in my opinion. > >>> Perhaps there is a better solution? > >>> > >>> Any help, especially from Matt B., is appreciated as I'm at a loss. > >>> Thanks guys.
