bigquery-emulator icon indicating copy to clipboard operation
bigquery-emulator copied to clipboard

Insert succeeds when non-existant columns are provided

Open pgcamus opened this issue 3 months ago • 0 comments

What happened?

Create a table

$ bq \
    --api=http://host.docker.internal:19050/ \
    --project_id=camus-unittest \
    mk \
        -d \
        pg_test
$ bq --api=http://host.docker.internal:19050/ \
    --project_id=camus-unittest \
    query \
        --nouse_legacy_sql \
        "CREATE TABLE pg_test.schema_test (string_field STRING)"
$ bq \
    --api=http://host.docker.internal:19050/ \
    --project_id=camus-unittest \
    show \
        --schema \
        pg_test.schema_test
[{"name":"string_field","type":"STRING"}]

Attempt to insert some rows, one of which references columns which do not exist in the schema

$ cat foo.json 
{"string_field": "YESSIRR"}
{"string_field": "YESSIRR2", "badddd_field": "NOSIR2"}
$ bq \
    --api=http://host.docker.internal:19050/ \
    --project_id=camus-unittest \
    insert \
        pg_test.schema_test \
        ./foo.json
$ bq \
    --api=http://host.docker.internal:19050/ \
    --project_id=camus-unittest \
    query \
        "SELECT * FROM pg_test.schema_test"
+--------------+
| string_field |
+--------------+
| YESSIRR      |
| YESSIRR2     |
+--------------+

What did you expect to happen?

I expected the bq insert to fail, as it does in GCP BigQuery

$ bq \
    --project_id=camus-infra \
    show \
        --schema \
        pg_test.schema_test
[{"name":"string_field","type":"STRING"}]
$ cat foo.json 
{"string_field": "YESSIRR"}
{"string_field": "YESSIRR2", "badddd_field": "NOSIR2"}
$ bq \
    --project_id=camus-infra \
    insert \
        pg_test.schema_test \
        ./foo.json
record 1 errors:        invalid: no such field: badddd_field.
record 0 errors:        stopped: 

How can we reproduce it (as minimally and precisely as possible)?

See above.

Anything else we need to know?

No response

pgcamus avatar Sep 12 '25 18:09 pgcamus