Skip to main content

ArpeNetezza — Licensing

ArpeNetezza is a proprietary Arpeio driver. Its release binaries validate an Arpeio licence when a database is initialised, and again at every connection. This page covers supplying your licence: where to put it and how to check it. To obtain a licence, contact sales@arpe.io or see https://www.arpe.io.

Version

The licence check is enforced in release binaries since ArpeNetezza v0.3.4. Earlier releases did not check a licence. Upgrading from one of them requires a licence.

The same licence mechanism and the shared ARPEIO_ADBC_* environment variables are used by every driver in the family, so one licence setup carries across them.


Where the driver looks for a licence​

At AdbcDatabaseInit the driver resolves a licence from the following sources, in order. The first source that is present wins:

  1. arpeio.adbc.license: ADBC database option, the licence blob inline.
  2. arpeio.adbc.license_file: ADBC database option, path to a .lic file.
  3. ARPEIO_ADBC_LICENCE: environment variable, the licence blob inline.
  4. ARPEIO_ADBC_LICENCE_FILE: environment variable, path to a .lic file.
  5. arpeio_adbc.lic: a file placed next to the driver library (libarpenz_adbc_driver-linux-x64.so / arpenz_adbc_driver-win-x64.dll).

Note the British spelling LICENCE in the environment-variable names.

If none of these yields a valid licence, AdbcDatabaseInit fails with UNAUTHORIZED (INVALID_ARGUMENT for a malformed licence or a missing licence file). The message names an ARROW_LIC_* code; see Troubleshooting. The same check runs again at every AdbcConnectionInit, before any network I/O. A licence that expires, or a licence file removed while the process runs, therefore stops new connections. The licence is an ECDSA P-256 / SHA-256 signed token. It must name ArpeNetezza, or the whole driver family.


Supplying it yourself​

As an ADBC option (keeps it out of the environment):

Python
import adbc_driver_manager.dbapi as dbapi

conn = dbapi.connect(driver="arpenz", db_kwargs={
"adbc.arpenz.server": "nzhost",
"adbc.arpenz.database": "SYSTEM",
"adbc.arpenz.username": "admin",
"adbc.arpenz.password": "<pw>",
"arpeio.adbc.license_file": "/etc/arpeio/arpeio_adbc.lic",
})

As an environment variable (one setting for every Arpeio driver in the process):

export ARPEIO_ADBC_LICENCE_FILE=/etc/arpeio/arpeio_adbc.lic
# or the blob inline:
export ARPEIO_ADBC_LICENCE="$(cat /etc/arpeio/arpeio_adbc.lic)"

A file next to the library. Drop arpeio_adbc.lic in the same directory as the loaded .so/.dll (source #5). No option or environment variable is then needed at runtime.


Checking the licence state​

Read the current state with the read-only arpeio.adbc.license.status database option (via GetOption). It never fails and never opens a connection:

<state>;code=<ARROW_LIC_*>;tier=<tier>;expires=<epoch>

The value reports the state (valid, grace, expired, none or invalid), the result code, the licence tier, and the expiry as a Unix epoch.

A licence past its expiry date but still inside its grace period keeps working. The driver prints a warning to standard error once, at AdbcDatabaseInit, with the expiry date and the days left. Once the grace period ends, connections fail.


Troubleshooting​

ArpeNetezza licence check failed [ARROW_LIC_…]: … (source: …). None of the five sources above yielded a valid licence, or the licence has expired or does not cover ArpeNetezza (the message then lists the drivers it covers).

  • Confirm the file exists and is readable at the path you configured.
  • If you rely on the file-next-to-the-library fallback, confirm arpeio_adbc.lic really sits in the same directory as the loaded .so/.dll. It must be the loaded copy; a stale copy elsewhere on the path won't count.
  • Check expiry and tier via arpeio.adbc.license.status.
  • Contact sales@arpe.io for a renewal or a licence covering additional drivers.

See also​