Skip to content

feat(firestore): [PQ] add all array, string and vector functions#13245

Merged
bhshkh merged 4 commits intogoogleapis:feature/fs-pipeline-queriesfrom
bhshkh:feat/fspq-only-type-vector-string-logical
Oct 30, 2025
Merged

feat(firestore): [PQ] add all array, string and vector functions#13245
bhshkh merged 4 commits intogoogleapis:feature/fs-pipeline-queriesfrom
bhshkh:feat/fspq-only-type-vector-string-logical

Conversation

@bhshkh
Copy link
Copy Markdown
Contributor

@bhshkh bhshkh commented Oct 28, 2025

  1. add all the private preview 'array' functions.
    Merging this PR completes the implementation of all the type: "Function" subType : "Array" private preview features (except 'maximum' and 'minimum' which are not yet implemented in any of the SDKs. Requires additonal approvals from Firestore team and will be added to separate PR). See "Firestore Features (Pipeline)" sheet in go/firestore-query-tracker for the list of features.
    Java reference:

  2. add all the private preview 'string' functions. (except 'string_split' which is not yet implemented in any of the SDKs. Requires additonal approvals from Firestore team and will be added to separate PR)

  3. add all the private preview 'vector' functions.

  4. add remaining types to ConstantOf to match Java's implementation.
    Java reference:

Previous pull requests

@product-auto-label product-auto-label Bot added the api: firestore Issues related to the Firestore API. label Oct 28, 2025
@bhshkh
Copy link
Copy Markdown
Contributor Author

bhshkh commented Oct 28, 2025

/gemini review

@bhshkh bhshkh marked this pull request as ready for review October 28, 2025 08:47
@bhshkh bhshkh requested review from a team October 28, 2025 08:47
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces new array, string, type, and vector functions to the Firestore pipeline. The changes include modifications to pipeline_constant.go, pipeline_expr.go, pipeline_filter_condition.go, pipeline_function.go, pipeline_utils.go, util_test.go, and the addition of pipeline_integration_test.go. The added functions enhance the query capabilities of Firestore, allowing for more complex data manipulation and filtering. I have identified some areas where improvements can be made to ensure code correctness and maintainability.

Comment thread firestore/pipeline_constant.go Outdated
Comment thread firestore/pipeline_filter_condition.go
Comment thread firestore/pipeline_filter_condition.go Outdated
Comment thread firestore/pipeline_filter_condition.go Outdated
Comment thread firestore/pipeline_filter_condition.go Outdated
Comment thread firestore/pipeline_filter_condition.go Outdated
Comment thread firestore/pipeline_function.go
Comment thread firestore/pipeline_utils.go
Comment thread firestore/pipeline_integration_test.go Outdated
Comment thread firestore/pipeline_utils.go
Comment thread firestore/pipeline_filter_condition.go
@bhshkh bhshkh changed the title feat(firestore): [PQ] add all array, string, type and vector functions feat(firestore): [PQ] add all array, string and vector functions Oct 30, 2025
@bhshkh bhshkh merged commit 768e559 into googleapis:feature/fs-pipeline-queries Oct 30, 2025
12 of 16 checks passed
@bhshkh bhshkh deleted the feat/fspq-only-type-vector-string-logical branch October 30, 2025 20:04
bhshkh added a commit that referenced this pull request Oct 30, 2025
b/364927702

- toExprOrField was renamed to asFieldExpr in
https://github.com/googleapis/google-cloud-go/pull/13194/files#diff-4a55211f7d38a1f0599e2f4cc92795073f138b2c56b846c933bda19e26bc3a7a
. There were a few call locations were rename was missed while resolving
merge conflicts which caused build failures. Fixing those failures in
this PR.
- the function signature of Data was changed in
#13218. It no longer
returns err as second argument. Fixing this in this PR.
- remove duplicate asInt64Expr and asStringExpr
- Move pipeline tests to their own file


Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
bhshkh added a commit that referenced this pull request Oct 30, 2025
b/364927702

- Combine FieldOf and FieldOfPath to avoid verbose name FieldOfPath


Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
bhshkh added a commit that referenced this pull request Oct 31, 2025
1. Move PipelineStages integration tests.
2. Remove IsNaN, IsNotNaN, IsNull, IsNotNull, Equivalent as they are no
longer supported by backend
3. Remove examples as commented here

#13245 (comment)

Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270
- #13271
bhshkh added a commit that referenced this pull request Nov 3, 2025
Add raw stage similar to Java

https://github.com/googleapis/java-firestore/blob/742fab6583c9a6f9c47cf0496124c3c9b05fe0ee/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Pipeline.java#L997-L1021


The raw stage is an escape hatch to allow customers to consume new
stages supported by the backend without having to update their SDK to a
version that adds the stage.



Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270
- #13271
- #13279
bhshkh added a commit that referenced this pull request Nov 3, 2025
1. Move PipelineStages integration tests.
2. Remove IsNaN, IsNotNaN, IsNull, IsNotNull, Equivalent as they are no
longer supported by backend
3. Remove examples as commented here

#13245 (comment)

Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270
- #13271
bhshkh added a commit that referenced this pull request Nov 3, 2025
Add raw stage similar to Java

https://github.com/googleapis/java-firestore/blob/742fab6583c9a6f9c47cf0496124c3c9b05fe0ee/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Pipeline.java#L997-L1021


The raw stage is an escape hatch to allow customers to consume new
stages supported by the backend without having to update their SDK to a
version that adds the stage.



Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270
- #13271
- #13279
bhshkh added a commit that referenced this pull request Nov 10, 2025
#13283)

Changes in this PR:

1. firestore_client.go : Updated generated client as per
googleapis/gapic-generator-go#1661 . Removed
retries from tests since the headers have now been fixed.
2. Remove Equivalent since it was removed from backend.
3. Add/update comments
4. Add timestamp truncate (pending from
#13194) and string
split (pending from
#13245) functions.
5. add all the private preview general, key, logical (except iferror),
type and object functions.
See "Firestore Features (Pipeline)" sheet in
[go/firestore-query-tracker](http://go/firestore-query-tracker) for the
list of functions.
    Java reference:
-
https://github.com/googleapis/java-firestore/blob/ccaf9d4fac5bd87a4da3d37493ca66fdc7681bc3/google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/expressions/Expression.java



Previous pull requests

- #12217
- #12425
- #12538
- #13147
- #13199
- #13218
- #13194
- #13245
- #13270
- #13271
- #13279
- #13280
- #13281
- #13282
- googleapis/gapic-generator-go#1661
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: firestore Issues related to the Firestore API.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants