UDx Library Compatibility with New Server Versions

The Vertica SDK defines an application programming interface (API) that UDxs use to interact with the database. When developers compile their UDx code, it is linked to the SDK code to form a library. This library is only compatible with Vertica servers that support the version of the SDK API used to compile the code. The library and servers that share the same API version are compatible on a binary level (referred to as "binary compatible"). 

The Vertica server returns an error message if you attempt to load a library that is not binary compatible with it. Similarly, if you upgrade your Vertica server to a version that supports a new SDK API, any existing UDx that relies on newly-incompatible libraries returns an error messages when you call it:

ERROR 2858:  Could not find function definition
HINT:  
This usually happens due to missing or corrupt libraries, libraries built 
with the wrong SDK version, or due to a concurrent session dropping the library 
or function. Try recreating the library and function

To resolve this issue, you must install UDx libraries that have been recompiled with correct version of the SDK.

New versions of the Vertica server do not always change the SDK API version. The SDK API version changes whenever OpenText changes the components that make up the SDK. If the SDK API does not change in a new version of the server, then the old libraries remain compatible with the new server.

The SDK API almost always changes in Vertica releases (major, minor, service pack) as OpenText expands the SDK's features. Vertica will never change the API in a hotfix patch.

These policies mean that you must update UDx libraries when you upgrade between major versions. For example, if you upgrade from version 9.2 to 9.3, you must update your UDx libraries.

Since the R language is interpreted, a UDx written in R is not linked to the Vertica SDK. There is no binary compatibility that has to be maintained from one version to another. Therefore, changes to the Vertica SDK between Vertica versions do not make your R-based UDx libraries incompatible with a new server version. An R-based UDx only becomes incompatible if the APIs uses in the SDK actually change. For example, if the number of arguments to an API call changes, the UDx written in R has to be changed to use the new number of arguments.

Pre-Upgrade Steps

Before upgrading your Vertica server, consider whether you have any UDx libraries that may be incompatible with the new version. Consult the release notes of the new server version to determine whether the SDK API has changed between the version of Vertica server you currently have installed and the new version. As mentioned previously, only upgrades from a previous major version or from the initial release of a major version to a service pack release can cause your currently-loaded UDx libraries to become incompatible with the server.

Any UDx libraries that are incompatible with the new version of the Vertica server must be recompiled. If you got the UDx library from a third party (such as through the Vertica Marketplace), you need to see if a new version has been released. If so, download the UDx library and deploy it after you have upgraded the server (see Deploying A New Version of Your UDx Library).

If you developed the UDx yourself (or if whoever developed it supplied the UDx's source code) you must:

  1. Recompile your UDx library using the new version of the Vertica SDK. See Compiling Your C++ Library or Compiling and Packaging a Java Library for more information.
  2. Deploy the new version of your library. See Deploying A New Version of Your UDx Library.