Expressions
Verification
Scope
Results of mutate(), grouped mutate(), and grouped summarise() expressions on all five backends: arithmetic, comparison and logic with NA, conditionals, rounding, strings, offsets, ranks, cumulative functions, and aggregates.
References
- Reference
- dplyr 1.2.1 and stringr 1.6.0, on R 4.6.1
- Versions
- R 4.6.1, dplyr 1.2.1, stringr 1.6.0, jsonlite 2.0.0, PHP 8.5.10, SQLite 3.45.2, PostgreSQL 17.0 (Laravel Herd), MySQL 8.0.46, php_polars 0.1.0
Data
- expression cases
- 7 rows, NA in every column Source
Method
tests/r/expr.R evaluates each expression with dplyr on a 7-row table and writes the results. The PHP tests evaluate the same expressions on the same table in each backend. Fixtures regenerated with the listed R versions on 2026-11-01; output byte-identical to the committed files.
- Check
- Comparison with a reference implementation
- Recorded
- 2026-11-02, PHP 8.5.10, macOS 27.0.1 (arm64), commit 1abdeb1
Tolerances
exact equality
Applies to: Column values
Numbers rounded to 9 decimal places with PHP round() on both sides, Inf, -Inf, and NaN read as NA, and NA in identical positions
exact equality
Applies to: Polars column values
As above, with no fallback to a DataFrame
x: package value; r: reference value.
Results
337 comparisons in 86 cases: 337 pass, 0 fail, 0 skipped.
By case
| Case | Comparisons | Status |
|---|---|---|
| arith | 5 | pass |
| div | 5 | pass |
| mod | 5 | pass |
| pow | 5 | pass |
| cmp | 5 | pass |
| and | 5 | pass |
| or | 5 | pass |
| not | 5 | pass |
| is_na | 5 | pass |
| if_else | 5 | pass |
| case_when | 5 | pass |
| coalesce | 5 | pass |
| in_ | 5 | pass |
| between | 5 | pass |
| na_if | 5 | pass |
| round | 2 | pass |
| log | 5 | pass |
| str_lower | 5 | pass |
| str_length | 5 | pass |
| str_trim | 5 | pass |
| str_sub | 5 | pass |
| str_sub_neg | 5 | pass |
| str_detect | 5 | pass |
| str_replace | 5 | pass |
| str_replace_all | 5 | pass |
| paste0 | 5 | pass |
| paste | 5 | pass |
| as_string | 5 | pass |
| lag | 5 | pass |
| lead2 | 5 | pass |
| lag_order | 5 | pass |
| row_number | 5 | pass |
| row_number_desc | 5 | pass |
| min_rank | 5 | pass |
| dense_rank | 5 | pass |
| percent_rank | 5 | pass |
| cume_dist | 5 | pass |
| ntile | 5 | pass |
| ntile_x | 5 | pass |
| cumsum | 5 | pass |
| cumsum_int | 5 | pass |
| cummean | 5 | pass |
| cummax | 5 | pass |
| cumall | 5 | pass |
| cumany | 5 | pass |
| consecutive_id | 5 | pass |
| grp_mean | 5 | pass |
| grp_lag | 5 | pass |
| grp_row_number | 5 | pass |
| grp_cumsum | 5 | pass |
| 'sm_n', Phibble\Expr\Call | 2 | pass |
| 'sm_sum', Phibble\Expr\Call | 2 | pass |
| 'sm_sum_rm', Phibble\Expr\Call | 2 | pass |
| 'sm_mean', Phibble\Expr\Call | 2 | pass |
| 'sm_median', Phibble\Expr\Call | 2 | pass |
| 'sm_sd', Phibble\Expr\Call | 2 | pass |
| 'sm_var', Phibble\Expr\Call | 2 | pass |
| 'sm_min', Phibble\Expr\Call | 2 | pass |
| 'sm_max_s', Phibble\Expr\Call | 2 | pass |
| 'sm_quantile', Phibble\Expr\Call | 2 | pass |
| 'sm_iqr', Phibble\Expr\Call | 2 | pass |
| 'sm_n_distinct', Phibble\Expr\Call | 2 | pass |
| 'sm_n_distinct_rm', Phibble\Expr\Call | 2 | pass |
| 'sm_first', Phibble\Expr\Call | 2 | pass |
| 'sm_last_order', Phibble\Expr\Call | 2 | pass |
| 'sm_nth', Phibble\Expr\Call | 2 | pass |
| 'sm_any', Phibble\Expr\Call | 2 | pass |
| 'sm_all', Phibble\Expr\Call | 2 | pass |
| sm_n | 3 | pass |
| sm_sum | 3 | pass |
| sm_sum_rm | 3 | pass |
| sm_mean | 3 | pass |
| sm_median | 3 | pass |
| sm_sd | 3 | pass |
| sm_var | 3 | pass |
| sm_min | 3 | pass |
| sm_max_s | 3 | pass |
| sm_quantile | 3 | pass |
| sm_iqr | 3 | pass |
| sm_n_distinct | 3 | pass |
| sm_n_distinct_rm | 3 | pass |
| sm_first | 3 | pass |
| sm_last_order | 3 | pass |
| sm_nth | 3 | pass |
| sm_any | 3 | pass |
| sm_all | 3 | pass |
All 337 comparisons
| Case | Implementation | Quantity | Criterion | Values | Status |
|---|---|---|---|---|---|
| arith | DataFrame | mutate | exact equality | 7 | pass |
| div | DataFrame | mutate | exact equality | 7 | pass |
| mod | DataFrame | mutate | exact equality | 7 | pass |
| pow | DataFrame | mutate | exact equality | 7 | pass |
| cmp | DataFrame | mutate | exact equality | 7 | pass |
| and | DataFrame | mutate | exact equality | 7 | pass |
| or | DataFrame | mutate | exact equality | 7 | pass |
| not | DataFrame | mutate | exact equality | 7 | pass |
| is_na | DataFrame | mutate | exact equality | 7 | pass |
| if_else | DataFrame | mutate | exact equality | 7 | pass |
| case_when | DataFrame | mutate | exact equality | 7 | pass |
| coalesce | DataFrame | mutate | exact equality | 7 | pass |
| in_ | DataFrame | mutate | exact equality | 7 | pass |
| between | DataFrame | mutate | exact equality | 7 | pass |
| na_if | DataFrame | mutate | exact equality | 7 | pass |
| round | DataFrame | mutate | exact equality | 7 | pass |
| log | DataFrame | mutate | exact equality | 7 | pass |
| str_lower | DataFrame | mutate | exact equality | 7 | pass |
| str_length | DataFrame | mutate | exact equality | 7 | pass |
| str_trim | DataFrame | mutate | exact equality | 7 | pass |
| str_sub | DataFrame | mutate | exact equality | 7 | pass |
| str_sub_neg | DataFrame | mutate | exact equality | 7 | pass |
| str_detect | DataFrame | mutate | exact equality | 7 | pass |
| str_replace | DataFrame | mutate | exact equality | 7 | pass |
| str_replace_all | DataFrame | mutate | exact equality | 7 | pass |
| paste0 | DataFrame | mutate | exact equality | 7 | pass |
| paste | DataFrame | mutate | exact equality | 7 | pass |
| as_string | DataFrame | mutate | exact equality | 7 | pass |
| lag | DataFrame | mutate | exact equality | 7 | pass |
| lead2 | DataFrame | mutate | exact equality | 7 | pass |
| lag_order | DataFrame | mutate | exact equality | 7 | pass |
| row_number | DataFrame | mutate | exact equality | 7 | pass |
| row_number_desc | DataFrame | mutate | exact equality | 7 | pass |
| min_rank | DataFrame | mutate | exact equality | 7 | pass |
| dense_rank | DataFrame | mutate | exact equality | 7 | pass |
| percent_rank | DataFrame | mutate | exact equality | 7 | pass |
| cume_dist | DataFrame | mutate | exact equality | 7 | pass |
| ntile | DataFrame | mutate | exact equality | 7 | pass |
| ntile_x | DataFrame | mutate | exact equality | 7 | pass |
| cumsum | DataFrame | mutate | exact equality | 7 | pass |
| cumsum_int | DataFrame | mutate | exact equality | 7 | pass |
| cummean | DataFrame | mutate | exact equality | 7 | pass |
| cummax | DataFrame | mutate | exact equality | 7 | pass |
| cumall | DataFrame | mutate | exact equality | 7 | pass |
| cumany | DataFrame | mutate | exact equality | 7 | pass |
| consecutive_id | DataFrame | mutate | exact equality | 7 | pass |
| grp_mean | DataFrame | grouped mutate | exact equality | 7 | pass |
| grp_lag | DataFrame | grouped mutate | exact equality | 7 | pass |
| grp_row_number | DataFrame | grouped mutate | exact equality | 7 | pass |
| grp_cumsum | DataFrame | grouped mutate | exact equality | 7 | pass |
| 'sm_n', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_sum', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_sum_rm', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_mean', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_median', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_sd', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_var', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_min', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_max_s', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_quantile', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_iqr', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_n_distinct', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_n_distinct_rm', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_first', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_last_order', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_nth', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_any', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| 'sm_all', Phibble\Expr\Call | DataFrame | summarise | exact equality | pass | |
| arith | Polars | mutate | exact equality | 7 | pass |
| div | Polars | mutate | exact equality | 7 | pass |
| mod | Polars | mutate | exact equality | 7 | pass |
| pow | Polars | mutate | exact equality | 7 | pass |
| cmp | Polars | mutate | exact equality | 7 | pass |
| and | Polars | mutate | exact equality | 7 | pass |
| or | Polars | mutate | exact equality | 7 | pass |
| not | Polars | mutate | exact equality | 7 | pass |
| is_na | Polars | mutate | exact equality | 7 | pass |
| if_else | Polars | mutate | exact equality | 7 | pass |
| case_when | Polars | mutate | exact equality | 7 | pass |
| coalesce | Polars | mutate | exact equality | 7 | pass |
| in_ | Polars | mutate | exact equality | 7 | pass |
| between | Polars | mutate | exact equality | 7 | pass |
| na_if | Polars | mutate | exact equality | 7 | pass |
| round | Polars | mutate | exact equality | 7 | pass |
| log | Polars | mutate | exact equality | 7 | pass |
| str_lower | Polars | mutate | exact equality | 7 | pass |
| str_length | Polars | mutate | exact equality | 7 | pass |
| str_trim | Polars | mutate | exact equality | 7 | pass |
| str_sub | Polars | mutate | exact equality | 7 | pass |
| str_sub_neg | Polars | mutate | exact equality | 7 | pass |
| str_detect | Polars | mutate | exact equality | 7 | pass |
| str_replace | Polars | mutate | exact equality | 7 | pass |
| str_replace_all | Polars | mutate | exact equality | 7 | pass |
| paste0 | Polars | mutate | exact equality | 7 | pass |
| paste | Polars | mutate | exact equality | 7 | pass |
| as_string | Polars | mutate | exact equality | 7 | pass |
| lag | Polars | mutate | exact equality | 7 | pass |
| lead2 | Polars | mutate | exact equality | 7 | pass |
| lag_order | Polars | mutate | exact equality | 7 | pass |
| row_number | Polars | mutate | exact equality | 7 | pass |
| row_number_desc | Polars | mutate | exact equality | 7 | pass |
| min_rank | Polars | mutate | exact equality | 7 | pass |
| dense_rank | Polars | mutate | exact equality | 7 | pass |
| percent_rank | Polars | mutate | exact equality | 7 | pass |
| cume_dist | Polars | mutate | exact equality | 7 | pass |
| ntile | Polars | mutate | exact equality | 7 | pass |
| ntile_x | Polars | mutate | exact equality | 7 | pass |
| cumsum | Polars | mutate | exact equality | 7 | pass |
| cumsum_int | Polars | mutate | exact equality | 7 | pass |
| cummean | Polars | mutate | exact equality | 7 | pass |
| cummax | Polars | mutate | exact equality | 7 | pass |
| cumall | Polars | mutate | exact equality | 7 | pass |
| cumany | Polars | mutate | exact equality | 7 | pass |
| consecutive_id | Polars | mutate | exact equality | 7 | pass |
| grp_mean | Polars | grouped mutate | exact equality | 7 | pass |
| grp_lag | Polars | grouped mutate | exact equality | 7 | pass |
| grp_row_number | Polars | grouped mutate | exact equality | 7 | pass |
| grp_cumsum | Polars | grouped mutate | exact equality | 7 | pass |
| 'sm_n', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_sum', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_sum_rm', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_mean', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_median', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_sd', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_var', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_min', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_max_s', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_quantile', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_iqr', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_n_distinct', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_n_distinct_rm', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_first', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_last_order', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_nth', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_any', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| 'sm_all', Phibble\Expr\Call | Polars | summarise | exact equality | pass | |
| arith | SQLite | mutate | exact equality | 7 | pass |
| div | SQLite | mutate | exact equality | 7 | pass |
| mod | SQLite | mutate | exact equality | 7 | pass |
| pow | SQLite | mutate | exact equality | 7 | pass |
| cmp | SQLite | mutate | exact equality | 7 | pass |
| and | SQLite | mutate | exact equality | 7 | pass |
| or | SQLite | mutate | exact equality | 7 | pass |
| not | SQLite | mutate | exact equality | 7 | pass |
| is_na | SQLite | mutate | exact equality | 7 | pass |
| if_else | SQLite | mutate | exact equality | 7 | pass |
| case_when | SQLite | mutate | exact equality | 7 | pass |
| coalesce | SQLite | mutate | exact equality | 7 | pass |
| in_ | SQLite | mutate | exact equality | 7 | pass |
| between | SQLite | mutate | exact equality | 7 | pass |
| na_if | SQLite | mutate | exact equality | 7 | pass |
| log | SQLite | mutate | exact equality | 7 | pass |
| str_lower | SQLite | mutate | exact equality | 7 | pass |
| str_length | SQLite | mutate | exact equality | 7 | pass |
| str_trim | SQLite | mutate | exact equality | 7 | pass |
| str_sub | SQLite | mutate | exact equality | 7 | pass |
| str_sub_neg | SQLite | mutate | exact equality | 7 | pass |
| str_detect | SQLite | mutate | exact equality | 7 | pass |
| str_replace | SQLite | mutate | exact equality | 7 | pass |
| str_replace_all | SQLite | mutate | exact equality | 7 | pass |
| paste0 | SQLite | mutate | exact equality | 7 | pass |
| paste | SQLite | mutate | exact equality | 7 | pass |
| as_string | SQLite | mutate | exact equality | 7 | pass |
| lag | SQLite | mutate | exact equality | 7 | pass |
| lead2 | SQLite | mutate | exact equality | 7 | pass |
| lag_order | SQLite | mutate | exact equality | 7 | pass |
| row_number | SQLite | mutate | exact equality | 7 | pass |
| row_number_desc | SQLite | mutate | exact equality | 7 | pass |
| min_rank | SQLite | mutate | exact equality | 7 | pass |
| dense_rank | SQLite | mutate | exact equality | 7 | pass |
| percent_rank | SQLite | mutate | exact equality | 7 | pass |
| cume_dist | SQLite | mutate | exact equality | 7 | pass |
| ntile | SQLite | mutate | exact equality | 7 | pass |
| ntile_x | SQLite | mutate | exact equality | 7 | pass |
| cumsum | SQLite | mutate | exact equality | 7 | pass |
| cumsum_int | SQLite | mutate | exact equality | 7 | pass |
| cummean | SQLite | mutate | exact equality | 7 | pass |
| cummax | SQLite | mutate | exact equality | 7 | pass |
| cumall | SQLite | mutate | exact equality | 7 | pass |
| cumany | SQLite | mutate | exact equality | 7 | pass |
| consecutive_id | SQLite | mutate | exact equality | 7 | pass |
| arith | PostgreSQL | mutate | exact equality | 7 | pass |
| div | PostgreSQL | mutate | exact equality | 7 | pass |
| mod | PostgreSQL | mutate | exact equality | 7 | pass |
| pow | PostgreSQL | mutate | exact equality | 7 | pass |
| cmp | PostgreSQL | mutate | exact equality | 7 | pass |
| and | PostgreSQL | mutate | exact equality | 7 | pass |
| or | PostgreSQL | mutate | exact equality | 7 | pass |
| not | PostgreSQL | mutate | exact equality | 7 | pass |
| is_na | PostgreSQL | mutate | exact equality | 7 | pass |
| if_else | PostgreSQL | mutate | exact equality | 7 | pass |
| case_when | PostgreSQL | mutate | exact equality | 7 | pass |
| coalesce | PostgreSQL | mutate | exact equality | 7 | pass |
| in_ | PostgreSQL | mutate | exact equality | 7 | pass |
| between | PostgreSQL | mutate | exact equality | 7 | pass |
| na_if | PostgreSQL | mutate | exact equality | 7 | pass |
| log | PostgreSQL | mutate | exact equality | 7 | pass |
| str_lower | PostgreSQL | mutate | exact equality | 7 | pass |
| str_length | PostgreSQL | mutate | exact equality | 7 | pass |
| str_trim | PostgreSQL | mutate | exact equality | 7 | pass |
| str_sub | PostgreSQL | mutate | exact equality | 7 | pass |
| str_sub_neg | PostgreSQL | mutate | exact equality | 7 | pass |
| str_detect | PostgreSQL | mutate | exact equality | 7 | pass |
| str_replace | PostgreSQL | mutate | exact equality | 7 | pass |
| str_replace_all | PostgreSQL | mutate | exact equality | 7 | pass |
| paste0 | PostgreSQL | mutate | exact equality | 7 | pass |
| paste | PostgreSQL | mutate | exact equality | 7 | pass |
| as_string | PostgreSQL | mutate | exact equality | 7 | pass |
| lag | PostgreSQL | mutate | exact equality | 7 | pass |
| lead2 | PostgreSQL | mutate | exact equality | 7 | pass |
| lag_order | PostgreSQL | mutate | exact equality | 7 | pass |
| row_number | PostgreSQL | mutate | exact equality | 7 | pass |
| row_number_desc | PostgreSQL | mutate | exact equality | 7 | pass |
| min_rank | PostgreSQL | mutate | exact equality | 7 | pass |
| dense_rank | PostgreSQL | mutate | exact equality | 7 | pass |
| percent_rank | PostgreSQL | mutate | exact equality | 7 | pass |
| cume_dist | PostgreSQL | mutate | exact equality | 7 | pass |
| ntile | PostgreSQL | mutate | exact equality | 7 | pass |
| ntile_x | PostgreSQL | mutate | exact equality | 7 | pass |
| cumsum | PostgreSQL | mutate | exact equality | 7 | pass |
| cumsum_int | PostgreSQL | mutate | exact equality | 7 | pass |
| cummean | PostgreSQL | mutate | exact equality | 7 | pass |
| cummax | PostgreSQL | mutate | exact equality | 7 | pass |
| cumall | PostgreSQL | mutate | exact equality | 7 | pass |
| cumany | PostgreSQL | mutate | exact equality | 7 | pass |
| consecutive_id | PostgreSQL | mutate | exact equality | 7 | pass |
| arith | MySQL | mutate | exact equality | 7 | pass |
| div | MySQL | mutate | exact equality | 7 | pass |
| mod | MySQL | mutate | exact equality | 7 | pass |
| pow | MySQL | mutate | exact equality | 7 | pass |
| cmp | MySQL | mutate | exact equality | 7 | pass |
| and | MySQL | mutate | exact equality | 7 | pass |
| or | MySQL | mutate | exact equality | 7 | pass |
| not | MySQL | mutate | exact equality | 7 | pass |
| is_na | MySQL | mutate | exact equality | 7 | pass |
| if_else | MySQL | mutate | exact equality | 7 | pass |
| case_when | MySQL | mutate | exact equality | 7 | pass |
| coalesce | MySQL | mutate | exact equality | 7 | pass |
| in_ | MySQL | mutate | exact equality | 7 | pass |
| between | MySQL | mutate | exact equality | 7 | pass |
| na_if | MySQL | mutate | exact equality | 7 | pass |
| log | MySQL | mutate | exact equality | 7 | pass |
| str_lower | MySQL | mutate | exact equality | 7 | pass |
| str_length | MySQL | mutate | exact equality | 7 | pass |
| str_trim | MySQL | mutate | exact equality | 7 | pass |
| str_sub | MySQL | mutate | exact equality | 7 | pass |
| str_sub_neg | MySQL | mutate | exact equality | 7 | pass |
| str_detect | MySQL | mutate | exact equality | 7 | pass |
| str_replace | MySQL | mutate | exact equality | 7 | pass |
| str_replace_all | MySQL | mutate | exact equality | 7 | pass |
| paste0 | MySQL | mutate | exact equality | 7 | pass |
| paste | MySQL | mutate | exact equality | 7 | pass |
| as_string | MySQL | mutate | exact equality | 7 | pass |
| lag | MySQL | mutate | exact equality | 7 | pass |
| lead2 | MySQL | mutate | exact equality | 7 | pass |
| lag_order | MySQL | mutate | exact equality | 7 | pass |
| row_number | MySQL | mutate | exact equality | 7 | pass |
| row_number_desc | MySQL | mutate | exact equality | 7 | pass |
| min_rank | MySQL | mutate | exact equality | 7 | pass |
| dense_rank | MySQL | mutate | exact equality | 7 | pass |
| percent_rank | MySQL | mutate | exact equality | 7 | pass |
| cume_dist | MySQL | mutate | exact equality | 7 | pass |
| ntile | MySQL | mutate | exact equality | 7 | pass |
| ntile_x | MySQL | mutate | exact equality | 7 | pass |
| cumsum | MySQL | mutate | exact equality | 7 | pass |
| cumsum_int | MySQL | mutate | exact equality | 7 | pass |
| cummean | MySQL | mutate | exact equality | 7 | pass |
| cummax | MySQL | mutate | exact equality | 7 | pass |
| cumall | MySQL | mutate | exact equality | 7 | pass |
| cumany | MySQL | mutate | exact equality | 7 | pass |
| consecutive_id | MySQL | mutate | exact equality | 7 | pass |
| grp_mean | SQLite | grouped mutate | exact equality | 7 | pass |
| grp_lag | SQLite | grouped mutate | exact equality | 7 | pass |
| grp_row_number | SQLite | grouped mutate | exact equality | 7 | pass |
| grp_cumsum | SQLite | grouped mutate | exact equality | 7 | pass |
| grp_mean | PostgreSQL | grouped mutate | exact equality | 7 | pass |
| grp_lag | PostgreSQL | grouped mutate | exact equality | 7 | pass |
| grp_row_number | PostgreSQL | grouped mutate | exact equality | 7 | pass |
| grp_cumsum | PostgreSQL | grouped mutate | exact equality | 7 | pass |
| grp_mean | MySQL | grouped mutate | exact equality | 7 | pass |
| grp_lag | MySQL | grouped mutate | exact equality | 7 | pass |
| grp_row_number | MySQL | grouped mutate | exact equality | 7 | pass |
| grp_cumsum | MySQL | grouped mutate | exact equality | 7 | pass |
| sm_n | SQLite | summarise | exact equality | 3 | pass |
| sm_sum | SQLite | summarise | exact equality | 3 | pass |
| sm_sum_rm | SQLite | summarise | exact equality | 3 | pass |
| sm_mean | SQLite | summarise | exact equality | 3 | pass |
| sm_median | SQLite | summarise | exact equality | 3 | pass |
| sm_sd | SQLite | summarise | exact equality | 3 | pass |
| sm_var | SQLite | summarise | exact equality | 3 | pass |
| sm_min | SQLite | summarise | exact equality | 3 | pass |
| sm_max_s | SQLite | summarise | exact equality | 3 | pass |
| sm_quantile | SQLite | summarise | exact equality | 3 | pass |
| sm_iqr | SQLite | summarise | exact equality | 3 | pass |
| sm_n_distinct | SQLite | summarise | exact equality | 3 | pass |
| sm_n_distinct_rm | SQLite | summarise | exact equality | 3 | pass |
| sm_first | SQLite | summarise | exact equality | 3 | pass |
| sm_last_order | SQLite | summarise | exact equality | 3 | pass |
| sm_nth | SQLite | summarise | exact equality | 3 | pass |
| sm_any | SQLite | summarise | exact equality | 3 | pass |
| sm_all | SQLite | summarise | exact equality | 3 | pass |
| sm_n | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_sum | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_sum_rm | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_mean | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_median | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_sd | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_var | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_min | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_max_s | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_quantile | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_iqr | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_n_distinct | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_n_distinct_rm | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_first | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_last_order | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_nth | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_any | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_all | PostgreSQL | summarise | exact equality | 3 | pass |
| sm_n | MySQL | summarise | exact equality | 3 | pass |
| sm_sum | MySQL | summarise | exact equality | 3 | pass |
| sm_sum_rm | MySQL | summarise | exact equality | 3 | pass |
| sm_mean | MySQL | summarise | exact equality | 3 | pass |
| sm_median | MySQL | summarise | exact equality | 3 | pass |
| sm_sd | MySQL | summarise | exact equality | 3 | pass |
| sm_var | MySQL | summarise | exact equality | 3 | pass |
| sm_min | MySQL | summarise | exact equality | 3 | pass |
| sm_max_s | MySQL | summarise | exact equality | 3 | pass |
| sm_quantile | MySQL | summarise | exact equality | 3 | pass |
| sm_iqr | MySQL | summarise | exact equality | 3 | pass |
| sm_n_distinct | MySQL | summarise | exact equality | 3 | pass |
| sm_n_distinct_rm | MySQL | summarise | exact equality | 3 | pass |
| sm_first | MySQL | summarise | exact equality | 3 | pass |
| sm_last_order | MySQL | summarise | exact equality | 3 | pass |
| sm_nth | MySQL | summarise | exact equality | 3 | pass |
| sm_any | MySQL | summarise | exact equality | 3 | pass |
| sm_all | MySQL | summarise | exact equality | 3 | pass |
Limitations
Exclusions
- round: not run on SQL databases. SQL ROUND does not round half to even; SqlTable evaluates round() in memory.
Reproduction
Rscript tests/r/expr.R
PHIBBLE_TEST_PGSQL="pgsql:host=127.0.0.1;port=5432;dbname=postgres" PHIBBLE_TEST_PGSQL_USER=postgres PHIBBLE_TEST_MYSQL="mysql:host=127.0.0.1;port=3306" PHIBBLE_TEST_MYSQL_USER=root php vendor/bin/pest tests/ExprTest.php tests/SqlTest.php
php -d extension=php_polars.so php vendor/bin/pest tests/Polars/PolarsExprTest.php
- Raw record
- site/verifications/expressions-dplyr.json
- Input data
- tests/fixtures/expr/expected.json