Skip to content

Incorrect firebase firestore:indexes output generated #7629

@andreibarabas

Description

@andreibarabas

[REQUIRED] Environment info

firebase-tools: 13.6.0

Platform: macOS

[REQUIRED] Test case

Given 2 composite indexes, created via the FAILED_PRECONDITION provided link

Screenshot 2024-09-07 at 06 33 54

[REQUIRED] Steps to reproduce

Run the firebase firestore:indexes CLI command to output the indexes. As you will see, the indexes are duplicated, because the __name__ is stripped off https://github.com/firebase/firebase-tools/blob/master/src/firestore/api.ts#L187

    {
      "collectionGroup": "random-collection",
      "queryScope": "COLLECTION_GROUP",
      "fields": [
        {
          "fieldPath": "a",
          "order": "ASCENDING"
        },
        {
          "fieldPath": "b",
          "order": "DESCENDING"
        }
      ]
    },
    {
      "collectionGroup": "random-collection",
      "queryScope": "COLLECTION_GROUP",
      "fields": [
        {
          "fieldPath": "a",
          "order": "ASCENDING"
        },
        {
          "fieldPath": "b",
          "order": "DESCENDING"
        }
      ]
    },

[REQUIRED] Expected behavior

The __name__ to also be included, as that is the difference between both

[REQUIRED] Actual behavior

The current duplication is a problem because when you take the index file from the sandbox env and deploy it to production, you think all the indexes are created, but in fact only one of the 2 is. And thus you reach a FAILED_PRECONDITION on production

While this example is exaggerated in the sense that probably you would not have 2 indexes like this, the bigger issue is if you have an index with a __name__ order that is not exactly as the default sort order, then it's not properly generated when moving from sandbox to production

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions