Presto C++ Limitations
General Limitations
The C++ evaluation engine has a number of limitations:
Not all built-in functions are implemented in C++. Attempting to use unimplemented functions results in a query failure. For supported functions, see Function Coverage.
Not all built-in types are implemented in C++. Attempting to use unimplemented types will result in a query failure.
All basic and structured types in Data Types are supported, except for
CHAR
,TIME
, andTIME WITH TIMEZONE
. These are subsumed byVARCHAR
,TIMESTAMP
andTIMESTAMP WITH TIMEZONE
.Presto C++ only supports unlimited length
VARCHAR
, and does not honor the lengthn
invarchar[n]
.The following types are not supported:
IPADDRESS
,IPPREFIX
,UUID
,KHYPERLOGLOG
,P4HYPERLOGLOG
,QDIGEST
,TDIGEST
,GEOMETRY
,BINGTILE
.
Certain parts of the plugin SPI are not used by the C++ evaluation engine. In particular, C++ workers will not load any plugin in the plugins directory, and certain plugin types are either partially or completely unsupported.
PageSourceProvider
,RecordSetProvider
, andPageSinkProvider
do not work in the C++ evaluation engine.User-supplied functions, types, parametric types and block encodings are not supported.
The event listener plugin does not work at the split level.
User-defined functions do not work in the same way, see Remote Function Execution.
Memory management works differently in the C++ evaluation engine. In particular:
The OOM killer is not supported.
The reserved pool is not supported.
In general, queries may use more memory than they are allowed to through memory arbitration. See Memory Management.
Functions
reduce_agg
In C++ based Presto, reduce_agg
is not permitted to return null
in either the inputFunction
or the combineFunction
. In Presto (Java), this is permitted but undefined behavior. For more information about reduce_agg
in Presto, see reduce_agg.