Native SQL Support
Algeon selects a whole DataFusion physical-plan candidate for cuDF execution
when every operator, expression, type and source in it has a native kernel
with matching semantics. Memory capacity does not govern planning support. An
admitted query executes within its assigned grant and returns a typed
allocation error if device memory is exhausted. For a production query,
algeon_explain_coverage
reports the exact coverage; this page summarizes the rules.
Relational plan shapes
When a candidate is not supported, or a preference rule keeps it on DataFusion, the DataFusion baseline remains in place.
Expressions
Integer division, checked casts and timestamp arithmetic can fail the query
on the rows they evaluate. Native Evaluation Semantics
states those rows, and how CASE, AND and OR limit them.
Casts
Not native: a float or boolean to a string, a timestamp to a numeric type
other than BIGINT, and any cast from a timezone-aware timestamp. A cast to
BIGINT yields the stored count in the type's own unit, so
CAST(next_view - event_time AS BIGINT) over TIMESTAMP(3) columns is a
millisecond difference.
Scalar functions
Carry types from Data Type Support can be selected
and returned but are not valid expression values, keys, sort or partition
values, or aggregate and window inputs. A global COUNT(column) without
DISTINCT, FILTER or GROUP BY over a List, LargeList or
FixedSizeList column is accepted and counts the non-null rows without
reading the list values.
Aggregates
Native aggregate functions are sum, min, max, count, avg, median,
stddev/stddev_samp, stddev_pop, var/variance/var_samp/var_sample
and var_pop/var_population. COUNT(DISTINCT expression) is supported;
other distinct aggregates and ordered aggregate arguments are not.
avgkeeps sum and count state for partial/final execution and divides as DataFusion does: aDecimal128average truncates toward zero at its output scale.avgover aDecimal128with precision above 25 is not native, because DataFusion sums it asDecimal256.medianis single-stage, and a plan that mixes it with floating statistical aggregates is rejected.SELECT DISTINCTand a distinctUNIONare grouped aggregates over every output column. The final stage may read the partial stage through a repartition, a coalesce, or a merge of sorted partitions without a fetch. All three lower to one native aggregate. A final stage that reads any other operator is rejected, and the rejection names it.- An aggregate with
COUNT(DISTINCT expression)reads its whole input before grouping, and that input must fit the memory grant. The optimizer splits it into two streaming groupings when every distinct count reads the same expression withoutFILTER, the other aggregates aresum,min,max,countoravg, and there are no grouping sets. Amedianor statistical aggregate beside the distinct count keeps the whole-input form. - Floating statistical aggregates run under the GPU-tolerant policy by default
and can differ from DataFusion. The exact-host policy matches DataFusion with
fewer supported key and aggregate types. See
statistical_aggregate_execution_modein configuration.
Sources
Parquet is the native file format, read from local paths or s3:// object
stores. Schema mapping and remote read capability are validated before
execution, and a scan that fails either check keeps the DataFusion baseline.
Iceberg tables from REST and Glue catalogs scan as Parquet; see
Iceberg support for the table
features that are rejected.
Validate ad-hoc SQL with algeon_explain_coverage, or EXPLAIN GPU over
Flight SQL, against the catalog and server configuration that will execute
it. The coverage page shows
both forms and the runtime_caveats to read.