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.