Presto C++ 限制¶
一般限制¶
C++ 评估引擎有一些限制
并非所有内置函数都在 C++ 中实现。尝试使用未实现的函数会导致查询失败。有关支持的函数,请参见函数覆盖率.
并非所有内置类型都在 C++ 中实现。尝试使用未实现的类型会导致查询失败。
支持 数据类型 中的所有基本类型和结构化类型,但以下类型除外:
CHAR
、TIME
和TIME WITH TIMEZONE
。这些类型被VARCHAR
、TIMESTAMP
和TIMESTAMP WITH TIMEZONE
包含。Presto C++ 只支持无限长度的
VARCHAR
,并且不会遵守varchar[n]
中的长度n
。以下类型不受支持:
IPADDRESS
、IPPREFIX
、UUID
、KHYPERLOGLOG
、P4HYPERLOGLOG
、QDIGEST
、TDIGEST
、GEOMETRY
、BINGTILE
。
C++ 评估引擎未使用插件 SPI 的某些部分。特别是,C++ 工作器不会加载插件目录中的任何插件,并且某些插件类型要么部分支持,要么完全不支持。
PageSourceProvider
、RecordSetProvider
和PageSinkProvider
在 C++ 评估引擎中不起作用。不支持用户提供的函数、类型、参数化类型和块编码。
事件侦听器插件在拆分级别不起作用。
用户定义的函数的工作方式不同,请参见远程函数执行.
C++ 评估引擎中的内存管理工作方式不同。特别是
不支持 OOM 杀手。
不支持保留池。
一般来说,查询可能使用比内存仲裁允许的更多内存。请参见内存管理.
函数¶
reduce_agg¶
在基于 C++ 的 Presto 中,reduce_agg
不允许在 inputFunction
或 combineFunction
中返回 null
。在 Presto(Java)中,这是允许的,但行为未定义。有关 Presto 中 reduce_agg
的更多信息,请参见reduce_agg.