Skip to main content

ArpeNetezza — Connection guide

Everything you can put in front of ArpeNetezza to point it at a Netezza database, in one place: the three ways to supply connection details, every option the driver accepts, and the Netezza-specific rules (default port 5480, TLS negotiation in the HSV2 handshake, NPS 7 TLS versions).

For how authentication and TLS work, see Authentication. For the licence, see Licensing.

Connections open lazily

AdbcConnectionInit does not touch the network. The socket, TLS handshake and login happen at the first statement or metadata call. So a wrong host, port, password or TLS setting is reported by that first call, not by connect().


Three ways to connect​

Every driver in the Arpeio family accepts the same three connection forms. They can be mixed; a discrete option always wins over the same field taken from a connection_string or a uri, regardless of the order they are set.

FormOption keyGrammarBest for
Discrete optionsadbc.arpenz.<field>one option per fieldprogrammatic clients, secrets kept out of a single string
Connection stringadbc.arpenz.connection_stringADO.NET Key=Value;…pasting an existing string
Connection URIurinetezza://… URLportable tooling
Python
import adbc_driver_manager.dbapi as dbapi

# Discrete options
conn = dbapi.connect(driver="arpenz", db_kwargs={
"adbc.arpenz.server": "nzhost",
"adbc.arpenz.port": "5480",
"adbc.arpenz.database": "SYSTEM",
"adbc.arpenz.username": "admin",
"adbc.arpenz.password": "<pw>",
})

# Connection string (ADO.NET keywords)
conn = dbapi.connect(driver="arpenz", db_kwargs={
"adbc.arpenz.connection_string":
"Server=nzhost,5480;Database=SYSTEM;User ID=admin;Password=<pw>",
})

# Connection URI
conn = dbapi.connect(driver="arpenz", db_kwargs={
"uri": "netezza://admin:<pw>@nzhost:5480/SYSTEM?sslmode=verify-full",
})

Precedence is per field. A field parsed from connection_string or uri is applied only if no discrete adbc.arpenz.* option set it. If both a connection_string and a uri set the same field, the one set last wins; avoid giving both.


Option reference​

All options are string-typed and live under the adbc.arpenz.* namespace. Set them as ADBC database options before the database is initialised. An unknown key is rejected (NOT_IMPLEMENTED, "Unknown database option"). Statement and ingest options are set on the statement; see Statement & ingest options.

Target: where to connect​

OptionDefaultMeaning
adbc.arpenz.server (alias hostname)localhostHost name or IP.
adbc.arpenz.port (alias port)5480TCP port, 1..65535.
adbc.arpenz.database (alias database)—Netezza database to connect to, e.g. SYSTEM. There is no default: set it.
adbc.arpenz.application_name (alias application_name)arpenetezzaApplication name reported to the server. It is sent only when the server negotiates handshake protocol v4 or v6 (the fields Guardium reads), which includes NPS 11.

Authentication​

Full detail is in Authentication.

OptionValuesMeaning
adbc.arpenz.username / .password (aliases username / password)stringNetezza credentials. The server chooses how the password is sent: cleartext, MD5 or SHA-256 digest.
adbc.arpenz.require_password_encryptiontrue / false (default)Refuse to send any password reply unless the connection is TLS-encrypted.
adbc.arpenz.trusted, adbc.arpenz.auth_type, adbc.arpenz.krb5.*—Integrated authentication (Kerberos / SSPI). Accepted as options, but refused at connect: Netezza integrated authentication is not supported.

Encryption / TLS​

OptionDefaultMeaning
adbc.arpenz.sslmodepreferdisable / prefer / require / verify-ca / verify-full. See the table below. allow and any other value are rejected.
adbc.arpenz.ssl_root_cert—PEM CA file for verify-ca / verify-full. Unset: OpenSSL's default locations, which hold no CAs on RHEL and Windows (details).
adbc.arpenz.tls_min_version (alias tls_min_version)from sslmodeMinimum TLS version: 1.0, 1.1, 1.2 or 1.3 (a TLS / TLSv prefix is accepted, TLSv1 means 1.0). Since v0.3.2.
adbc.arpenz.encrypt / adbc.arpenz.trust_server_certfalse / trueOlder on/off switches, used only when sslmode is not set: encrypt=true means require, or verify-full with trust_server_cert=false. Prefer sslmode.
sslmodeEncryptsVerifies the serverDefault minimum TLS
disableno——
prefer (default)if the server agreesno1.0
requireyesno1.2
verify-cayeschain1.2
verify-fullyeschain and host name (or IP SAN)1.2

The default prefer encrypts when the server offers TLS, but does not check its certificate and accepts TLS 1.0. If the server declines TLS, the session continues in clear. Use verify-full for anything that crosses an untrusted network.

Netezza 7.x servers only offer TLS 1.0 / 1.1: with require or stricter, set tls_min_version=1.0 (or 1.1). An encrypted NPS 7 connection is not yet validated; see Authentication → NPS 7. Where trusted certificates come from depends on the client OS: see Authentication → TLS.

adbc.arpenz.channel_binding and adbc.arpenz.gssencmode are accepted for compatibility with PostgreSQL-style strings, but Netezza has neither SCRAM nor GSS transport encryption: the value require is refused at connect, and every other value has no effect.

Timeouts & performance​

OptionDefaultMeaning
adbc.arpenz.login_timeout30TCP connect timeout, in seconds (0 = the 30 s default). It covers the TCP connect only, not the TLS handshake or the login.
adbc.arpenz.socket_timeout0 (none)Read/write timeout in seconds on the socket, for the TLS handshake, the login and every later exchange. 0 = no limit.
adbc.arpenz.query_timeout0Accepted and stored, but has no effect in v0.3.6. Cancel a long query with AdbcStatementCancel instead.
adbc.arpenz.buffer_size32000Rows per streamed Arrow batch, the default for each new statement. Range 1..10000000; a larger value is capped, a value ≤ 0 or non-numeric is ignored.

Type rendering (read path)​

OptionValuesMeaning
adbc.arpenz.interval_type (alias interval_type)text (default) / nativeINTERVAL as utf8 text, or as Arrow interval(month_day_nano). Since v0.2.8. See Data types.
adbc.arpenz.char_encoding (alias char_encoding)latin9 (default) / utf8How CHAR / VARCHAR bytes are read: transcoded from LATIN9 to UTF-8, or passed through as UTF-8. Since v0.3.1.
adbc.arpenz.json_extension (alias json_extension)off (default) / onTag JSON / JSONB columns with the arrow.json extension type. Since v0.2.8.

Ingest​

OptionValuesMeaning
adbc.arpenz.ingest_method (alias ingest_method)auto (default) / external / insertBulk-ingest path. auto uses the external-table load and falls back to batched INSERT when the load cannot express the ingest; external turns that fallback into an error; insert always uses INSERT. Since v0.3.0. See Data types → Write path.

Licence​

OptionMeaning
arpeio.adbc.licenseLicence blob, inline.
arpeio.adbc.license_filePath to a .lic file.
arpeio.adbc.license.statusRead-only (GetOption); reports <state>;code=<ARROW_LIC_*>;tier=<tier>;expires=<epoch>.

The driver also reads the shared ARPEIO_ADBC_LICENCE[_FILE] environment variables and an arpeio_adbc.lic file next to the library. Full resolution order in Licensing.

Standard ADBC connection options​

These use the ADBC-standard keys (no arpenz namespace):

OptionValuesMeaning
adbc.connection.autocommittrue (default) / falseAutocommit mode, settable on the database or the connection. With it off, Commit / Rollback drive an explicit transaction; with it on they are rejected.
adbc.connection.catalogdatabase nameReports the connected database. Setting it checks the target database, then reconnects to it on the next statement; uncommitted work is lost.
adbc.connection.db_schemaschema nameReports the current schema (CURRENT_SCHEMA). Setting it checks that the schema exists, then switches the session to it.

The adbc.arpenz.* read, TLS and ingest options above can also be set on a connection, before its first statement. login_timeout and socket_timeout are database options only.

Statement & ingest options​

Set on the statement handle, not the database:

OptionDefaultMeaning
adbc.arpenz.batch_sizebuffer_size (32000)Rows per Arrow batch for this statement, 1..max_batch_size.
adbc.arpenz.max_batch_size1000000Upper bound for batch_size.
adbc.ingest.target_table—Target table for adbc_ingest.
adbc.ingest.mode—adbc.ingest.mode.create / .append / .replace / .create_append (or the short forms create, …). Required for an ingest; any other value is rejected.
adbc.ingest.target_db_schema—Target schema; the table is written as "schema"."table".
adbc.ingest.temporaryfalsetrue ingests into a CREATE TEMP TABLE. Needs a username and password on the connection.
adbc.ingest.target_catalog—Accepted but ignored: the ingest goes to the connected database.

adbc.arpenz.memory_budget_mb and adbc.arpenz.prefetch are accepted on a statement but have no effect.

Removed options​

Since v0.3.0, options that only applied to PostgreSQL are rejected as unknown: adbc.arpenz.copy_format, adbc.arpenz.geospatial, adbc.arpenz.uuid_casing, and the arpenz.bulk_* statement options.


Connection string (ADO.NET form)​

adbc.arpenz.connection_string accepts the ADO.NET Key=Value;… grammar: case-insensitive keywords, 'single' or "double" quoted values, doubled-quote escapes. An unknown keyword, or the same field given twice (including through two synonyms, e.g. Server and Data Source), is rejected.

Keyword(s)Option
Server, Data Source, Address, Addr, Network Addressserver and port: host, host,port, tcp:host,port, or [ipv6],port
Database, Initial Catalogdatabase
User ID, UID, Userusername
Password, PWDpassword (255 bytes max)
Application Name, Appapplication_name
Connection Timeout, Connect Timeout, Timeoutlogin_timeout
Encryptencrypt
TrustServerCertificatetrust_server_cert
RequirePasswordEncryptionrequire_password_encryption
Server=nzhost,5480;Database=SYSTEM;User ID=admin;Password=<pw>;Encrypt=true;TrustServerCertificate=false

There is no Port keyword: give the port in Server as host,port. The connection string has no sslmode, ssl_root_cert or tls_min_version keyword either: set those as discrete options or as uri parameters (or use Encrypt / TrustServerCertificate). The integrated-auth keywords (Integrated Security, Trusted_Connection, Authenticator, Krb5 …) parse but lead to a refused connection; Authentication=ActiveDirectory… is rejected as not implemented.


Connection URI​

The standard ADBC uri option takes a URL:

<scheme>://[user[:password]@]host[:port][/database][?key=value&…]
  • Schemes (case-insensitive, equivalent): netezza://, and postgresql:// / postgres://. The scheme only selects the URL grammar; it never picks the driver. The older arpenz:// is still accepted.
  • The path segment is the database name.
  • userinfo, host, path and query values are percent-decoded; query values treat + as a space. Bracketed IPv6 hosts use [::1]:5480. A single host only.
  • For the ADO.NET key=value; form, use connection_string, not uri.

Query parameters (names are case-insensitive). An unknown parameter is rejected, and so is a parameter for a field already given (e.g. ?dbname= with a /database path). Host and port come from the authority part only.

ParameterOption
userusername
passwordpassword
dbnamedatabase
application_nameapplication_name
connect_timeoutlogin_timeout
sslmodesslmode
sslrootcertssl_root_cert
require_password_encryptionrequire_password_encryption
channel_binding, gssencmode, krbsrvnameaccepted; no effect on Netezza (require refused)
netezza://admin:<pw>@nzhost:5480/SYSTEM?sslmode=verify-full&sslrootcert=/etc/nz/ca.pem
netezza://admin:<pw>@nzhost/SYSTEM?sslmode=disable

tls_min_version has no uri parameter: set it as a discrete option.

Options with no connection-string or URI form​

Some options cannot be set from both strings:

OptionWhere it can be set besides a discrete option
tls_min_version, socket_timeout, query_timeout, buffer_size, interval_type, char_encoding, json_extension, ingest_method, arpeio.adbc.license, arpeio.adbc.license_filenowhere: discrete option only
sslmode, ssl_root_certuri parameter only (no connection-string keyword)
encrypt, trust_server_certconnection-string keyword only (no uri parameter)

See also​