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,TIMESTAMPandTIMESTAMP WITH TIMEZONE.Presto C++ only supports unlimited length
VARCHAR, and does not honor the lengthninvarchar[n].The following types are not supported:
IPADDRESS,IPPREFIX,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, andPageSinkProviderdo 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.