Skip to main content

Environment variables and options

ArrowTTC is configured almost entirely through ADBC options — a connection string or structured adbc.arrowttc.* keys. A handful of environment variables control diagnostics and low-level behaviour that has no place in a connection string.

Connection options

Set as structured options (AdbcDatabaseSetOption) under the adbc.arrowttc.* namespace, or in a connection string / uri. Structured options always win over the same field parsed from a connection string.

Structured keyConnection-string keyword(s)Meaning
adbc.arrowttc.serverServer, Data Source, HostHost, or a full EZConnect string (host:port/service)
adbc.arrowttc.portPortListener port (default 1521; TCPS is conventionally 2484)
adbc.arrowttc.service_nameService Name, DatabaseOracle service name
adbc.arrowttc.sidSIDOracle SID (mutually exclusive with a service name)
adbc.arrowttc.usernameUser ID, UIDLogin user
adbc.arrowttc.passwordPassword, PWDLogin password
adbc.arrowttc.app_nameApplication NameReported in V$SESSION
adbc.arrowttc.login_timeoutConnection TimeoutTCP connect timeout, seconds
adbc.arrowttc.socket_timeoutSocket TimeoutPer-I/O recv/send timeout, seconds (0 = none)
adbc.arrowttc.batch_sizeBuffer SizeRows per Arrow batch (default 100,000)
adbc.arrowttc.statement_cache_sizeServer cursors held open and reused per connection (default 20; 0 disables)
adbc.arrowttc.number_mappingNumber MappingUnconstrained-NUMBER mapping: auto / double / decimal:P,S
adbc.arrowttc.ssl_modeSSL Mode, sslmodedisable / require / verify-ca / verify-full
adbc.arrowttc.ssl_root_certSSL Root Cert, sslrootcertPEM CA bundle for chain verification
adbc.arrowttc.wallet_locationWallet LocationDirectory holding ewallet.pem
adbc.arrowttc.wallet_passwordWallet PasswordPassphrase for an encrypted wallet key
adbc.arrowttc.proxy_userProxy UserTarget schema for proxy (CONNECT THROUGH) auth
adbc.arrowttc.new_passwordNew PasswordChange the login password during connect
adbc.arrowttc.encryptionEncryptionNative Network Encryption stance: accepted (default) / rejected / requested / required (AES-256)
adbc.arrowttc.data_integrityData IntegrityNative checksum stance, same four values (SHA-256 or SHA-1)
adbc.arrowttc.auth_methodAuth Methodpassword (default), kerberos (KERBEROS5 external auth; Linux/MIT-krb5), or token (OCI IAM database token)
adbc.arrowttc.token_locationToken LocationDirectory with the OCI db-token (token) and its PEM key (oci_db_key.pem); token auth. As written by oci iam db-token get
adbc.arrowttc.krb5_cred_modeKerberos Cred ModeHow the ticket is obtained: ccache (default) / keytab / password
adbc.arrowttc.krb5_keytabKerberos KeytabKeytab file path (keytab mode)
adbc.arrowttc.krb5_ccacheKerberos CachePer-connection credential cache (ccache mode; else KRB5CCNAME)
adbc.arrowttc.krb5_spnKerberos SPNTarget service principal; defaults to oracle/<host>
adbc.arrowttc.krb5_realmKerberos RealmDefault realm for the client principal
adbc.arrowttc.krb5_principalKerberos PrincipalClient principal (keytab / password modes)
adbc.arrowttc.krb5_passwordKerberos PasswordClient password (password mode; cleansed on release)
adbc.arrowttc.connection_stringuriA whole connection string as one value
arpeio.adbc.licenseInline ARROW LICENCE token
arpeio.adbc.license_filePath to a licence file
arpeio.adbc.license.status (read-only)AdbcDatabaseGetOption reports <state>;code=<ARROW_LIC_*>;tier=<tier>;expires=<epoch>

Environment variables

Two namespaces, by design. Generic family-wide diagnostic knobs — the ones that mean the same thing in every Arpeio ADBC driver (ArrowTDS/FEBE/TTC/DRDA) — use the shared ARPEIO_ADBC_* prefix, so a trace or an A/B recipe carries across drivers unchanged. Driver- or protocol-specific knobs keep the ARROWTTC_* prefix (e.g. ARROWTTC_NO_LOB_PREFETCH, an Oracle-LOB escape hatch with no analogue elsewhere). Each variable lives in exactly one namespace; there is no aliasing or override between them.

VariableValuesEffect
ARPEIO_ADBC_READ_TIMING1Emit a [TTC READ] line per batch and a [TTC READ SUMMARY] at stream release on stderr, attributing an extract to the wire (recv), the decoder (decode), and the consumer. See below.
ARPEIO_ADBC_ALLOCATORsystem, mimallocForce the column-buffer allocator backend, read once on the first allocation. system always works; mimalloc is honoured only when the driver was built with ARROWTTC_WITH_MIMALLOC (the default).
ARROWTTC_NO_LOB_PREFETCHany non-emptyDisable prefetching LOB lengths with the initial define. Prefetch shows no gain on loopback but saves a round trip on a real network; this is the escape hatch if a server mishandles it.
ARPEIO_ADBC_LICENCEinline tokenLicence token, if no option is set
ARPEIO_ADBC_LICENCE_FILEpathLicence file, if no option is set

A licence is also looked for in arpeio_adbc.lic next to the driver library. Sources are tried in precedence order: inline option, file option, env inline, env file, default file. The gate is always enforced: DatabaseInit refuses without a valid token. The arpeio.adbc.license.status option and a grace warning still report the licence state. Test/CI builds set ARROWTTC_LICENSE_TEST_KEY=ON to self-mint a token offline; a shipped driver trusts only the production key.

Note: ADBC_ARROWTTC_* (uppercase) is not read by the driver. Some of the test and benchmark scripts read ADBC_ARROWTTC_SERVER etc. as a credential source, but that is a convenience of those scripts, not driver behaviour.

Reading the timing summary

[TTC READ SUMMARY] batches=61 rows=6001215 wall_ms=2090 busy_ms=2075 \
recv_ms=72 decode_ms=2003 consumer_ms=2 cpu_ms=2057 blocked_ms=18 \
MiB=596 MiB/s=285 alloc=mimalloc
  • recv_ms — time inside recv()/SSL_read(). High means the wire (or the server) is the bottleneck.
  • decode_msbusy_ms − recv_ms: turning wire bytes into Arrow buffers.
  • consumer_ms — wall time spent outside the driver, i.e. waiting for the caller to take each batch. High means the consumer is the bottleneck.
  • blocked_msbusy_ms − cpu_ms: descheduled time the driver was neither on a CPU nor in recv. Under parallel load this is the allocator convoy signal.
  • alloc — the resolved allocator backend, system or mimalloc.