Presto C++ 限制

一般限制

C++ 评估引擎有一些限制

  • 并非所有内置函数都在 C++ 中实现。尝试使用未实现的函数会导致查询失败。有关支持的函数,请参见函数覆盖率.

  • 并非所有内置类型都在 C++ 中实现。尝试使用未实现的类型会导致查询失败。

    • 支持 数据类型 中的所有基本类型和结构化类型,但以下类型除外:CHARTIMETIME WITH TIMEZONE。这些类型被 VARCHARTIMESTAMPTIMESTAMP WITH TIMEZONE 包含。

    • Presto C++ 只支持无限长度的 VARCHAR,并且不会遵守 varchar[n] 中的长度 n

    • 以下类型不受支持:IPADDRESSIPPREFIXUUIDKHYPERLOGLOGP4HYPERLOGLOGQDIGESTTDIGESTGEOMETRYBINGTILE

  • C++ 评估引擎未使用插件 SPI 的某些部分。特别是,C++ 工作器不会加载插件目录中的任何插件,并且某些插件类型要么部分支持,要么完全不支持。

    • PageSourceProviderRecordSetProviderPageSinkProvider 在 C++ 评估引擎中不起作用。

    • 不支持用户提供的函数、类型、参数化类型和块编码。

    • 事件侦听器插件在拆分级别不起作用。

    • 用户定义的函数的工作方式不同,请参见远程函数执行.

  • C++ 评估引擎中的内存管理工作方式不同。特别是

    • 不支持 OOM 杀手。

    • 不支持保留池。

    • 一般来说,查询可能使用比内存仲裁允许的更多内存。请参见内存管理.

函数

reduce_agg

在基于 C++ 的 Presto 中,reduce_agg 不允许在 inputFunctioncombineFunction 中返回 null。在 Presto(Java)中,这是允许的,但行为未定义。有关 Presto 中 reduce_agg 的更多信息,请参见reduce_agg.