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.
