Learn BigQuery emulator features

BigQuery Emulator Coverage

Support legend

StatusMeaning
SupportedProvides Functional and API Parity to BigQuery production capabilities.
Supported*Exposes & accepts but may not enforce everywhere like partitioning.
Not supportedUnsupported, cloud-only, outside emulator scope, has no dev impact.

Support summary

AreaStatusWhat this means for developers
Core SQL query languageSupportedCommon SELECT / FROM / WHERE / JOIN / GROUP BY / window / set-operation workflows execute locally through SQLGlot and DuckDB.
Advanced groupingSupportedGROUP BY ALL, ROLLUP, CUBE, GROUPING SETS, and GROUPING() have representative positive execution tests.
Pipe syntaxSupportedTested cases work when SQLGlot and DuckDB accept the syntax. Full pipe grammar coverage is not claimed.
DDL and DMLSupportedCommon table, view, materialized-view, external-table DDL and INSERT / UPDATE / DELETE / MERGE workflows execute locally.
Constraints and column defaultsSupported*Constraint and default declarations are parsed and exposed through INFORMATION_SCHEMA. Constraint enforcement and default injection across all write paths are not claimed.
Table functionsSupportedScalar-parameter table functions execute as DuckDB table macros and appear in routine metadata. Table parameters and full BigQuery routine semantics are not claimed.
Search and vector indexesSupported*Index DDL is accepted and index metadata is exposed. Query acceleration and index-backed planning are not implemented.
SEARCH and VECTOR_SEARCHSupportedSEARCH has local case-insensitive matching; VECTOR_SEARCH has brute-force local array embedding search.
RANGE functionsSupportedRANGE literals, types, predicates, GENERATE_RANGE_ARRAY, and a local RANGE_SESSIONIZE path cover common local tests.
Scripting and procedural SQLSupportedVariables, control flow, dynamic SQL, transactions, procedures, and RETURN have tests.
REST API core resourcesSupportedProjects, datasets, tables, tabledata, query jobs, load/copy/extract jobs, and common metadata shapes are usable for local clients.
IAM, row policies, grants, and revokesSupported*Accepted or permissive responses support local client compatibility. Real security enforcement is not implemented.
Storage Read and Write APIsSupportedRead sessions, rows, splitting, and AppendRows ingestion for committed, pending, and buffered streams are tested.
Local load, export, and external dataSupportedLocal CSV, JSON, Parquet, common CSV options, copy/extract, and deterministic wildcard export workflows are supported.
Built-in functionsSupportedA large tested subset of GoogleSQL functions is available through DuckDB, SQL rewrites, macros, and Python UDFs.
INFORMATION_SCHEMASupportedCommon views and local metadata-backed rows are available.
Operational and control-plane systemsNot supportedSlots, reservations, BI Engine, scheduled queries, quotas, billing, audit logging, and production auth are cloud-control-plane features and are outside emulator scope.

SQL, DDL, and DML

AreaStatusCovered by testsLimits from the report
Query languageSupportedLiterals, *, aliases, expressions, DISTINCT, null handling, SELECT * EXCEPT, SELECT * REPLACE, SELECT AS STRUCT, SELECT AS VALUE, table references, subqueries, UNNEST, filters, grouping, ordering, joins, CTEs, recursive CTEs, set operations, correlated subqueries, QUALIFY, PIVOT, UNPIVOT, TABLESAMPLE, windows, arrays, structs, casts, conditionals, named parameters, wildcard tables, and _TABLE_SUFFIX.Some syntax variants are covered only by rewrite checks or single representative examples. Collation, time travel, and differential privacy behavior are narrow or non-production.
Advanced groupingSupportedGROUP BY ALL, GROUPING SETS, ROLLUP, CUBE, and GROUPING().Exhaustive BigQuery edge and error parity is not claimed.
Pipe syntaxSupportedTested pipe patterns that SQLGlot and DuckDB accept.No broader pipe-syntax matrix is present.
DDLSupportedCREATE TABLE, IF NOT EXISTS, OR REPLACE, partition and cluster metadata extraction, table options, CREATE TABLE AS SELECT, LIKE, COPY, CLONE, snapshot clone as data copy, views, materialized views and refresh, external tables, ALTER TABLE, DROP, TRUNCATE, SQL UDFs, procedures, scalar table functions, local LOAD DATA, and local EXPORT DATA.Remote functions, user-defined Python UDFs, aggregate UDFs, Spark procedures, authorized views/datasets, policy-tag enforcement, true snapshot/time-travel semantics, schema evolution options, and BigLake object-table metadata are not supported.
DMLSupportedINSERT VALUES, INSERT SELECT, UPDATE, DELETE, and MERGE with matched and not-matched branches.DML quotas, streaming-buffer constraints, production partition-specific DML behavior, exact transactional edge cases, complex MERGE combinations, and nested/repeated field mutation semantics are not developer-supported by test evidence.
Constraints and defaultsSupported*Primary key, foreign key, check constraint, and column default declarations are exposed through metadata.Enforcement, optimizer use, and default value injection across every write path are not implemented or not covered.
Search and vector indexesSupported*CREATE SEARCH INDEX and CREATE VECTOR INDEX expose indexed columns, options, DDL text, and status rows through INFORMATION_SCHEMA.Query acceleration and production index behavior are not implemented.

Scripting and procedures

AreaStatusCovered by testsLimits from the report
Procedural SQLSupportedDECLARE, SET, variable interpolation, IF, ELSEIF, ELSE, WHILE, LOOP, BREAK, CONTINUE, FOR ... IN, REPEAT ... UNTIL, LEAVE, ITERATE, exception blocks, RAISE USING MESSAGE, EXECUTE IMMEDIATE, transactions, procedures, CALL, @@project_id, @@row_count, ASSERT, EXECUTE IMMEDIATE INTO/USING, and RETURN.Stored procedure authorization and production sessions are unsupported. Procedure OUT/INOUT parameters, nested exception metadata, and complete system-variable coverage have no test evidence.
Table functionsSupportedScalar-parameter table functions are registered and queried as DuckDB table macros, with routine and parameter metadata.Table parameters, ANY TYPE table-function behavior, and complete BigQuery routine semantics are not claimed.

APIs and metadata

AreaStatusCovered by testsLimits from the report
REST APISupportedProjects list, service account endpoint, dataset CRUD, table CRUD, table metadata, external table API creation, partition/cluster metadata reporting, tabledata.insertAll, tabledata.list, synchronous query endpoint, dry runs, named parameters, pagination, error formatting, query jobs, load jobs, copy jobs, extract jobs, routines metadata, discovery endpoint, and /bigquery/v2 prefix routing.Real cancellation side effects, reservations integration, dataset/table IAM enforcement, encryption configuration, cloud transfer APIs, full routine CRUD semantics, schema patch edge cases, and production resources outside the tested subset are not supported by evidence.
Storage Read APISupportedCreateReadSession and ReadRows for AVRO and ARROW, row restriction filtering, and SplitReadStream disjoint range reads.Production permission behavior, throttling, snapshots, selected fields, compression, full schema details, and additional stream error paths are not claimed.
Storage Write APISupportedCreateWriteStream, FinalizeWriteStream, BatchCommitWriteStreams, descriptor-based AppendRows, committed-stream inserts, valid offsets, pending stream commit visibility, buffered stream flush visibility, and invalid offset handling.Service-level exactly-once guarantees, schema evolution, multiplexing, compression, and additional stream errors are not claimed.
INFORMATION_SCHEMASupportedCOLUMNS, TABLES, SCHEMATA, PARTITIONS, VIEWS, ROUTINES, TABLE_OPTIONS, TABLE_STORAGE, JOBS_BY_USER, JOBS_BY_PROJECT, COLUMN_FIELD_PATHS, constraints/default metadata, table-function metadata, parameters, JOBS_TIMELINE, and search/vector index metadata.Permission-filtered results, production reservation details, BI Engine capacities, audit-grade job statistics, full catalog breadth, region/project scoping, historical timelines, and change history are not claimed.
Operational metadata viewsSupported*OBJECT_PRIVILEGES, session views, assignment/reservation views, capacity commitment changes, STREAMING_TIMELINE, BI_CAPACITIES, and EFFECTIVE_PROJECT_OPTIONS exist with schemas or empty rows.These are compatibility surfaces, not production metadata.

Data, types, and functions

AreaStatusCovered by testsLimits from the report
External data, load, export, and copySupportedExternal Parquet, CSV, JSON tables from local files; Parquet wildcard globs; filters, aggregates, declared schema, joins; local URI resolution; GCS URI resolution with emulator configuration; S3 URI passthrough; local CSV LOAD DATA; local CSV/Parquet EXPORT DATA; REST load/copy/extract jobs; common CSV options; deterministic single-shard wildcard export; YAML fixture loading.Datastore/Firestore exports, Google Sheets, Bigtable, BigLake, Iceberg, object tables, managed disaster recovery, destination encryption, cross-cloud connection auth, Avro/ORC paths, full Cloud Storage sharding/compression, external partitions, bad-record limits, full autodetect parity, and schema update options are not supported by evidence.
Types and valuesSupportedBigQuery/DuckDB type mapping, schema conversion, value conversion, BIGNUMERIC arithmetic helpers, 76-digit precision UDF path, RANGE literal/type storage, range predicates, GENERATE_RANGE_ARRAY, and local RANGE_SESSIONIZE.ObjectRef, policy-tag enforcement, exact BigQuery GEOGRAPHY spherical semantics, parameterized type edge cases, rounding modes, overflow parity, additional RANGE_SESSIONIZE modes, non-DATE GENERATE_RANGE_ARRAY, and complete nested/repeated JSON API parity are not claimed.
Built-in functionsSupportedTested aggregate, approximate, HLL, string/bytes, math/statistical, date/time, JSON, array, RANGE, hash, format, AEAD helper, search, vector, session/system, NET.*, and broad ST_* geography function families.BigQuery AI/ML functions, remote functions, DLP functions, KLL_QUANTILES, ObjectRef functions, production search/vector acceleration, deterministic AEAD variants, key rotation/wrapping functions, full search analyzers, full vector distance/query-shape parity, complete range edge parity, and untested geography functions are not supported by evidence.

Explicit non-production behavior

The report calls out these behaviors as tested but not production BigQuery functionality:

AreaStatusTested behavior
BigQuery MLNot supportedCREATE MODEL, CREATE OR REPLACE MODEL, ML.PREDICT, and ML.EVALUATE return clear unsupported errors.
REST modelsSupported*Model list is empty; get, patch, and delete are not-implemented stubs.
IAM policy endpointsSupported*Endpoints return permissive/default stub responses.
Row access policiesSupported*Create/drop/list behavior is accepted or stubbed, but enforcement is not tested.
Grants and revokesSupported*GRANT and REVOKE are accepted no-op stubs.
Differential privacyNot supportedThe clause is stripped; no noise or privacy guarantee is tested.
Time travelNot supportedFOR SYSTEM_TIME AS OF is stripped and returns current data.
Snapshot table cloneSupported*Tested as data copy, not BigQuery historical snapshot storage.
ST_CLUSTERDBSCANNot supportedRegistered only as an unsupported stub.

Unsupported product areas

AreaStatusWhat to expect
BigQuery ML lifecycle and inferenceNot supportedTraining, evaluation, prediction, forecasting, model metadata, Vertex AI integrations, and AI functions are unsupported.
Security enforcementNot supportedIAM, dataset/table ACLs, authorized views/datasets, row-level security filters, column-level security policy tags, and data masking are unsupported.
Scheduling and transfersNot supportedScheduled queries and BigQuery Data Transfer Service orchestration are unsupported.
BI EngineNot supportedBI Engine acceleration, preferred tables, BI capacities, and acceleration statistics are unsupported.
Reservations and workload managementNot supportedReservations, slots, assignments, capacity commitments, editions, and workload management behavior are unsupported.
Other high-impact product featuresNot supportedBigQuery Graph, continuous queries, saved queries, production sessions, managed disaster recovery, cross-region replication, and change history are unsupported.
Advanced SQL/product gapsNot supportedMATCH_RECOGNIZE, remote functions, non-SQL UDF runtimes, object tables, ObjectRef, DLP functions, KLL functions, generated columns if applicable, schema policy tags, table expiration enforcement, partition expiration enforcement, clustering performance semantics, authorized views/datasets, and routine authorization are unsupported.
Operational semanticsNot supportedQuota enforcement, billing bytes, slot accounting, result cache parity, audit logging, region restrictions, and production-grade auth are unsupported.

Developer workflow coverage

Based on the tested areas above, the emulator is suited for local workflows that need to:

  • Write and execute common GoogleSQL query shapes locally.
  • Exercise DDL, DML, routines, table functions, procedures, and scripting flows in tests.
  • Load local CSV/JSON/Parquet fixtures and query external local data.
  • Run SDK-backed REST and Storage API integration paths against local endpoints.
  • Inspect common INFORMATION_SCHEMA views and local metadata-backed rows.
  • Persist datasets, tables, schemas, and row data across tested restart scenarios.

The coverage report’s framing is the important boundary: this is developer-environment support for small local tests and CI, not a production implementation parity claim. Managed-service behavior, security enforcement, quotas, billing, reservations, BI Engine, audit logging, production auth, and untested edge semantics are outside the supported evidence base.

Test cases coverage & evidence

                        Report Date | 2026-04-26

EvidenceCurrent finding
Pytest collection936 collected tests across 25 test_*.py modules
Static inventory927 Python test functions, with parameterized cases expanding to 936 collected tests
Test Results.venv/bin/pytest -q -> 932 passed, 4 skipped
Quality barDeveloper-environment quality for small local tests and CI, not production implementation parity

Evidence model

The coverage report separates positive behavior from compatibility stubs:

Evidence typeMeaning
Execution coverageA test transpiles and executes behavior against DuckDB, REST, or gRPC.
Transpile coverageA test proves SQL rewriting or parsing only, not execution.
API coverageA test proves a REST or gRPC endpoint contract.
Stub coverageA test proves a clear no-op, empty response, or unsupported error, not production behavior.
No test evidenceNo positive test currently proves developer-quality support.

The report describes the emulator as using DuckDB, SQL rewrites, local files, Python UDFs, and metadata tables rather than BigQuery’s distributed production internals.