Несовместимая ошибка типа фабрики в функции преобразования Vertica UDF с использованием Java SDK - PullRequest
0 голосов
/ 02 октября 2018

Я могу создать библиотеку, но затем при попытке создать функцию получаю исключение:

CREATE FUNCTION java_dvp AS LANGUAGE 'Java' NAME 'my.package.DVP' LIBRARY dvpLibrary;

Журнал ошибок

[2018-10-02 16:18:38] [42V13][4746] [Vertica][VJDBC](4746) ROLLBACK: Setting up function "java_dvp" failed
[2018-10-02 16:18:38] [Vertica][VJDBC]Detail: [Incompatible factory type]
[2018-10-02 16:18:38] java.lang.RuntimeException: com.vertica.support.exceptions.SyntaxErrorException: [Vertica][VJDBC](4746) ROLLBACK: Setting up function "java_dvp" failed
[2018-10-02 16:18:38] [Vertica][VJDBC]Detail: [Incompatible factory type]
[2018-10-02 16:18:38]   at com.vertica.util.ServerErrorData.buildException(Unknown Source)
[2018-10-02 16:18:38]   at com.vertica.dataengine.VQueryExecutor.executeSimpleProtocol(Unknown Source)
[2018-10-02 16:18:38]   at com.vertica.dataengine.VQueryExecutor.execute(Unknown Source)
[2018-10-02 16:18:38]   at com.vertica.jdbc.common.SStatement.executeNoParams(Unknown Source)
[2018-10-02 16:18:38]   at com.vertica.jdbc.common.SStatement.execute(Unknown Source)
[2018-10-02 16:18:38]   at com.intellij.database.remote.jdbc.impl.RemoteStatementImpl.execute(RemoteStatementImpl.java:71)
[2018-10-02 16:18:38]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2018-10-02 16:18:38]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[2018-10-02 16:18:38]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2018-10-02 16:18:38]   at java.lang.reflect.Method.invoke(Method.java:498)
[2018-10-02 16:18:38]   at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
[2018-10-02 16:18:38]   at sun.rmi.transport.Transport$1.run(Transport.java:200)
[2018-10-02 16:18:38]   at sun.rmi.transport.Transport$1.run(Transport.java:197)
[2018-10-02 16:18:38]   at java.security.AccessController.doPrivileged(Native Method)
[2018-10-02 16:18:38]   at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
[2018-10-02 16:18:38]   at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
[2018-10-02 16:18:38]   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
[2018-10-02 16:18:38]   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
[2018-10-02 16:18:38]   at java.security.AccessController.doPrivileged(Native Method)
[2018-10-02 16:18:38]   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
[2018-10-02 16:18:38]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[2018-10-02 16:18:38]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[2018-10-02 16:18:38]   at java.lang.Thread.run(Thread.java:745) (no stack trace)

Это мой источниккод

public class DVP extends TransformFunctionFactory {

    @Override
    public TransformFunction createTransformFunction(ServerInterface serverInterface) {
        return new TransformFunction() {
            @Override
            public void processPartition(ServerInterface serverInterface, PartitionReader partitionReader,
                                         PartitionWriter partitionWriter) throws UdfException, DestroyInvocation {
                int numCols = partitionReader.getNumCols();
                do {
                    // do staff
                } while (!isCanceled() && partitionReader.next());
            }
        };
    }

    @Override
    public void getPrototype(ServerInterface serverInterface, ColumnTypes argTypes, ColumnTypes returnTypes) {
        argTypes.addAny();
        returnTypes.addAny();
    }

    @Override
    public void getReturnType(ServerInterface srvInterface, SizedColumnTypes argTypes, SizedColumnTypes returnType) throws UdfException {
        returnType.addVarchar(1024 * 10, "key");
    }
}
...