Auto-generated. Edit tests/conformance/_surface_inventory.py to add surface items, then run make coverage-matrix to regenerate this document. The CI gate (--check) refuses to merge a PR whose committed matrix has drifted from the inventory or the corpus.
What this measures
Each row in the per-category tables below is one BigQuery surface item (a function, a statement form, a wire-format shape, an error reason). The Count column is the number of fixtures in the conformance corpus that exercise the item, via a static regex match against the fixture's SQL + setup_rest + expected.json. The Tier column places the item in a depth bucket:
🔴 Uncovered -- 0 fixtures touch this surface.
🟡 Sampled -- 1 to 2 fixtures.
🟢 Covered -- 3 to 5 fixtures.
🟢🟢 Deep -- >= 6 fixtures.
Detection is coarse : a fixture matches an item if its text contains the detector pattern, irrespective of whether the item is the fixture's primary surface. A fixture authored to exercise REGEXP_EXTRACT will likely also count under SELECT and STRING -- depth measures broad exposure, not test-purpose isolation.
Summary
Tier counts below exclude the 10 surface items flagged as non-deterministic (RAND, CURRENT_DATE / CURRENT_DATETIME / CURRENT_TIME / CURRENT_TIMESTAMP, SESSION_USER, GENERATE_UUID, TABLESAMPLE, FOR SYSTEM_TIME AS OF). Those items are permanently excluded from the corpus by ADR 0022 §1.2 / §7 and are tracked separately under Excluded (non-deterministic) .
Tier
Count
Share
🔴 Uncovered
1
0.2%
🟡 Sampled
235
58.3%
🟢 Covered
69
17.1%
🟢🟢 Deep
98
24.3%
Total
403
100.0%
Excluded (non-deterministic — see ADR 0022)
These surface items are permanently outside the conformance corpus because their output cannot be reproduced fixture-to-fixture (wall-clock, RNG, session state, or random sampling). They are exercised in adjacent test tiers — see the per-item notes for the canonical location.
Category
Item
Why excluded
Query language
FOR SYSTEM_TIME AS OF (time travel)
Excluded from the conformance corpus by ADR 0022 §7 — the relative-timestamp form depends on wall-clock state. Dynamic time-travel is exercised at the integration tier (tests/integration/test_time_travel.py).
Query language
TABLESAMPLE
Excluded from the conformance corpus by ADR 0022 §1.2 — TABLESAMPLE SYSTEM is non-deterministic (random sampling). Shape-only coverage lives in unit / integration tiers.
Numeric / math functions
RAND
Excluded from the conformance corpus by ADR 0022 §1.2 — RAND() is non-deterministic. The function is property-tested via Hypothesis (uniformity, range bounds).
Date / time / timestamp / datetime functions
CURRENT_DATE
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent. Static-date queries are exercised indirectly via DATE_ADD/DATE_SUB fixtures.
Date / time / timestamp / datetime functions
CURRENT_DATETIME
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent.
Date / time / timestamp / datetime functions
CURRENT_TIME
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent.
Date / time / timestamp / datetime functions
CURRENT_TIMESTAMP
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent. The function is exercised in unit / integration tiers where the harness pins time.
Hash / security functions
SESSION_USER
Excluded from the conformance corpus by ADR 0022 §1.2 — session-state dependent. Exercised at the unit, integration, and e2e × 4 client tiers (ADR 0038); Storage Read row_restriction caller-threading closed in ADR 0040.
Hash / security functions
CURRENT_USER
Excluded from the conformance corpus by ADR 0022 §1.2 — co-equal alias for SESSION_USER per BigQuery's reference. Exercised at the unit and e2e × 4 client tiers; same resolution path as SESSION_USER (ADR 0040).
Hash / security functions
GENERATE_UUID
Excluded from the conformance corpus by ADR 0022 §1.2 — non-deterministic. Property-tested via Hypothesis for shape / uniqueness.
Variation depth — broad-but-shallow surfaces
These surfaces have at least 3 fixtures , but every fixture sits in the happy path — the variation taxonomy collapses to {happy_path}. They look covered by fixture count, but the typical BigQuery-vs-DuckDB divergence (NULL propagation, empty inputs, ±Inf / NaN, timezone arithmetic, Unicode case-folding, error-shape parity) lives in scenarios a happy-path-only sweep reliably misses. Add edge-case fixtures targeting these scenarios to close the gap. The taxonomy lives in tests/conformance/_corpus.py and is locked by ADR 0022 §"Variation taxonomy".
Category
Item
Fixtures
Variation
BQ docs
GEOGRAPHY functions
ST_ASTEXT
17
happy×17
BQ ref
GEOGRAPHY functions
ST_NPOINTS
7
happy×7
BQ ref
Aggregate functions
GROUPING
6
happy×6
BQ ref
GEOGRAPHY functions
ST_DIMENSION
6
happy×6
BQ ref
Query language
_TABLE_SUFFIX pseudo-column
6
happy×6
BQ ref
Aggregate functions
HLL_COUNT.INIT
4
happy×4
BQ ref
GEOGRAPHY functions
ST_BUFFER
4
happy×4
BQ ref
Query language
Partition pruning (WHERE on partition col)
4
happy×4
BQ ref
Data Definition (DDL)
DROP VIEW
3
happy×3
BQ ref
Date / time / timestamp / datetime functions
DATE
3
happy×3
BQ ref
Date / time / timestamp / datetime functions
GENERATE_TIMESTAMP_ARRAY
3
happy×3
BQ ref
GEOGRAPHY functions
ST_INTERSECTS
3
happy×3
BQ ref
INFORMATION_SCHEMA virtual views
INFORMATION_SCHEMA.COLUMNS
3
happy×3
BQ ref
INFORMATION_SCHEMA virtual views
INFORMATION_SCHEMA.TABLES
3
happy×3
BQ ref
INFORMATION_SCHEMA virtual views
INFORMATION_SCHEMA.TABLE_OPTIONS
3
happy×3
BQ ref
JSON functions
JSON_EXTRACT
3
happy×3
BQ ref
JSON functions
JSON_EXTRACT_SCALAR
3
happy×3
BQ ref
Query language
INTERSECT
3
happy×3
BQ ref
REST / wire-format response shapes
ARRAY queryParameter
3
happy×3
BQ ref
String functions
REGEXP_SUBSTR
3
happy×3
BQ ref
String functions
REPEAT
3
happy×3
BQ ref
Gaps -- top 30 0-fixture surface items
The fastest single-session improvements come from these uncovered cells. Each is a candidate fixture-authoring target.
Category
Item
BQ docs
GEOGRAPHY functions
ST_CLUSTERDBSCAN
BQ ref
Per-category coverage
Data Manipulation (DML)
BigQuery reference -- 7 / 7 items covered
BigQuery's DML statements. Coverage must include happy-path + rows-affected reporting + interaction with row-access policies (per ADR 0018) and time-travel snapshots (per ADR 0016).
Item
Count
Tier
Variation
Fixtures
INSERT … VALUES
355
🟢🟢 Deep
happy×289 / null×41 / empty×6 / bound×9 / error×13
api_configuration/default_dataset_insert_unqualified , api_configuration/default_dataset_join_partial_qualification , api_configuration/default_dataset_select_table , api_configuration/dest_clustering_fields_basic , api_configuration/dest_clustering_fields_invalid_column , … (+350 more)
INSERT … SELECT
2
🟡 Sampled
happy×2
api_configuration/dml_insert_select , rest_crud/dml_insert_select
UPDATE
22
🟢🟢 Deep
happy×16 / null×3 / empty×1 / error×3
api_configuration/dml_merge_basic , api_configuration/dml_merge_when_matched , api_configuration/dml_update_multi_row , api_configuration/dml_update_single_row , api_configuration/dml_update_with_where , … (+17 more)
UPDATE … FROM
2
🟡 Sampled
happy×2
rest_crud/dml_update_from_cte , rest_crud/dml_update_subquery
DELETE
11
🟢🟢 Deep
happy×9 / null×1 / empty×1
api_configuration/dml_delete_multi_row , api_configuration/dml_delete_single_row , api_configuration/dml_delete_with_where , rest_crud/dml_delete , rest_crud/dml_delete_all , … (+6 more)
MERGE
10
🟢🟢 Deep
happy×8 / null×1 / empty×1
api_configuration/dml_merge_basic , api_configuration/dml_merge_when_matched , api_configuration/dml_merge_when_not_matched , rest_crud/dml_merge , rest_crud/dml_merge_delete_branch , … (+5 more)
TRUNCATE TABLE
1
🟡 Sampled
happy×1
rest_crud/dml_truncate_select
Data Definition (DDL)
BigQuery reference -- 20 / 20 items covered
Schema-mutating DDL. Each form has wire-format implications (REST tables.insert / tables.patch / tables.delete) — coverage should pair the SQL form with the REST equivalent where BQ publishes both.
Item
Count
Tier
Variation
Fixtures
CREATE TABLE
449
🟢🟢 Deep
happy×356 / null×46 / empty×27 / bound×11 / error×15
api_configuration/default_dataset_insert_unqualified , api_configuration/default_dataset_join_partial_qualification , api_configuration/default_dataset_select_table , api_configuration/dest_clustering_fields_basic , api_configuration/dest_clustering_fields_invalid_column , … (+444 more)
CREATE TABLE … AS SELECT (CTAS)
72
🟢🟢 Deep
happy×66 / null×4 / empty×1 / bound×1 / error×1
partitioning_clustering/cluster_basic , partitioning_clustering/cluster_filtered , partitioning_clustering/partition_basic , partitioning_clustering/partition_hour_basic , partitioning_clustering/partition_hour_pruned , … (+67 more)
CREATE TABLE … (schema) AS SELECT (combined)
1
🟡 Sampled
happy×1
rest_crud/ctas_with_schema_clause
Combined form requires the CTAS-with-schema rewriter (closed 2026-05-18).
CREATE VIEW
11
🟢🟢 Deep
happy×9 / null×1 / empty×1
information_schema/is_tables_filter_by_type , information_schema/is_views_basic , information_schema/is_views_with_definition , rest_crud/ddl_create_view_empty_source , rest_crud/ddl_create_view_null_column , … (+6 more)
CREATE MATERIALIZED VIEW
8
🟢🟢 Deep
happy×6 / null×1 / empty×1
versioning/mv_basic , versioning/mv_drop_and_recreate , versioning/mv_empty_source , versioning/mv_null_aggregation , versioning/mv_refresh_after_dml , … (+3 more)
REFRESH MATERIALIZED VIEW / CALL BQ.REFRESH_MATERIALIZED_VIEW
1
🟡 Sampled
happy×1
versioning/mv_refresh_after_dml
CREATE SNAPSHOT TABLE
8
🟢🟢 Deep
happy×6 / null×1 / empty×1
versioning/snapshot_after_dml , versioning/snapshot_aggregate , versioning/snapshot_basic , versioning/snapshot_drop_recreate , versioning/snapshot_empty_source , … (+3 more)
CREATE TABLE … CLONE
8
🟢🟢 Deep
happy×6 / null×1 / empty×1
versioning/clone_after_source_dml , versioning/clone_aggregate , versioning/clone_basic , versioning/clone_diverges_after_insert , versioning/clone_empty_source , … (+3 more)
DROP TABLE
1
🟡 Sampled
error×1
rest_crud/error_drop_nonexistent_table
DROP VIEW
3
🟢 Covered
happy×3
rest_crud/ddl_drop_view_basic , rest_crud/ddl_drop_view_if_exists , rest_crud/ddl_drop_view_recreate
DROP MATERIALIZED VIEW
1
🟡 Sampled
happy×1
versioning/mv_drop_and_recreate
DROP SNAPSHOT TABLE
1
🟡 Sampled
happy×1
versioning/snapshot_drop_recreate
ALTER TABLE ADD COLUMN
1
🟡 Sampled
error×1
rest_crud/error_alter_nonexistent_table
ALTER TABLE DROP COLUMN
5
🟢 Covered
happy×3 / null×1 / empty×1
rest_crud/ddl_alter_drop_column_empty_table , rest_crud/ddl_alter_drop_column_null_data , rest_crud/ddl_alter_table_drop_column_basic , rest_crud/ddl_alter_table_drop_column_multiple , rest_crud/ddl_alter_table_drop_column_with_data
ALTER TABLE RENAME
2
🟡 Sampled
happy×2
rest_crud/ddl_alter_table_rename_basic , rest_crud/ddl_alter_table_rename_query_after
CREATE FUNCTION (SQL UDF)
16
🟢🟢 Deep
happy×13 / null×1 / empty×1 / error×1
routines_scripting/js_udf_array_to_array , routines_scripting/js_udf_in_group_by , routines_scripting/js_udf_int_to_int , routines_scripting/js_udf_json_roundtrip , routines_scripting/js_udf_nested_in_sql_udf , … (+11 more)
CREATE FUNCTION (JS UDF)
12
🟢🟢 Deep
happy×9 / null×1 / empty×1 / error×1
routines_scripting/js_udf_array_to_array , routines_scripting/js_udf_in_group_by , routines_scripting/js_udf_int_to_int , routines_scripting/js_udf_json_roundtrip , routines_scripting/js_udf_nested_in_sql_udf , … (+7 more)
CREATE TABLE FUNCTION (TVF)
7
🟢🟢 Deep
happy×5 / null×1 / empty×1
routines_scripting/tvf_aggregate_over , routines_scripting/tvf_chained , routines_scripting/tvf_create_and_select , routines_scripting/tvf_empty_output , routines_scripting/tvf_returns_struct_column , … (+2 more)
CREATE PROCEDURE
9
🟢🟢 Deep
happy×5 / null×2 / empty×2
routines_scripting/proc_basic , routines_scripting/proc_call_empty_string , routines_scripting/proc_call_in_script , routines_scripting/proc_call_null_arg , routines_scripting/proc_with_empty_body , … (+4 more)
CREATE ROW ACCESS POLICY (REST)
20
🟢🟢 Deep
happy×19 / error×1
row_access/authz_view_aggregation_through_bypass , row_access/authz_view_bypasses_rap , row_access/authz_view_chained , row_access/authz_view_join_two_authorized_bases , row_access/authz_view_with_where_pushdown , … (+15 more)
Setup happens via setup_rest.json POST, not SQL.
Query language
BigQuery reference -- 30 / 30 items covered
Composite SELECT shapes (joins, set ops, subqueries, window functions). Coverage depth here drives confidence that the translator handles real-world analytical queries.
Item
Count
Tier
Variation
Fixtures
SELECT
1155
🟢🟢 Deep
happy×845 / null×109 / empty×62 / bound×49 / unicode×40 / error×43 / tz×20
api_configuration/cache_disabled_with_count_distinct , api_configuration/cache_disabled_with_join , api_configuration/create_never_missing_destination , api_configuration/create_never_with_append , api_configuration/create_never_with_truncate , … (+1150 more)
WHERE
193
🟢🟢 Deep
happy×165 / null×22 / empty×3 / bound×1 / error×2
api_configuration/dml_delete_multi_row , api_configuration/dml_delete_single_row , api_configuration/dml_delete_with_where , api_configuration/dml_update_multi_row , api_configuration/dml_update_single_row , … (+188 more)
GROUP BY
123
🟢🟢 Deep
happy×98 / null×21 / empty×2 / bound×2
api_configuration/default_dataset_join_partial_qualification , api_configuration/dry_run_aggregate , partitioning_clustering/cluster_basic , partitioning_clustering/wildcard_aggregate , partitioning_clustering/wildcard_count_per_table , … (+118 more)
HAVING
16
🟢🟢 Deep
happy×12 / null×3 / empty×1
rest_crud/select_group_having , rest_crud/subquery_in , standard_functions/rw_having_count , standard_functions/rw_having_empty_after_filter , standard_functions/rw_having_null_group , … (+11 more)
QUALIFY
5
🟢 Covered
happy×4 / null×1
standard_functions/rw_qualify_basic , standard_functions/rw_qualify_top_n , standard_functions/tpcds_q14 , standard_functions/tpcds_q16 , standard_functions/tpcds_q73
ORDER BY
313
🟢🟢 Deep
happy×263 / null×35 / empty×9 / bound×3 / error×3
api_configuration/cache_disabled_with_join , api_configuration/default_dataset_join_partial_qualification , api_configuration/default_dataset_select_table , api_configuration/dry_run_aggregate , api_configuration/positional_array_int64 , … (+308 more)
LIMIT
80
🟢🟢 Deep
happy×62 / null×15 / empty×4
partitioning_clustering/wildcard_join_self , rest_crud/select_limit , rest_crud/select_limit_offset , standard_functions/agg_array_agg_ordered , standard_functions/agg_percentile_cont_50 , … (+75 more)
OFFSET
1
🟡 Sampled
happy×1
rest_crud/select_limit_offset
SELECT DISTINCT
15
🟢🟢 Deep
happy×13 / empty×1 / bound×1
rest_crud/select_distinct , standard_functions/distinct_empty , standard_functions/rw_array_subquery , standard_functions/rw_correlated_subquery_max , standard_functions/rw_join_anti , … (+10 more)
UNION ALL
85
🟢🟢 Deep
happy×80 / null×4 / empty×1
api_configuration/cache_disabled_with_join , api_configuration/dml_merge_basic , api_configuration/dml_merge_when_matched , api_configuration/dml_merge_when_not_matched , api_configuration/dry_run_aggregate , … (+80 more)
UNION DISTINCT
1
🟡 Sampled
happy×1
rest_crud/set_union_distinct
INTERSECT
3
🟢 Covered
happy×3
rest_crud/set_intersect , standard_functions/tpcds_q14 , standard_functions/tpcds_q38
EXCEPT
2
🟡 Sampled
happy×2
rest_crud/set_except , standard_functions/tpcds_q87
INNER JOIN
66
🟢🟢 Deep
happy×52 / null×11 / empty×1 / bound×1 / error×1
api_configuration/cache_disabled_with_join , api_configuration/default_dataset_join_partial_qualification , api_configuration/job_timeout_exceeded , api_configuration/max_bytes_billed_exceeded , api_configuration/priority_batch_with_join , … (+61 more)
LEFT JOIN
12
🟢🟢 Deep
happy×7 / null×4 / empty×1
rest_crud/join_left , rest_crud/join_right_three_way , standard_functions/rw_join_left_empty_right , standard_functions/rw_join_left_filtered , standard_functions/rw_join_left_null_key , … (+7 more)
RIGHT JOIN
3
🟢 Covered
happy×2 / null×1
rest_crud/join_right_basic , rest_crud/join_right_three_way , rest_crud/join_right_with_null
FULL OUTER JOIN
3
🟢 Covered
happy×1 / null×2
standard_functions/tpcds_q51 , standard_functions/tpcds_q97 , versioning/clone_join_with_source
CROSS JOIN
4
🟢 Covered
happy×3 / bound×1
api_configuration/job_timeout_exceeded , api_configuration/max_bytes_billed_exceeded , rest_crud/join_cross , standard_functions/tpcds_q28
UNNEST
27
🟢🟢 Deep
happy×19 / null×2 / empty×5 / bound×1
api_configuration/cache_disabled_with_count_distinct , api_configuration/dml_insert_select , api_configuration/job_timeout_exceeded , api_configuration/max_bytes_billed_exceeded , api_configuration/positional_array_int64 , … (+22 more)
WITH (CTE)
29
🟢🟢 Deep
happy×18 / null×10 / empty×1
rest_crud/cte_basic , rest_crud/param_positional_in_join_predicate , standard_functions/cte_empty_first , standard_functions/rw_cte_correlated , standard_functions/rw_double_cte , … (+24 more)
WITH RECURSIVE
1
🟡 Sampled
happy×1
routines_scripting/recursive_cte
Window functions (OVER)
47
🟢🟢 Deep
happy×38 / null×7 / empty×1 / error×1
rest_crud/win_dense_rank , rest_crud/win_lag , rest_crud/win_lead , rest_crud/win_partition_by , rest_crud/win_rank , … (+42 more)
CASE WHEN
27
🟢🟢 Deep
happy×12 / null×15
rest_crud/case_searched , standard_functions/rw_case_in_aggregate , standard_functions/tpcds_q2 , standard_functions/tpcds_q21 , standard_functions/tpcds_q31 , … (+22 more)
EXISTS
10
🟢🟢 Deep
happy×8 / null×1 / empty×1
rest_crud/dml_delete_exists , rest_crud/subquery_exists , standard_functions/rw_exists_empty_subquery , standard_functions/rw_exists_subquery_with_null , standard_functions/rw_join_semi , … (+5 more)
IN (subquery)
20
🟢🟢 Deep
happy×16 / null×3 / empty×2
rest_crud/dml_update_subquery , rest_crud/subquery_in , routines_scripting/script_for_empty_array , routines_scripting/script_for_iterate_into_table , routines_scripting/script_for_iterate_select , … (+15 more)
Wildcard tables (prefix_*)
110
🟢🟢 Deep
happy×86 / null×9 / empty×14 / error×1
information_schema/is_partitions_empty_table , information_schema/is_views_empty_dataset , partitioning_clustering/cluster_basic , partitioning_clustering/partition_prune_integer_range , partitioning_clustering/partition_prune_partitiontime , … (+105 more)
_TABLE_SUFFIX pseudo-column
6
🟢🟢 Deep
happy×6
partitioning_clustering/wildcard_count_per_table , partitioning_clustering/wildcard_groupby_suffix , partitioning_clustering/wildcard_join_self , partitioning_clustering/wildcard_table_basic , partitioning_clustering/wildcard_table_suffix , … (+1 more)
Partition pruning (WHERE on partition col)
4
🟢 Covered
happy×4
information_schema/is_partitions_ingestion_time , partitioning_clustering/partition_prune_integer_range , partitioning_clustering/partition_prune_partitiondate , partitioning_clustering/partition_prune_partitiontime
FOR SYSTEM_TIME AS OF (time travel) (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §7 — the relative-timestamp form depends on wall-clock state. Dynamic time-travel is exercised at the integration tier (tests/integration/test_time_travel.py).
TABLESAMPLE (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 — TABLESAMPLE SYSTEM is non-deterministic (random sampling). Shape-only coverage lives in unit / integration tiers.
PIVOT
7
🟢🟢 Deep
happy×5 / null×2
standard_functions/rw_pivot_count_by_type , standard_functions/rw_pivot_sum_by_type , standard_functions/tpcds_q43 , standard_functions/tpcds_q50 , standard_functions/tpcds_q53 , … (+2 more)
UNPIVOT
1
🟡 Sampled
happy×1
standard_functions/rw_unpivot_basic
Procedural scripting
BigQuery reference -- 14 / 14 items covered
Multi-statement scripting features — the interpreter at src/bqemulator/scripting/interpreter.py.
Item
Count
Tier
Variation
Fixtures
DECLARE
23
🟢🟢 Deep
happy×15 / null×5 / empty×2 / bound×1
api_configuration/session_declared_var_shared , routines_scripting/proc_call_empty_string , routines_scripting/proc_call_in_script , routines_scripting/proc_call_null_arg , routines_scripting/proc_with_inout_param , … (+18 more)
SET (script variable)
36
🟢🟢 Deep
happy×28 / null×5 / empty×3
api_configuration/dml_merge_basic , api_configuration/dml_merge_when_matched , api_configuration/dml_update_multi_row , api_configuration/dml_update_single_row , api_configuration/dml_update_with_where , … (+31 more)
IF / ELSEIF / ELSE
3
🟢 Covered
happy×2 / null×1
routines_scripting/script_for_null_in_array , routines_scripting/script_if_then , routines_scripting/script_loop_break
WHILE
1
🟡 Sampled
happy×1
routines_scripting/script_while
LOOP
1
🟡 Sampled
happy×1
routines_scripting/script_loop_break
FOR (loop)
5
🟢 Covered
happy×3 / null×1 / empty×1
routines_scripting/script_for_empty_array , routines_scripting/script_for_iterate_into_table , routines_scripting/script_for_iterate_select , routines_scripting/script_for_iterate_with_aggregate , routines_scripting/script_for_null_in_array
BREAK / CONTINUE
1
🟡 Sampled
happy×1
routines_scripting/script_loop_break
BEGIN … END (block)
14
🟢🟢 Deep
happy×8 / null×3 / empty×3
routines_scripting/proc_basic , routines_scripting/proc_call_empty_string , routines_scripting/proc_call_in_script , routines_scripting/proc_call_null_arg , routines_scripting/proc_with_empty_body , … (+9 more)
BEGIN … EXCEPTION WHEN ERROR
2
🟡 Sampled
happy×2
routines_scripting/script_exception_handler , routines_scripting/txn_in_exception_block
RAISE
1
🟡 Sampled
error×1
rest_crud/error_alter_nonexistent_table
CALL (procedure)
10
🟢🟢 Deep
happy×6 / null×2 / empty×2
routines_scripting/proc_basic , routines_scripting/proc_call_empty_string , routines_scripting/proc_call_in_script , routines_scripting/proc_call_null_arg , routines_scripting/proc_with_empty_body , … (+5 more)
EXECUTE IMMEDIATE
2
🟡 Sampled
happy×2
routines_scripting/script_exception_handler , routines_scripting/txn_in_exception_block
RETURN
31
🟢🟢 Deep
happy×28 / null×2 / empty×1
routines_scripting/js_udf_array_to_array , routines_scripting/js_udf_in_group_by , routines_scripting/js_udf_int_to_int , routines_scripting/js_udf_json_roundtrip , routines_scripting/js_udf_nested_in_sql_udf , … (+26 more)
BEGIN TRANSACTION / COMMIT / ROLLBACK
5
🟢 Covered
happy×3 / null×1 / empty×1
routines_scripting/script_transaction_empty_body , routines_scripting/script_transaction_null_insert , routines_scripting/txn_begin_commit , routines_scripting/txn_begin_rollback , routines_scripting/txn_in_exception_block
Data types
BigQuery reference -- 17 / 17 items covered
Every BigQuery scalar + compound type. Coverage should exercise the type as a column type, in a literal, and through CAST.
Item
Count
Tier
Variation
Fixtures
INT64
441
🟢🟢 Deep
happy×324 / null×61 / empty×39 / bound×8 / error×19
api_configuration/default_dataset_insert_unqualified , api_configuration/default_dataset_join_partial_qualification , api_configuration/default_dataset_select_table , api_configuration/dest_clustering_fields_basic , api_configuration/dest_clustering_fields_invalid_column , … (+436 more)
FLOAT64
47
🟢🟢 Deep
happy×32 / null×8 / bound×7
information_schema/is_columns_partitioning_column , routines_scripting/js_udf_uses_math , standard_functions/agg_approx_count_distinct , standard_functions/agg_approx_quantiles , standard_functions/agg_approx_top_count , … (+42 more)
NUMERIC
222
🟢🟢 Deep
happy×192 / null×18 / empty×3 / bound×9
information_schema/is_tables_basic , partitioning_clustering/partition_basic , partitioning_clustering/partition_month_basic , partitioning_clustering/partition_month_pruned , partitioning_clustering/partition_pruned , … (+217 more)
BIGNUMERIC
3
🟢 Covered
bound×3
rest_crud/select_bignumeric_literal , standard_functions/bound_bignumeric_max , standard_functions/parse_bignumeric_basic
BOOL
5
🟢 Covered
happy×4 / null×1
api_configuration/positional_multi_param , information_schema/is_table_options_partition_filter , routines_scripting/js_udf_uses_regexp , standard_functions/json_value_bool_extractor , standard_functions/null_if_branch
STRING
590
🟢🟢 Deep
happy×451 / null×70 / empty×37 / bound×12 / unicode×12 / error×12 / tz×1
api_configuration/cache_disabled_with_join , api_configuration/default_dataset_insert_unqualified , api_configuration/default_dataset_join_partial_qualification , api_configuration/default_dataset_select_table , api_configuration/dest_clustering_fields_basic , … (+585 more)
BYTES
7
🟢🟢 Deep
happy×4 / error×3
rest_crud/select_bytes_literal , specialized_types/st_asbinary_point , standard_functions/error_concat_no_args , standard_functions/error_safe_cast_no_swallow_when_invalid_signature , standard_functions/error_substr_wrong_arity , … (+2 more)
DATE
187
🟢🟢 Deep
happy×156 / null×14 / empty×3 / bound×8 / error×4 / tz×2
api_configuration/dest_time_partitioning_basic , api_configuration/write_append_partitioned_destination , api_configuration/write_truncate_partitioned_destination , information_schema/is_columns_partitioning_column , information_schema/is_partitions_basic , … (+182 more)
TIME
41
🟢🟢 Deep
happy×31 / error×2 / tz×10
rest_crud/select_time_literal , standard_functions/dt_format_time_basic , standard_functions/dt_format_time_fractional , standard_functions/dt_time_add_basic , standard_functions/dt_time_add_wrap_midnight , … (+36 more)
DATETIME
23
🟢🟢 Deep
happy×19 / bound×2 / tz×2
rest_crud/select_datetime_literal , specialized_types/interval_arith_add , specialized_types/interval_arith_chain , specialized_types/interval_arith_sub , specialized_types/interval_compound_arith , … (+18 more)
TIMESTAMP
103
🟢🟢 Deep
happy×76 / null×3 / bound×5 / error×1 / tz×19
information_schema/is_tables_select_specific_columns , partitioning_clustering/partition_hour_basic , partitioning_clustering/partition_hour_pruned , partitioning_clustering/partition_prune_partitiontime , rest_crud/param_named_timestamp_scalar , … (+98 more)
INTERVAL
45
🟢🟢 Deep
happy×39 / null×4 / tz×2
specialized_types/extract_day_from_interval , specialized_types/extract_hour_from_interval , specialized_types/extract_year_from_interval , specialized_types/generate_range_array_date , specialized_types/interval_arith_add , … (+40 more)
RANGE<T>
26
🟢🟢 Deep
happy×19 / null×1 / empty×2 / bound×2 / error×2
specialized_types/error_range_sessionize_invalid_mode , specialized_types/generate_range_array_date , specialized_types/range_array_aggregate , specialized_types/range_contains_no , specialized_types/range_contains_yes , … (+21 more)
GEOGRAPHY
3
🟢 Covered
happy×2 / null×1
specialized_types/geography_column_basic , specialized_types/geography_column_insert , specialized_types/geography_column_select_filter
JSON
12
🟢🟢 Deep
happy×11 / null×1
routines_scripting/js_udf_json_roundtrip , specialized_types/st_asgeojson_in_parse_json_roundtrip , standard_functions/json_array_construct , standard_functions/json_array_insert_at_zero , standard_functions/json_array_insert_nested , … (+7 more)
ARRAY<T>
20
🟢🟢 Deep
happy×6 / null×1 / empty×13 / error×2
information_schema/is_columns_with_struct_field , rest_crud/dml_insert_array_value , routines_scripting/js_udf_array_to_array , routines_scripting/js_udf_returns_array_of_struct , routines_scripting/script_for_empty_array , … (+15 more)
STRUCT<...>
5
🟢 Covered
happy×4 / empty×1
information_schema/is_columns_with_struct_field , rest_crud/dml_insert_struct_value , routines_scripting/js_udf_returns_array_of_struct , routines_scripting/js_udf_struct_to_struct , routines_scripting/sql_udf_returns_struct
String functions
BigQuery reference -- 51 / 51 items covered
Item
Count
Tier
Variation
Fixtures
ASCII
1
🟡 Sampled
happy×1
standard_functions/str_ascii_basic
BYTE_LENGTH
3
🟢 Covered
unicode×3
standard_functions/unicode_byte_length_ascii , standard_functions/unicode_byte_length_cjk , standard_functions/unicode_byte_length_emoji
CHAR_LENGTH
3
🟢 Covered
happy×1 / unicode×2
standard_functions/str_char_length , standard_functions/unicode_cjk_char_length , standard_functions/unicode_combining_char_length
CHR
1
🟡 Sampled
happy×1
standard_functions/str_chr_basic
CODE_POINTS_TO_BYTES
2
🟡 Sampled
happy×1 / empty×1
standard_functions/str_code_points_to_bytes_basic , standard_functions/str_code_points_to_bytes_empty
CODE_POINTS_TO_STRING
1
🟡 Sampled
happy×1
standard_functions/str_code_points_to_string
COLLATE
2
🟡 Sampled
happy×1 / error×1
standard_functions/str_collate_binary , standard_functions/str_collate_undci
CONCAT
14
🟢🟢 Deep
happy×7 / null×2 / empty×3 / unicode×1 / error×1
rest_crud/dml_insert_select , rest_crud/select_string_concat_fn , routines_scripting/proc_call_empty_string , routines_scripting/proc_call_null_arg , routines_scripting/sql_udf_string_param , … (+9 more)
CONTAINS_SUBSTR
1
🟡 Sampled
happy×1
standard_functions/str_contains_substr
ENDS_WITH
5
🟢 Covered
happy×3 / null×1 / empty×1
standard_functions/str_ends_with , standard_functions/str_ends_with_empty , standard_functions/str_ends_with_no , standard_functions/str_ends_with_null , standard_functions/str_ends_with_yes
FORMAT
7
🟢🟢 Deep
happy×5 / null×1 / empty×1
standard_functions/str_format_empty_pattern , standard_functions/str_format_float , standard_functions/str_format_hex , standard_functions/str_format_int , standard_functions/str_format_null , … (+2 more)
FROM_BASE32
2
🟡 Sampled
happy×2
standard_functions/str_from_base32_basic , standard_functions/str_from_base32_padding
FROM_BASE64
1
🟡 Sampled
happy×1
standard_functions/str_from_base64
FROM_HEX
2
🟡 Sampled
happy×2
specialized_types/st_geogfromwkb_point , standard_functions/str_from_hex
INITCAP
1
🟡 Sampled
happy×1
standard_functions/str_initcap
INSTR
2
🟡 Sampled
happy×2
standard_functions/str_instr_one_arg , standard_functions/str_instr_three_arg
LEFT
1
🟡 Sampled
happy×1
standard_functions/str_left
LENGTH
8
🟢🟢 Deep
happy×2 / null×1 / empty×1 / unicode×4
standard_functions/bound_string_long , standard_functions/empty_string_length , standard_functions/null_length , standard_functions/str_length , standard_functions/str_normalize_nfd , … (+3 more)
LOWER
3
🟢 Covered
happy×1 / null×1 / unicode×1
standard_functions/null_lower , standard_functions/str_lower , standard_functions/unicode_diacritic_lower
LPAD
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_lpad , standard_functions/str_lpad
LTRIM
1
🟡 Sampled
happy×1
standard_functions/str_ltrim
NORMALIZE
2
🟡 Sampled
unicode×2
standard_functions/str_normalize_nfc , standard_functions/str_normalize_nfd
NORMALIZE_AND_CASEFOLD
1
🟡 Sampled
unicode×1
standard_functions/str_normalize_casefold
OCTET_LENGTH
2
🟡 Sampled
happy×1 / unicode×1
standard_functions/str_octet_length_ascii , standard_functions/str_octet_length_utf8
REGEXP_CONTAINS
3
🟢 Covered
happy×1 / null×1 / unicode×1
standard_functions/null_regexp_contains , standard_functions/str_regexp_contains , standard_functions/unicode_regexp_unicode_class
REGEXP_EXTRACT
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_regexp_extract , standard_functions/str_regexp_extract
REGEXP_EXTRACT_ALL
2
🟡 Sampled
happy×1 / empty×1
standard_functions/empty_string_regexp_split , standard_functions/str_regexp_extract_all
REGEXP_INSTR
1
🟡 Sampled
happy×1
standard_functions/str_regexp_instr
REGEXP_REPLACE
1
🟡 Sampled
happy×1
standard_functions/str_regexp_replace
REGEXP_SUBSTR
3
🟢 Covered
happy×3
standard_functions/str_regexp_substr_basic , standard_functions/str_regexp_substr_group , standard_functions/str_regexp_substr_no_match
REPEAT
3
🟢 Covered
happy×3
standard_functions/bound_string_long , standard_functions/str_repeat , standard_functions/str_repeat_zero
REPLACE
4
🟢 Covered
happy×1 / null×1 / empty×2
standard_functions/null_replace , standard_functions/str_replace , standard_functions/str_replace_empty_target , standard_functions/str_replace_with_empty
REVERSE
1
🟡 Sampled
happy×1
standard_functions/str_reverse
RIGHT
1
🟡 Sampled
happy×1
standard_functions/str_right
RPAD
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_rpad , standard_functions/str_rpad
RTRIM
1
🟡 Sampled
happy×1
standard_functions/str_rtrim
SAFE_CONVERT_BYTES_TO_STRING
2
🟡 Sampled
happy×2
standard_functions/str_from_base64 , standard_functions/str_safe_convert_bytes_to_string
SOUNDEX
2
🟡 Sampled
happy×1 / unicode×1
standard_functions/str_soundex_basic , standard_functions/str_soundex_nonascii
SPLIT
6
🟢🟢 Deep
happy×2 / null×1 / empty×2 / unicode×1
standard_functions/empty_string_split , standard_functions/null_split , standard_functions/str_split , standard_functions/str_split_empty_delim , standard_functions/str_split_limit , … (+1 more)
STARTS_WITH
3
🟢 Covered
happy×1 / null×1 / unicode×1
standard_functions/null_starts_with , standard_functions/str_starts_with , standard_functions/unicode_starts_with_cjk
STRPOS
1
🟡 Sampled
happy×1
standard_functions/str_strpos
SUBSTR
16
🟢🟢 Deep
happy×11 / null×1 / unicode×2 / error×2
partitioning_clustering/wildcard_groupby_suffix , standard_functions/error_safe_cast_no_swallow_when_invalid_signature , standard_functions/error_substr_wrong_arity , standard_functions/null_substr , standard_functions/str_substr_three_arg , … (+11 more)
SUBSTRING
2
🟡 Sampled
happy×2
standard_functions/str_substring_basic , standard_functions/str_substring_negative_offset
TO_BASE32
2
🟡 Sampled
happy×1 / empty×1
standard_functions/str_to_base32_basic , standard_functions/str_to_base32_empty
TO_BASE64
2
🟡 Sampled
happy×2
standard_functions/str_from_hex , standard_functions/str_to_base64
TO_CODE_POINTS
2
🟡 Sampled
happy×1 / unicode×1
standard_functions/str_string_to_code_points , standard_functions/unicode_to_code_points
TO_HEX
10
🟢🟢 Deep
happy×9 / empty×1
standard_functions/agg_hll_count_init_basic , standard_functions/agg_hll_count_merge_partial_basic , standard_functions/hash_md5 , standard_functions/hash_sha1_basic , standard_functions/hash_sha256 , … (+5 more)
TRANSLATE
1
🟡 Sampled
happy×1
standard_functions/str_translate
TRIM
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_trim , standard_functions/str_trim
UNICODE
2
🟡 Sampled
unicode×2
standard_functions/str_unicode_ascii , standard_functions/str_unicode_codepoint
UPPER
8
🟢🟢 Deep
happy×3 / null×1 / empty×1 / unicode×3
routines_scripting/sql_udf_string_param , standard_functions/empty_string_upper , standard_functions/null_upper , standard_functions/str_upper , standard_functions/tpcds_q24 , … (+3 more)
Numeric / math functions
BigQuery reference -- 47 / 47 items covered
Item
Count
Tier
Variation
Fixtures
ABS
6
🟢🟢 Deep
happy×1 / null×5
rest_crud/arith_abs , standard_functions/null_abs , standard_functions/tpcds_q47 , standard_functions/tpcds_q53 , standard_functions/tpcds_q57 , … (+1 more)
ACOS
1
🟡 Sampled
happy×1
standard_functions/math_acos
ACOSH
1
🟡 Sampled
happy×1
standard_functions/math_acosh
ASIN
1
🟡 Sampled
happy×1
standard_functions/math_asin
ASINH
1
🟡 Sampled
happy×1
standard_functions/math_asinh
ATAN
1
🟡 Sampled
happy×1
standard_functions/math_atan
ATAN2
1
🟡 Sampled
happy×1
standard_functions/math_atan2
ATANH
1
🟡 Sampled
happy×1
standard_functions/math_atanh
CBRT
2
🟡 Sampled
happy×2
standard_functions/math_cbrt_negative , standard_functions/math_cbrt_positive
CEIL
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_ceil , standard_functions/num_ceil
CEILING
2
🟡 Sampled
happy×2
standard_functions/math_ceiling_basic , standard_functions/math_ceiling_negative
COS
4
🟢 Covered
happy×2 / unicode×2
specialized_types/spheroidal_distance_street_match , specialized_types/spheroidal_high_latitude_distance , standard_functions/math_cos , standard_functions/math_sec
COSH
1
🟡 Sampled
happy×1
standard_functions/math_cosh
COT
2
🟡 Sampled
happy×2
standard_functions/math_cot_basic , standard_functions/math_cot_negative
COTH
2
🟡 Sampled
happy×2
standard_functions/math_coth_basic , standard_functions/math_coth_negative
CSC
2
🟡 Sampled
happy×2
standard_functions/math_csc_basic , standard_functions/math_csc_negative
CSCH
2
🟡 Sampled
happy×2
standard_functions/math_csch_basic , standard_functions/math_csch_negative
DIV
1
🟡 Sampled
happy×1
standard_functions/math_div_int
EXP
2
🟡 Sampled
happy×2
standard_functions/num_exp , standard_functions/num_ln
FLOOR
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_floor , standard_functions/num_floor
GREATEST
1
🟡 Sampled
happy×1
standard_functions/num_greatest
IEEE_DIVIDE
2
🟡 Sampled
happy×1 / bound×1
standard_functions/div_zero_ieee_divide_keeps_inf , standard_functions/math_ieee_divide
IS_INF
4
🟢 Covered
happy×1 / bound×3
standard_functions/bound_float64_is_inf_finite , standard_functions/bound_float64_isinf , standard_functions/div_zero_ieee_divide_keeps_inf , standard_functions/math_ieee_divide
IS_NAN
2
🟡 Sampled
bound×2
standard_functions/bound_float64_isnan , standard_functions/bound_log_negative_returns_nan
LEAST
1
🟡 Sampled
happy×1
standard_functions/num_least
LN
4
🟢 Covered
happy×2 / bound×1 / error×1
standard_functions/bound_log_negative_returns_nan , standard_functions/bound_neg_log_safe , standard_functions/div_zero_safe_swallows , standard_functions/num_ln
LOG
1
🟡 Sampled
happy×1
standard_functions/num_log_basex
LOG10
2
🟡 Sampled
happy×1 / null×1
standard_functions/null_log , standard_functions/num_log10
MOD
10
🟢🟢 Deep
happy×8 / null×1 / bound×1
rest_crud/arith_mod , standard_functions/agg_grouping_cube , standard_functions/agg_grouping_rollup , standard_functions/agg_grouping_sets , standard_functions/agg_string_agg_distinct , … (+5 more)
POW
3
🟢 Covered
happy×2 / null×1
rest_crud/arith_pow , standard_functions/bound_pow_zero_zero , standard_functions/null_pow
POWER
2
🟡 Sampled
happy×2
standard_functions/math_power_basic , standard_functions/math_power_fractional
RAND (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 — RAND() is non-deterministic. The function is property-tested via Hypothesis (uniformity, range bounds).
RANGE_BUCKET
5
🟢 Covered
happy×3 / null×1 / empty×1
partitioning_clustering/partition_int_range , partitioning_clustering/partition_int_range_pruned , standard_functions/math_range_bucket , standard_functions/math_range_bucket_empty_bounds , standard_functions/math_range_bucket_null
ROUND
63
🟢🟢 Deep
happy×61 / null×2
standard_functions/agg_corr , standard_functions/agg_covar_pop , standard_functions/agg_covar_samp , standard_functions/agg_stddev_basic , standard_functions/agg_stddev_pop , … (+58 more)
SAFE_ADD
2
🟡 Sampled
happy×1 / bound×1
standard_functions/bound_int64_overflow_safe , standard_functions/math_safe_add
SAFE_DIVIDE
7
🟢🟢 Deep
happy×5 / null×1 / bound×1
rest_crud/arith_div_safe , standard_functions/bound_zero_div_safe , standard_functions/bound_zero_div_safe_zero , standard_functions/math_div_safe , standard_functions/math_safe_divide_boundary , … (+2 more)
SAFE_MULTIPLY
1
🟡 Sampled
happy×1
standard_functions/math_safe_multiply
SAFE_NEGATE
2
🟡 Sampled
happy×1 / bound×1
standard_functions/math_safe_negate , standard_functions/math_safe_negate_overflow
SAFE_SUBTRACT
1
🟡 Sampled
happy×1
standard_functions/math_safe_subtract
SEC
2
🟡 Sampled
happy×2
standard_functions/math_sec_basic , standard_functions/math_sec_negative
SECH
2
🟡 Sampled
happy×2
standard_functions/math_sech_basic , standard_functions/math_sech_negative
SIGN
5
🟢 Covered
happy×3 / null×1 / bound×1
standard_functions/math_sign_inf , standard_functions/math_sign_null , standard_functions/num_sign_neg , standard_functions/num_sign_pos , standard_functions/num_sign_zero
SIN
2
🟡 Sampled
happy×2
standard_functions/math_csc , standard_functions/math_sin
SINH
1
🟡 Sampled
happy×1
standard_functions/math_sinh
SQRT
4
🟢 Covered
happy×3 / null×1
routines_scripting/js_udf_uses_math , standard_functions/bound_neg_sqrt_safe , standard_functions/null_sqrt , standard_functions/num_sqrt
TAN
2
🟡 Sampled
happy×2
standard_functions/math_cot , standard_functions/math_tan
TANH
1
🟡 Sampled
happy×1
standard_functions/math_tanh
TRUNC
1
🟡 Sampled
happy×1
standard_functions/num_trunc
Date / time / timestamp / datetime functions
BigQuery reference -- 40 / 40 items covered
Item
Count
Tier
Variation
Fixtures
CURRENT_DATE (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent. Static-date queries are exercised indirectly via DATE_ADD/DATE_SUB fixtures.
CURRENT_DATETIME (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent.
CURRENT_TIME (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent.
CURRENT_TIMESTAMP (excluded — non-deterministic)
n/a
⚪ Excluded
n/a
see ADR 0022 §1.2 / §7
Excluded from the conformance corpus by ADR 0022 §1.2 / §7 — wall-clock dependent. The function is exercised in unit / integration tiers where the harness pins time.
DATE
3
🟢 Covered
happy×3
standard_functions/dt_date_constructor , standard_functions/rw_daily_revenue , standard_functions/tpcds_q79
DATETIME
2
🟡 Sampled
happy×1 / tz×1
standard_functions/dt_datetime_constructor , standard_functions/tz_datetime_from_timestamp_named_zone
DATE_ADD
12
🟢🟢 Deep
happy×8 / null×4
standard_functions/dt_date_add_day , standard_functions/null_date_add , standard_functions/tpcds_q12 , standard_functions/tpcds_q16 , standard_functions/tpcds_q20 , … (+7 more)
DATE_DIFF
6
🟢🟢 Deep
happy×5 / null×1
specialized_types/date_diff_day , specialized_types/date_diff_month , specialized_types/date_diff_year , standard_functions/dt_date_diff_day , standard_functions/dt_date_diff_year , … (+1 more)
DATE_FROM_UNIX_DATE
1
🟡 Sampled
happy×1
standard_functions/dt_date_from_unix_date
DATE_SUB
2
🟡 Sampled
happy×1 / null×1
standard_functions/dt_date_sub_day , standard_functions/tpcds_q21
DATE_TRUNC
11
🟢🟢 Deep
happy×9 / null×1 / bound×1
partitioning_clustering/partition_month_basic , partitioning_clustering/partition_month_pruned , partitioning_clustering/partition_year_basic , partitioning_clustering/partition_year_pruned , standard_functions/dt_date_trunc_isoyear , … (+6 more)
DATETIME_ADD
1
🟡 Sampled
happy×1
standard_functions/dt_datetime_add
DATETIME_DIFF
2
🟡 Sampled
happy×2
standard_functions/dt_datetime_diff_hour , standard_functions/dt_datetime_diff_minute
DATETIME_SUB
1
🟡 Sampled
happy×1
standard_functions/dt_datetime_sub
DATETIME_TRUNC
2
🟡 Sampled
happy×2
standard_functions/dt_datetime_trunc , standard_functions/dt_datetime_trunc_day
EXTRACT
32
🟢🟢 Deep
happy×22 / null×1 / error×1 / tz×9
partitioning_clustering/partition_year_pruned , specialized_types/extract_day_from_interval , specialized_types/extract_hour_from_interval , specialized_types/extract_year_from_interval , specialized_types/interval_extract_microsecond , … (+27 more)
FORMAT_DATE
5
🟢 Covered
happy×3 / null×1 / bound×1
standard_functions/dt_format_date , standard_functions/dt_format_date_min , standard_functions/dt_format_date_null , standard_functions/dt_format_date_pct_a , standard_functions/dt_format_date_pct_b
FORMAT_DATETIME
2
🟡 Sampled
happy×2
standard_functions/dt_format_datetime_basic , standard_functions/dt_format_datetime_iso_week
FORMAT_TIME
2
🟡 Sampled
happy×2
standard_functions/dt_format_time_basic , standard_functions/dt_format_time_fractional
FORMAT_TIMESTAMP
3
🟢 Covered
happy×2 / tz×1
standard_functions/dt_format_timestamp , standard_functions/dt_format_timestamp_with_tz , standard_functions/tz_format_timestamp_named_zone
GENERATE_DATE_ARRAY
1
🟡 Sampled
happy×1
standard_functions/arr_generate_date_array
GENERATE_TIMESTAMP_ARRAY
3
🟢 Covered
happy×3
standard_functions/dt_generate_timestamp_array_basic , standard_functions/dt_generate_timestamp_array_descending , standard_functions/dt_generate_timestamp_array_step_minute
LAST_DAY
5
🟢 Covered
happy×3 / null×1 / bound×1
standard_functions/dt_last_day_min , standard_functions/dt_last_day_month , standard_functions/dt_last_day_null , standard_functions/dt_last_day_week , standard_functions/dt_last_day_year
PARSE_DATE
2
🟡 Sampled
happy×2
standard_functions/dt_parse_date , standard_functions/parse_date_format
PARSE_DATETIME
2
🟡 Sampled
happy×2
standard_functions/dt_parse_datetime_basic , standard_functions/dt_parse_datetime_iso
PARSE_TIME
1
🟡 Sampled
happy×1
standard_functions/parse_time_format
PARSE_TIMESTAMP
3
🟢 Covered
happy×1 / error×1 / tz×2
standard_functions/parse_timestamp_format , standard_functions/tz_parse_timestamp_with_named_zone , standard_functions/tz_parse_timestamp_with_offset
TIME
2
🟡 Sampled
happy×2
standard_functions/dt_time_constructor_hms , standard_functions/dt_time_from_timestamp
TIME_ADD
2
🟡 Sampled
happy×2
standard_functions/dt_time_add_basic , standard_functions/dt_time_add_wrap_midnight
TIME_DIFF
2
🟡 Sampled
happy×2
standard_functions/dt_time_diff_microsecond , standard_functions/dt_time_diff_seconds
TIME_SUB
2
🟡 Sampled
happy×2
standard_functions/dt_time_sub_basic , standard_functions/dt_time_sub_wrap_midnight
TIME_TRUNC
2
🟡 Sampled
happy×2
standard_functions/dt_time_trunc_hour , standard_functions/dt_time_trunc_minute
TIMESTAMP
2
🟡 Sampled
happy×1 / tz×1
standard_functions/dt_timestamp_constructor , standard_functions/tz_timestamp_from_datetime_named_zone
TIMESTAMP_ADD
4
🟢 Covered
happy×2 / tz×2
specialized_types/interval_with_timestamp_add , standard_functions/dt_timestamp_add_seconds , standard_functions/tz_timestamp_add_across_dst_fall , standard_functions/tz_timestamp_add_across_dst_spring
TIMESTAMP_DIFF
7
🟢🟢 Deep
happy×5 / null×1 / tz×1
standard_functions/dt_timestamp_diff_hour , standard_functions/dt_timestamp_diff_millisecond , standard_functions/dt_timestamp_diff_minute , standard_functions/dt_timestamp_diff_seconds , standard_functions/rw_self_join_lag , … (+2 more)
TIMESTAMP_MICROS
1
🟡 Sampled
bound×1
standard_functions/dt_timestamp_micros
TIMESTAMP_MILLIS
1
🟡 Sampled
happy×1
standard_functions/dt_timestamp_millis
TIMESTAMP_SECONDS
2
🟡 Sampled
happy×1 / tz×1
standard_functions/dt_timestamp_seconds , standard_functions/tz_timestamp_seconds_round_trip
TIMESTAMP_SUB
1
🟡 Sampled
happy×1
standard_functions/dt_timestamp_sub
TIMESTAMP_TRUNC
9
🟢🟢 Deep
happy×5 / null×1 / bound×1 / tz×2
partitioning_clustering/partition_hour_basic , partitioning_clustering/partition_hour_pruned , standard_functions/dt_timestamp_trunc_day , standard_functions/dt_timestamp_trunc_hour , standard_functions/dt_timestamp_trunc_min , … (+4 more)
UNIX_DATE
1
🟡 Sampled
happy×1
standard_functions/dt_unix_date
UNIX_MICROS
1
🟡 Sampled
happy×1
standard_functions/dt_unix_micros
UNIX_MILLIS
1
🟡 Sampled
happy×1
standard_functions/dt_unix_millis
UNIX_SECONDS
3
🟢 Covered
happy×2 / tz×1
standard_functions/dt_unix_seconds , standard_functions/rw_window_range_between , standard_functions/tz_timestamp_seconds_round_trip
Aggregate functions
BigQuery reference -- 35 / 35 items covered
Item
Count
Tier
Variation
Fixtures
ANY_VALUE
1
🟡 Sampled
happy×1
standard_functions/agg_any_value
ARRAY_AGG
5
🟢 Covered
happy×3 / null×1 / empty×1
standard_functions/agg_array_agg , standard_functions/agg_array_agg_empty , standard_functions/agg_array_agg_ordered , standard_functions/rw_array_agg_ignore_nulls , standard_functions/rw_array_agg_with_filter
ARRAY_CONCAT_AGG
3
🟢 Covered
happy×2 / null×1
standard_functions/agg_array_concat_basic , standard_functions/agg_array_concat_ordered , standard_functions/agg_array_concat_with_null
AVG
29
🟢🟢 Deep
happy×22 / null×6 / empty×1
rest_crud/select_avg , row_access/rap_filter_with_subquery , standard_functions/agg_avg , standard_functions/agg_avg_empty , standard_functions/rw_window_rows_between , … (+24 more)
BIT_AND
1
🟡 Sampled
happy×1
standard_functions/agg_bit_and
BIT_OR
1
🟡 Sampled
happy×1
standard_functions/agg_bit_or
BIT_XOR
1
🟡 Sampled
happy×1
standard_functions/agg_bit_xor
COUNT
85
🟢🟢 Deep
happy×64 / null×5 / empty×15 / bound×1
api_configuration/cache_disabled_with_count_distinct , api_configuration/job_timeout_exceeded , api_configuration/max_bytes_billed_exceeded , information_schema/is_partitions_empty_table , information_schema/is_schemata_empty_project , … (+80 more)
COUNTIF
5
🟢 Covered
happy×3 / null×2 / empty×1
rest_crud/select_count_if , standard_functions/agg_countif , standard_functions/agg_countif_empty , standard_functions/agg_countif_null_predicate , standard_functions/rw_funnel_conversion_pct
GROUPING
6
🟢🟢 Deep
happy×6
standard_functions/agg_grouping_func_cube , standard_functions/agg_grouping_func_rollup , standard_functions/tpcds_q27 , standard_functions/tpcds_q36 , standard_functions/tpcds_q70 , … (+1 more)
LOGICAL_AND
2
🟡 Sampled
happy×2
standard_functions/agg_logical_and , standard_functions/agg_logical_and_mixed
LOGICAL_OR
2
🟡 Sampled
happy×2
standard_functions/agg_logical_or , standard_functions/agg_logical_or_mixed
MAX
9
🟢🟢 Deep
happy×3 / null×2 / empty×1 / bound×5
rest_crud/select_min_max , standard_functions/agg_max_empty , standard_functions/agg_max_null_col , standard_functions/agg_min_max , standard_functions/rw_correlated_subquery_max , … (+4 more)
MAX_BY
3
🟢 Covered
null×1 / bound×3
standard_functions/agg_max_by_basic , standard_functions/agg_max_by_grouped , standard_functions/agg_max_by_null_keys
MIN
7
🟢🟢 Deep
happy×5 / bound×2
rest_crud/select_min_max , standard_functions/agg_min_max , standard_functions/rw_cte_correlated , standard_functions/rw_first_seen_per_user , standard_functions/rw_funnel_first_event , … (+2 more)
MIN_BY
3
🟢 Covered
null×1 / bound×3
standard_functions/agg_min_by_basic , standard_functions/agg_min_by_grouped , standard_functions/agg_min_by_null_keys
STRING_AGG
5
🟢 Covered
happy×3 / empty×2
standard_functions/agg_string_agg_basic , standard_functions/agg_string_agg_distinct , standard_functions/agg_string_agg_empty , standard_functions/agg_string_agg_limit , standard_functions/agg_string_agg_separator
SUM
100
🟢🟢 Deep
happy×77 / null×18 / empty×3 / error×2
api_configuration/default_dataset_join_partial_qualification , api_configuration/dry_run_aggregate , rest_crud/cte_basic , rest_crud/select_sum , rest_crud/subquery_scalar , … (+95 more)
CORR
1
🟡 Sampled
happy×1
standard_functions/agg_corr
COVAR_POP
1
🟡 Sampled
happy×1
standard_functions/agg_covar_pop
COVAR_SAMP
1
🟡 Sampled
happy×1
standard_functions/agg_covar_samp
STDDEV
2
🟡 Sampled
happy×2
standard_functions/agg_stddev_basic , standard_functions/agg_stddev_single
STDDEV_POP
1
🟡 Sampled
happy×1
standard_functions/agg_stddev_pop
STDDEV_SAMP
3
🟢 Covered
happy×2 / null×1
standard_functions/agg_stddev_samp , standard_functions/tpcds_q17 , standard_functions/tpcds_q39
VAR_POP
1
🟡 Sampled
happy×1
standard_functions/agg_var_pop
VAR_SAMP
1
🟡 Sampled
happy×1
standard_functions/agg_var_samp
VARIANCE
2
🟡 Sampled
happy×2
standard_functions/agg_variance_basic , standard_functions/agg_variance_single
APPROX_COUNT_DISTINCT
1
🟡 Sampled
happy×1
standard_functions/agg_approx_count_distinct
APPROX_QUANTILES
1
🟡 Sampled
happy×1
standard_functions/agg_approx_quantiles
APPROX_TOP_COUNT
1
🟡 Sampled
happy×1
standard_functions/agg_approx_top_count
APPROX_TOP_SUM
1
🟡 Sampled
happy×1
standard_functions/agg_approx_top_sum
HLL_COUNT.INIT
4
🟢 Covered
happy×4
standard_functions/agg_hll_count_extract_basic , standard_functions/agg_hll_count_init_basic , standard_functions/agg_hll_count_merge_basic , standard_functions/agg_hll_count_merge_partial_basic
HLL_COUNT.MERGE
1
🟡 Sampled
happy×1
standard_functions/agg_hll_count_merge_basic
HLL_COUNT.MERGE_PARTIAL
1
🟡 Sampled
happy×1
standard_functions/agg_hll_count_merge_partial_basic
HLL_COUNT.EXTRACT
1
🟡 Sampled
happy×1
standard_functions/agg_hll_count_extract_basic
Array functions
BigQuery reference -- 12 / 12 items covered
Item
Count
Tier
Variation
Fixtures
ARRAY
2
🟡 Sampled
happy×2
standard_functions/rw_array_filter , standard_functions/rw_array_subquery
ARRAY_CONCAT
2
🟡 Sampled
happy×1 / empty×1
standard_functions/arr_concat , standard_functions/empty_array_concat
ARRAY_LENGTH
9
🟢🟢 Deep
happy×7 / empty×1 / unicode×1
specialized_types/st_dump_multipoint , standard_functions/agg_approx_top_count , standard_functions/agg_approx_top_sum , standard_functions/arr_length , standard_functions/bound_array_size_zero , … (+4 more)
ARRAY_REVERSE
1
🟡 Sampled
happy×1
standard_functions/arr_reverse
ARRAY_TO_STRING
3
🟢 Covered
happy×2 / null×1
standard_functions/arr_to_string , standard_functions/arr_to_string_with_nulls , standard_functions/str_array_to_string
GENERATE_ARRAY
7
🟢🟢 Deep
happy×6 / bound×1
api_configuration/job_timeout_exceeded , api_configuration/max_bytes_billed_exceeded , partitioning_clustering/partition_int_range , partitioning_clustering/partition_int_range_pruned , standard_functions/arr_generate_array , … (+2 more)
ARRAY_FIRST
2
🟡 Sampled
happy×1 / empty×1 / error×1
standard_functions/arr_first_basic , standard_functions/arr_first_empty
ARRAY_LAST
2
🟡 Sampled
happy×1 / empty×1 / error×1
standard_functions/arr_last_basic , standard_functions/arr_last_empty
OFFSET
1
🟡 Sampled
happy×1
standard_functions/arr_offset
ORDINAL
1
🟡 Sampled
happy×1
standard_functions/arr_ordinal
SAFE_OFFSET
1
🟡 Sampled
happy×1
standard_functions/arr_safe_offset
SAFE_ORDINAL
2
🟡 Sampled
happy×2
standard_functions/arr_safe_ordinal_in_bounds , standard_functions/arr_safe_ordinal_oob
JSON functions
BigQuery reference -- 27 / 27 items covered
Item
Count
Tier
Variation
Fixtures
JSON_EXTRACT
3
🟢 Covered
happy×3
standard_functions/json_extract_arr , standard_functions/json_extract_obj , standard_functions/json_extract_str
JSON_EXTRACT_SCALAR
3
🟢 Covered
happy×3
standard_functions/json_extract_scalar_boolean , standard_functions/json_extract_scalar_number , standard_functions/json_extract_scalar_string
JSON_EXTRACT_ARRAY
2
🟡 Sampled
happy×2
standard_functions/json_extract_array_basic , standard_functions/json_extract_array_objects
JSON_EXTRACT_STRING_ARRAY
2
🟡 Sampled
happy×1 / unicode×1
standard_functions/json_extract_string_array_basic , standard_functions/json_extract_string_array_unicode
JSON_QUERY
2
🟡 Sampled
happy×2
standard_functions/json_extract_path , standard_functions/json_query_basic
JSON_QUERY_ARRAY
1
🟡 Sampled
happy×1
standard_functions/json_query_array
JSON_VALUE
5
🟢 Covered
happy×4 / null×1
standard_functions/json_array_index , standard_functions/json_contains_path , standard_functions/json_extract_value , standard_functions/json_path_dot , standard_functions/json_value_basic
JSON_VALUE_ARRAY
1
🟡 Sampled
happy×1
standard_functions/json_value_array
JSON_TYPE
1
🟡 Sampled
happy×1
standard_functions/json_type_object
JSON_OBJECT
1
🟡 Sampled
happy×1
standard_functions/json_object_construct
JSON_ARRAY
1
🟡 Sampled
happy×1
standard_functions/json_array_construct
JSON_ARRAY_INSERT
2
🟡 Sampled
happy×2
standard_functions/json_array_insert_at_zero , standard_functions/json_array_insert_nested
JSON_REMOVE
1
🟡 Sampled
happy×1
standard_functions/json_remove
JSON_SET
1
🟡 Sampled
happy×1
standard_functions/json_set
JSON_STRIP_NULLS
1
🟡 Sampled
null×1
standard_functions/json_strip_nulls
JSON_KEYS
2
🟡 Sampled
happy×2
standard_functions/json_keys , standard_functions/json_size
PARSE_JSON
16
🟢🟢 Deep
happy×15 / null×1
specialized_types/st_asgeojson_in_parse_json_roundtrip , standard_functions/json_keys , standard_functions/json_lax_bool , standard_functions/json_lax_double , standard_functions/json_lax_int64 , … (+11 more)
TO_JSON
2
🟡 Sampled
happy×2
standard_functions/json_to_json_array , standard_functions/json_to_json_struct
TO_JSON_STRING
2
🟡 Sampled
happy×2
standard_functions/json_concat , standard_functions/json_to_json_string
BOOL
1
🟡 Sampled
happy×1
standard_functions/json_value_bool_extractor
FLOAT64
1
🟡 Sampled
happy×1
standard_functions/json_value_float_extractor
INT64
1
🟡 Sampled
happy×1
standard_functions/json_value_int_extractor
STRING
1
🟡 Sampled
happy×1
standard_functions/json_value_string_extractor
LAX_BOOL
1
🟡 Sampled
happy×1
standard_functions/json_lax_bool
LAX_FLOAT64
1
🟡 Sampled
happy×1
standard_functions/json_lax_double
LAX_INT64
1
🟡 Sampled
happy×1
standard_functions/json_lax_int64
LAX_STRING
1
🟡 Sampled
happy×1
standard_functions/json_lax_string
GEOGRAPHY functions
BigQuery reference -- 46 / 47 items covered
Spheroidal-vs-planar divergences here are documented in ADR 0019 and out-of-scope.md (continental-scale comparisons are pinned as expected mismatches).
Item
Count
Tier
Variation
Fixtures
ST_GEOGPOINT
38
🟢🟢 Deep
happy×30 / null×1 / unicode×7
specialized_types/geography_column_basic , specialized_types/geography_column_select_filter , specialized_types/numeric_in_geog_predicate , specialized_types/spheroidal_buffer_neighborhood_match , specialized_types/spheroidal_buffer_state_xfail , … (+33 more)
ST_GEOGFROMTEXT
68
🟢🟢 Deep
happy×60 / empty×3 / bound×1 / unicode×4
specialized_types/geography_column_insert , specialized_types/spheroidal_area_city_match , specialized_types/spheroidal_area_neighborhood_match , specialized_types/spheroidal_area_state_xfail , specialized_types/spheroidal_length_city_match , … (+63 more)
ST_GEOGFROMGEOJSON
1
🟡 Sampled
happy×1
specialized_types/st_geogfromgeojson_point
ST_GEOGFROMWKB
1
🟡 Sampled
happy×1
specialized_types/st_geogfromwkb_point
ST_ASTEXT
17
🟢🟢 Deep
happy×17
specialized_types/geography_column_basic , specialized_types/spheroidal_buffer_neighborhood_match , specialized_types/spheroidal_buffer_state_xfail , specialized_types/spheroidal_buffer_street_match , specialized_types/st_astext_point , … (+12 more)
ST_ASGEOJSON
9
🟢🟢 Deep
happy×8 / empty×1
specialized_types/st_asgeojson_empty_point , specialized_types/st_asgeojson_geometrycollection , specialized_types/st_asgeojson_in_parse_json_roundtrip , specialized_types/st_asgeojson_linestring , specialized_types/st_asgeojson_multilinestring , … (+4 more)
ST_ASBINARY
1
🟡 Sampled
happy×1
specialized_types/st_asbinary_point
ST_BOUNDARY
1
🟡 Sampled
bound×1
specialized_types/st_boundary_polygon
ST_CENTROID
1
🟡 Sampled
happy×1
specialized_types/st_centroid_polygon
ST_CLOSESTPOINT
1
🟡 Sampled
happy×1
specialized_types/st_closestpoint_basic
ST_CLUSTERDBSCAN
0
🔴 Uncovered
—
gap
ST_CONVEXHULL
1
🟡 Sampled
happy×1
specialized_types/st_convexhull_points
ST_DIFFERENCE
1
🟡 Sampled
happy×1
specialized_types/st_difference_planar
ST_DUMP
1
🟡 Sampled
happy×1
specialized_types/st_dump_multipoint
ST_DWITHIN
2
🟡 Sampled
happy×2
specialized_types/st_dwithin_no , specialized_types/st_dwithin_yes
ST_DIMENSION
6
🟢🟢 Deep
happy×6
specialized_types/st_dimension_line , specialized_types/st_dimension_point , specialized_types/st_dimension_polygon , specialized_types/st_geogfromtext_multilinestring , specialized_types/st_geogfromtext_multipolygon , … (+1 more)
ST_DISJOINT
2
🟡 Sampled
happy×2
specialized_types/st_disjoint_no , specialized_types/st_disjoint_yes
ST_DISTANCE
8
🟢🟢 Deep
happy×1 / unicode×7
specialized_types/spheroidal_distance_city_match , specialized_types/spheroidal_distance_metro_close_or_xfail , specialized_types/spheroidal_distance_national_xfail , specialized_types/spheroidal_distance_neighborhood_match , specialized_types/spheroidal_distance_state_xfail , … (+3 more)
ST_EQUALS
1
🟡 Sampled
happy×1
specialized_types/st_equals_basic
ST_INTERSECTION
1
🟡 Sampled
happy×1
specialized_types/st_intersection_polygons
ST_INTERSECTS
3
🟢 Covered
happy×3
specialized_types/numeric_in_geog_predicate , specialized_types/st_intersects_no , specialized_types/st_intersects_yes
ST_INTERSECTSBOX
2
🟡 Sampled
happy×2
specialized_types/st_intersectsbox_no , specialized_types/st_intersectsbox_yes
ST_ISCLOSED
1
🟡 Sampled
happy×1
specialized_types/st_isclosed_closed
ST_ISCOLLECTION
2
🟡 Sampled
happy×2
specialized_types/st_geogfromtext_collection , specialized_types/st_isclosed_line
ST_ISEMPTY
2
🟡 Sampled
empty×2
specialized_types/st_isempty_no , specialized_types/st_isempty_yes
ST_ISRING
1
🟡 Sampled
happy×1
specialized_types/st_isring_basic
ST_LENGTH
3
🟢 Covered
happy×2 / unicode×1
specialized_types/spheroidal_length_city_match , specialized_types/spheroidal_length_state_xfail , specialized_types/st_length_continental
ST_MAKELINE
1
🟡 Sampled
happy×1
specialized_types/st_makeline_basic
ST_MAKEPOLYGON
1
🟡 Sampled
happy×1
specialized_types/st_makepolygon_basic
ST_MAKEPOLYGONORIENTED
1
🟡 Sampled
happy×1
specialized_types/st_makepolygonoriented_basic
ST_MAXDISTANCE
1
🟡 Sampled
happy×1
specialized_types/st_maxdistance_basic
ST_NPOINTS
7
🟢🟢 Deep
happy×7
specialized_types/st_endpoint_line , specialized_types/st_geogfromtext_multipoint , specialized_types/st_isring_line , specialized_types/st_makeline_basic , specialized_types/st_npoints_line , … (+2 more)
ST_PERIMETER
1
🟡 Sampled
happy×1
specialized_types/st_perimeter_continental
ST_POINTN
1
🟡 Sampled
happy×1
specialized_types/st_pointn_first
ST_SIMPLIFY
1
🟡 Sampled
happy×1
specialized_types/st_simplify_planar
ST_SNAPTOGRID
1
🟡 Sampled
happy×1
specialized_types/st_snaptogrid_basic
ST_TOUCHES
2
🟡 Sampled
happy×2
specialized_types/st_touches_no , specialized_types/st_touches_yes
ST_UNION
1
🟡 Sampled
happy×1
specialized_types/st_union_points
ST_UNION_AGG
1
🟡 Sampled
happy×1
specialized_types/st_union_agg_basic
ST_WITHIN
2
🟡 Sampled
happy×2
specialized_types/st_within_no , specialized_types/st_within_yes
ST_X
1
🟡 Sampled
happy×1
specialized_types/st_x_basic
ST_Y
1
🟡 Sampled
happy×1
specialized_types/st_y_basic
ST_AREA
4
🟢 Covered
happy×1 / unicode×3
specialized_types/spheroidal_area_city_match , specialized_types/spheroidal_area_neighborhood_match , specialized_types/spheroidal_area_state_xfail , specialized_types/st_area_continental
ST_BUFFER
4
🟢 Covered
happy×4
specialized_types/spheroidal_buffer_neighborhood_match , specialized_types/spheroidal_buffer_state_xfail , specialized_types/spheroidal_buffer_street_match , specialized_types/st_buffer_continental
ST_CONTAINS
2
🟡 Sampled
happy×2
specialized_types/st_contains_no , specialized_types/st_contains_yes
ST_COVERS
1
🟡 Sampled
happy×1
specialized_types/st_covers_yes
ST_COVEREDBY
1
🟡 Sampled
happy×1
specialized_types/st_coveredby_yes
Conversion / type functions
BigQuery reference -- 4 / 4 items covered
Conditional functions
BigQuery reference -- 4 / 4 items covered
Item
Count
Tier
Variation
Fixtures
COALESCE
8
🟢🟢 Deep
happy×5 / null×3
rest_crud/coalesce_basic , rest_crud/join_right_three_way , standard_functions/null_coalesce_all , standard_functions/tpcds_q49 , standard_functions/tpcds_q67 , … (+3 more)
IF
4
🟢 Covered
happy×1 / null×3
rest_crud/if_expr , standard_functions/null_if_branch , standard_functions/rw_array_agg_ignore_nulls , standard_functions/rw_session_count
IFNULL
6
🟢🟢 Deep
null×5 / empty×1
rest_crud/ifnull_basic , routines_scripting/proc_call_null_arg , routines_scripting/proc_with_null_default , routines_scripting/tvf_with_null_input , standard_functions/empty_array_aggsum , … (+1 more)
NULLIF
3
🟢 Covered
null×3
rest_crud/nullif_eq , rest_crud/nullif_neq , standard_functions/null_nullif_passthrough
Hash / security functions
BigQuery reference -- 5 / 5 items covered
Window / navigation functions
BigQuery reference -- 13 / 13 items covered
Item
Count
Tier
Variation
Fixtures
ROW_NUMBER
6
🟢🟢 Deep
happy×5 / empty×1
rest_crud/win_row_number , standard_functions/rw_distinct_on , standard_functions/rw_qualify_basic , standard_functions/rw_qualify_top_n , standard_functions/rw_window_row_number , … (+1 more)
RANK
11
🟢🟢 Deep
happy×8 / null×3
rest_crud/win_rank , standard_functions/rw_double_cte , standard_functions/rw_top_event_type , standard_functions/tpcds_q36 , standard_functions/tpcds_q44 , … (+6 more)
DENSE_RANK
1
🟡 Sampled
happy×1
rest_crud/win_dense_rank
PERCENT_RANK
1
🟡 Sampled
happy×1
standard_functions/rw_window_percent_rank
CUME_DIST
1
🟡 Sampled
happy×1
standard_functions/rw_window_cume_dist
NTILE
1
🟡 Sampled
happy×1
standard_functions/rw_window_ntile
LAG
4
🟢 Covered
happy×3 / null×1
rest_crud/win_lag , standard_functions/rw_purchase_following_view , standard_functions/rw_self_join_lag , standard_functions/rw_session_count
LEAD
1
🟡 Sampled
happy×1
rest_crud/win_lead
FIRST_VALUE
1
🟡 Sampled
happy×1
standard_functions/rw_window_first_value
LAST_VALUE
1
🟡 Sampled
happy×1
standard_functions/rw_window_last_value
NTH_VALUE
1
🟡 Sampled
happy×1
standard_functions/rw_window_nth_value_2
PERCENTILE_CONT
2
🟡 Sampled
happy×2
standard_functions/agg_percentile_cont_50 , standard_functions/agg_percentile_cont_95
PERCENTILE_DISC
1
🟡 Sampled
happy×1
standard_functions/agg_percentile_disc_50
INTERVAL / RANGE functions
BigQuery reference -- 12 / 12 items covered
Item
Count
Tier
Variation
Fixtures
JUSTIFY_DAYS
1
🟡 Sampled
happy×1
specialized_types/justify_days_basic
JUSTIFY_HOURS
1
🟡 Sampled
happy×1
specialized_types/justify_hours_basic
JUSTIFY_INTERVAL
1
🟡 Sampled
happy×1
specialized_types/justify_interval_basic
MAKE_INTERVAL
1
🟡 Sampled
happy×1
specialized_types/make_interval_basic
RANGE
7
🟢🟢 Deep
happy×6 / null×1
specialized_types/range_constructor_basic , specialized_types/range_end_basic , specialized_types/range_start_basic , standard_functions/tpcds_q34 , standard_functions/tpcds_q37 , … (+2 more)
RANGE_CONTAINS
2
🟡 Sampled
happy×2
specialized_types/range_contains_no , specialized_types/range_contains_yes
RANGE_END
1
🟡 Sampled
happy×1
specialized_types/range_end_basic
RANGE_INTERSECT
1
🟡 Sampled
happy×1
specialized_types/range_intersect_basic
RANGE_OVERLAPS
3
🟢 Covered
happy×2 / empty×1
specialized_types/range_intersects_empty , specialized_types/range_overlaps_no , specialized_types/range_overlaps_yes
RANGE_SESSIONIZE
12
🟢🟢 Deep
happy×8 / null×1 / empty×1 / error×2
specialized_types/error_range_sessionize_invalid_mode , specialized_types/range_sessionize_basic , specialized_types/range_sessionize_datetime_element , specialized_types/range_sessionize_empty_input , specialized_types/range_sessionize_grouped , … (+7 more)
RANGE_START
1
🟡 Sampled
happy×1
specialized_types/range_start_basic
GENERATE_RANGE_ARRAY
1
🟡 Sampled
happy×1
specialized_types/generate_range_array_date
BigQuery reference -- 6 / 6 items covered
BigQuery's INFORMATION_SCHEMA family of virtual tables. The emulator's pre-translation rewriter materialises each view as an inline VALUES subquery sourced from the catalog: SCHEMATA, TABLES, COLUMNS, TABLE_OPTIONS, VIEWS, PARTITIONS, ROUTINES, MATERIALIZED_VIEWS, ROW_ACCESS_POLICIES. The JOBS/JOBS_BY_* family is permanently out of scope — see out-of-scope.md#information_schemajobs-family.
Item
Count
Tier
Variation
Fixtures
INFORMATION_SCHEMA.SCHEMATA
3
🟢 Covered
happy×2 / empty×1
information_schema/is_schemata_basic , information_schema/is_schemata_empty_project , information_schema/is_schemata_with_filter
INFORMATION_SCHEMA.TABLES
3
🟢 Covered
happy×3
information_schema/is_tables_basic , information_schema/is_tables_filter_by_type , information_schema/is_tables_select_specific_columns
INFORMATION_SCHEMA.COLUMNS
3
🟢 Covered
happy×3
information_schema/is_columns_basic , information_schema/is_columns_partitioning_column , information_schema/is_columns_with_struct_field
INFORMATION_SCHEMA.TABLE_OPTIONS
3
🟢 Covered
happy×3
information_schema/is_table_options_basic , information_schema/is_table_options_description , information_schema/is_table_options_partition_filter
INFORMATION_SCHEMA.VIEWS
3
🟢 Covered
happy×2 / empty×1
information_schema/is_views_basic , information_schema/is_views_empty_dataset , information_schema/is_views_with_definition
INFORMATION_SCHEMA.PARTITIONS
3
🟢 Covered
happy×2 / empty×1
information_schema/is_partitions_basic , information_schema/is_partitions_empty_table , information_schema/is_partitions_ingestion_time
BigQuery reference -- 8 / 8 items covered
Shape-level concerns about the JSON BigQuery returns. The conformance corpus diffs schema + rows against recorded baselines, so these items are exercised indirectly by every fixture; depth here measures coverage of unusual shapes (REPEATED, nested STRUCT, NULL representations).
Item
Count
Tier
Variation
Fixtures
REPEATED mode schema field
20
🟢🟢 Deep
happy×6 / null×1 / empty×13 / error×2
information_schema/is_columns_with_struct_field , rest_crud/dml_insert_array_value , routines_scripting/js_udf_array_to_array , routines_scripting/js_udf_returns_array_of_struct , routines_scripting/script_for_empty_array , … (+15 more)
REPEATED is the wire form of ARRAY.
Nested RECORD/STRUCT schema field
5
🟢 Covered
happy×4 / empty×1
information_schema/is_columns_with_struct_field , rest_crud/dml_insert_struct_value , routines_scripting/js_udf_returns_array_of_struct , routines_scripting/js_udf_struct_to_struct , routines_scripting/sql_udf_returns_struct
NULL in row payload
204
🟢🟢 Deep
happy×43 / null×107 / empty×10 / bound×10 / error×45 / tz×2
api_configuration/create_never_missing_destination , api_configuration/create_never_with_append , api_configuration/create_never_with_truncate , api_configuration/dest_clustering_fields_invalid_column , api_configuration/dest_time_partitioning_invalid_field , … (+199 more)
Named queryParameters (mode="named")
11
🟢🟢 Deep
happy×10 / null×1
api_configuration/dml_insert_with_parameters , rest_crud/param_named_array_int64 , rest_crud/param_named_date_scalar , rest_crud/param_named_int64_scalar , rest_crud/param_named_nullable_with_null , … (+6 more)
Parameter-bound queries via QueryJobConfig.query_parameters. Detected by the parameters.json fixture file.
Positional queryParameters (mode="positional")
10
🟢🟢 Deep
happy×8 / null×2
api_configuration/positional_array_int64 , api_configuration/positional_multi_param , api_configuration/positional_null_bound_string , api_configuration/positional_parameter_int64 , api_configuration/positional_struct_basic , … (+5 more)
Parameter-bound queries via QueryJobConfig.query_parameters using ? placeholders. Detected by parameters.json.
ARRAY queryParameter
3
🟢 Covered
happy×3
api_configuration/positional_array_int64 , rest_crud/param_named_array_int64 , rest_crud/param_positional_array
arrayType parameter shape. Detected by parameters.json carrying an ARRAY type spec.
STRUCT queryParameter
2
🟡 Sampled
happy×2
api_configuration/positional_struct_basic , rest_crud/param_named_struct
structTypes parameter shape. Detected by parameters.json carrying a STRUCT type spec.
NULL-valued queryParameter
3
🟢 Covered
null×3
api_configuration/positional_null_bound_string , rest_crud/param_named_nullable_with_null , rest_crud/param_positional_null
A typed parameter with no value — exercises BQ's typed-NULL binding. Emulator wraps with CAST(? AS T) to preserve the declared type through the schema renderer.
Error response parity
BigQuery reference -- 4 / 4 items covered
Recorded error envelopes (error.reason / http_status / message_pattern). Coverage lives in recorded error.json fixtures.
Item
Count
Tier
Variation
Fixtures
reason=invalid (syntax / argument)
7
🟢🟢 Deep
null×1 / error×7
api_configuration/dest_clustering_fields_invalid_column , api_configuration/dest_time_partitioning_invalid_field , api_configuration/schema_update_addition_with_truncate , api_configuration/schema_update_relaxation_required_to_nullable , api_configuration/session_invalid_session_id , … (+2 more)
reason=notFound
8
🟢🟢 Deep
error×8
api_configuration/create_never_missing_destination , api_configuration/create_never_with_append , api_configuration/create_never_with_truncate , rest_crud/error_alter_nonexistent_table , rest_crud/error_dataset_not_found , … (+3 more)
reason=duplicate (already exists)
1
🟡 Sampled
error×1
rest_crud/error_create_table_already_exists
reason=accessDenied
1
🟡 Sampled
error×1
rest_crud/error_invalid_project_format
See also