类型¶
Presto 中的 Type
接口用于在 SQL 语言中实现类型。Presto 附带了许多内置类型,例如 VarcharType
和 BigintType
。 ParametricType
接口用于为类型提供类型参数,以允许使用 VARCHAR(10)
或 DECIMAL(22, 5)
等类型。 Plugin
可以通过从 getTypes()
返回新的 Type
对象,并从 getParametricTypes()
返回新的 ParametricType
对象,来提供新的 Type
对象。
以下是 Type
接口的高级概述,有关更多详细信息,请参阅 Type
的 JavaDocs。
本地容器类型
所有类型都定义了
getJavaType()
方法,通常称为“本地容器类型”。这是用于在执行期间保存值并在Block
中存储值的 Java 类型。例如,这是在 Java 代码中用于实现产生或使用此Type
的函数的类型。本地编码
其
Type
定义了本地容器类型形式的值的解释。对于某些类型,例如BigintType
,它与 Java 对本地容器类型(64 位 2 的补码)的解释相匹配。但是,对于其他类型,例如TimestampWithTimeZoneType
,它也使用long
作为其本地容器类型,存储在long
中的值是 8 字节二进制值,它结合了时区和自 Unix 纪元以来的毫秒数。特别地,这意味着您不能比较两个本地值并期望得到有意义的结果,除非您知道本地编码。类型签名
类型的签名定义了它的身份,并且还编码了有关类型的某些一般信息,例如它的类型参数(如果它是参数化的)以及它的文字参数。文字参数用于
VARCHAR(10)
等类型。