Skip to content

🐛 [firestore-bigquery-export] tableRequiresUpdate always returning true #2194

@timdrew

Description

@timdrew

Describe your configuration

  • Extension name: firestore-bigquery-export
  • Extension version: latest
  • Configuration values (redact info where appropriate):
    • clustering: null

Describe the problem

The tableRequiresUpdate function appears to be bugged in a couple different ways depending on your config. This results in the update check always returning true and the table config being repeatedly updated unnecessarily.

Issue 1

If clustering config is null then the table will always require updates due to this faulty check:

const configCluster = JSON.stringify(config.clustering); // Evaluates to 'null'
const tableCluster = JSON.stringify(metadata.clustering?.fields || []); // Evaluates to '[]'
if (configCluster !== tableCluster) return true; // Always true

Issue 2

Within initializeRawChangeLogTable the pathParamsColExists is allowed to be undefined

const pathParamsColExists = fields.find(
        (column) => column.name === "path_params"
      ); // Evaluates to undefined if not present, rather than boolean

This is then passed into tableRequiresUpdate, and will always fail the strict equality check:

if (!!config.wildcardIds !== pathParamsColExists) return true; // Evaluates to boolean !== undefined -> always true

Steps to reproduce:

What happened? How can we make the problem occur?
Supply either clustering:nullor don't have path_params column.

Expected result

The table shouldn't need updating.

Actual result

The table always updates on every run.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions