型¶
PrestoのType
インターフェースは、SQL言語で型を実装するために使用されます。Prestoには、VarcharType
やBigintType
などの多くの組み込み型が付属しています。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)
のような型で使用されます。