PrestoのTypeインターフェースは、SQL言語で型を実装するために使用されます。Prestoには、VarcharTypeBigintTypeなどの多くの組み込み型が付属しています。ParametricTypeインターフェースは、VARCHAR(10)DECIMAL(22, 5)のような型を許可するために、型のパラメータを提供するために使用されます。Pluginは、getTypes()からTypeオブジェクトを返したり、getParametricTypes()からParametricTypeオブジェクトを返すことによって、新しいTypeオブジェクトを提供できます。

以下は、Typeインターフェースの概要です。詳細については、TypeのJavaDocsを参照してください。

  • ネイティブコンテナ型

    すべての型は、頻繁に「ネイティブコンテナ型」と呼ばれるgetJavaType()メソッドを定義します。これは、実行中に値を保持したり、Blockに値を格納したりするために使用されるJava型です。たとえば、これは、このTypeを生成または消費する関数を実装するJavaコードで使用される型です。

  • ネイティブエンコーディング

    ネイティブコンテナ型形式の値の解釈は、そのTypeによって定義されます。 一部の型(BigintTypeなど)では、ネイティブコンテナ型のJava解釈(64ビット2の補数)と一致します。 ただし、TimestampWithTimeZoneTypeなど、ネイティブコンテナ型にlongを使用する他の型の場合、longに格納されている値は、タイムゾーンとUnixエポックからのミリ秒を組み合わせた8バイトのバイナリ値です。 特に、これは、ネイティブエンコーディングを知らなければ、2つのネイティブ値を比較して意味のある結果を期待できないことを意味します。

  • 型シグネチャ

    型のシグネチャは、そのIDを定義し、型パラメーター(パラメトリックな場合)やリテラルパラメーターなど、型に関する一般的な情報もエンコードします。リテラルパラメーターは、VARCHAR(10)のような型で使用されます。