Trino Reference

Authentication options and data type handling for Trino connections.

Authentication

Variable Example Description
DATACONTRACT_TRINO_USERNAME trino Username for basic auth
DATACONTRACT_TRINO_PASSWORD mysecretpassword Password for basic auth
DATACONTRACT_TRINO_AUTHENTICATION oauth2 basic (default), jwt, or oauth2
DATACONTRACT_TRINO_JWT_TOKEN eyJhbGciOi... JWT bearer token for jwt auth

host, port, catalog, and schema come from the contract’s servers block.

Data types

Importing

There is no direct Trino importer. Import a SHOW CREATE TABLE DDL with datacontract import sql --dialect postgres (Trino’s ANSI-style DDL generally parses with the postgres dialect): VARCHAR/CHARstring, INTEGER/BIGINT/SMALLINT/TINYINTinteger, DECIMAL/DOUBLE/REALnumber, BOOLEANboolean, DATEdate, TIMEtime, TIMESTAMPtimestamp, ARRAY(...)array, JSONobject.

Testing

Trino supports native type introspection: the declared physicalType is checked against information_schema.columns. Length/precision is only enforced when the contract declares it (varchar matches varchar(10)); timezone variants of timestamps are interchangeable. A physicalType that isn’t valid Trino SQL falls back to the logical type category comparison.

{/* AUTOGENERATED TYPE MAPPING: do not edit by hand; regenerate with update_reference_types.py */}

Logical type mapping

When no physicalType is declared, the CLI derives the native type from the logicalType — for example in datacontract export sql and the dbt exports. This table is generated from the converter in the CLI’s code:

logicalType Trino type
string varchar
integer integer
number decimal
boolean boolean
date date
timestamp timestamp(3) with time zone
time time
object json
array json

{/* END AUTOGENERATED TYPE MAPPING */}