Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 742fab6

Browse files
committed
Update version for private preview
1 parent ccaf9d4 commit 742fab6

16 files changed

Lines changed: 810 additions & 117 deletions

File tree

google-cloud-firestore-admin/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66
<artifactId>google-cloud-firestore-admin</artifactId>
7-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore-admin:current} -->
7+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore-admin:current} -->
88
<packaging>jar</packaging>
99
<name>Google Cloud Firestore Admin Client</name>
1010
<url>https://github.com/googleapis/java-firestore</url>
@@ -14,7 +14,7 @@
1414
<parent>
1515
<groupId>com.google.cloud</groupId>
1616
<artifactId>google-cloud-firestore-parent</artifactId>
17-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore:current} -->
17+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore:current} -->
1818
</parent>
1919
<dependencies>
2020
<dependency>

google-cloud-firestore-bom/pom.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-firestore-bom</artifactId>
6-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore-bom:current} -->
6+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore-bom:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
@@ -52,37 +52,37 @@
5252
<dependency>
5353
<groupId>com.google.cloud</groupId>
5454
<artifactId>google-cloud-firestore</artifactId>
55-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore:current} -->
55+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore:current} -->
5656
</dependency>
5757
<dependency>
5858
<groupId>com.google.cloud</groupId>
5959
<artifactId>google-cloud-firestore-admin</artifactId>
60-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore-admin:current} -->
60+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore-admin:current} -->
6161
</dependency>
6262
<dependency>
6363
<groupId>com.google.api.grpc</groupId>
6464
<artifactId>grpc-google-cloud-firestore-admin-v1</artifactId>
65-
<version>3.25.1</version><!-- {x-version-update:grpc-google-cloud-firestore-admin-v1:current} -->
65+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:grpc-google-cloud-firestore-admin-v1:current} -->
6666
</dependency>
6767
<dependency>
6868
<groupId>com.google.api.grpc</groupId>
6969
<artifactId>grpc-google-cloud-firestore-v1</artifactId>
70-
<version>3.25.1</version><!-- {x-version-update:grpc-google-cloud-firestore-v1:current} -->
70+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:grpc-google-cloud-firestore-v1:current} -->
7171
</dependency>
7272
<dependency>
7373
<groupId>com.google.api.grpc</groupId>
7474
<artifactId>proto-google-cloud-firestore-admin-v1</artifactId>
75-
<version>3.25.1</version><!-- {x-version-update:proto-google-cloud-firestore-admin-v1:current} -->
75+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:proto-google-cloud-firestore-admin-v1:current} -->
7676
</dependency>
7777
<dependency>
7878
<groupId>com.google.api.grpc</groupId>
7979
<artifactId>proto-google-cloud-firestore-v1</artifactId>
80-
<version>3.25.1</version><!-- {x-version-update:proto-google-cloud-firestore-v1:current} -->
80+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:proto-google-cloud-firestore-v1:current} -->
8181
</dependency>
8282
<dependency>
8383
<groupId>com.google.cloud</groupId>
8484
<artifactId>proto-google-cloud-firestore-bundle-v1</artifactId>
85-
<version>3.25.1</version><!-- {x-version-update:proto-google-cloud-firestore-bundle-v1:current} -->
85+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:proto-google-cloud-firestore-bundle-v1:current} -->
8686
</dependency>
8787
</dependencies>
8888
</dependencyManagement>

google-cloud-firestore/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<artifactId>google-cloud-firestore</artifactId>
5-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore:current} -->
5+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore:current} -->
66
<packaging>jar</packaging>
77
<name>Google Cloud Firestore</name>
88
<url>https://github.com/googleapis/java-firestore</url>
@@ -12,7 +12,7 @@
1212
<parent>
1313
<groupId>com.google.cloud</groupId>
1414
<artifactId>google-cloud-firestore-parent</artifactId>
15-
<version>3.25.1</version><!-- {x-version-update:google-cloud-firestore:current} -->
15+
<version>99.99.0-PRIVATEPREVIEW</version><!-- {x-version-update:google-cloud-firestore:current} -->
1616
</parent>
1717
<properties>
1818
<site.installationModule>google-cloud-firestore</site.installationModule>

google-cloud-firestore/src/main/java/com/google/cloud/firestore/Firestore.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,35 @@ public interface Firestore extends Service<FirestoreOptions>, AutoCloseable {
6666
*/
6767
CollectionGroup collectionGroup(@Nonnull String collectionId);
6868

69+
/**
70+
* Creates a new {@link PipelineSource} to build and execute a data pipeline.
71+
*
72+
* <p>A pipeline is composed of a sequence of stages. Each stage processes the output from the
73+
* previous one, and the final stage's output is the result of the pipeline's execution.
74+
*
75+
* <p><b>Example usage:</b>
76+
*
77+
* <pre>{@code
78+
* Pipeline pipeline = firestore.pipeline()
79+
* .collection("books")
80+
* .where(Field("rating").isGreaterThan(4.5))
81+
* .sort(Field("rating").descending())
82+
* .limit(2);
83+
* }</pre>
84+
*
85+
* <p><b>Note on Execution:</b> The stages are conceptual. The Firestore backend may optimize
86+
* execution (e.g., reordering or merging stages) as long as the final result remains the same.
87+
*
88+
* <p><b>Important Limitations:</b>
89+
*
90+
* <ul>
91+
* <li>Pipelines operate on a <b>request/response basis only</b>.
92+
* <li>They do <b>not</b> utilize or update the local SDK cache.
93+
* <li>They do <b>not</b> support realtime snapshot listeners.
94+
* </ul>
95+
*
96+
* @return A {@code PipelineSource} to begin defining the pipeline's stages.
97+
*/
6998
PipelineSource pipeline();
7099

71100
/**

google-cloud-firestore/src/main/java/com/google/cloud/firestore/Pipeline.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1291,7 +1291,7 @@ public void onComplete() {
12911291
}
12921292
};
12931293

1294-
logger.log(Level.INFO, "Sending pipeline request: " + request.getStructuredPipeline());
1294+
logger.log(Level.FINEST, "Sending pipeline request: " + request.getStructuredPipeline());
12951295

12961296
rpcContext.streamRequest(request, observer, rpcContext.getClient().executePipelineCallable());
12971297
}

google-cloud-firestore/src/main/java/com/google/cloud/firestore/PipelineUtils.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static com.google.cloud.firestore.pipeline.expressions.Expression.arrayContainsAny;
2222
import static com.google.cloud.firestore.pipeline.expressions.Expression.field;
2323
import static com.google.cloud.firestore.pipeline.expressions.Expression.not;
24+
import static com.google.cloud.firestore.pipeline.expressions.Expression.nullValue;
2425
import static com.google.cloud.firestore.pipeline.expressions.Expression.or;
2526
import static com.google.cloud.firestore.pipeline.expressions.FunctionUtils.aggregateFunctionToValue;
2627
import static com.google.cloud.firestore.pipeline.expressions.FunctionUtils.exprToValue;
@@ -109,7 +110,7 @@ static BooleanExpression toPipelineBooleanExpr(FilterInternal f) {
109110
case EQUAL:
110111
return and(field.exists(), field.equal(value));
111112
case NOT_EQUAL:
112-
return and(field.exists(), not(field.equal(value)));
113+
return and(field.exists(), field.notEqual(value));
113114
case ARRAY_CONTAINS:
114115
return and(field.exists(), field.arrayContains(value));
115116
case IN:
@@ -155,13 +156,13 @@ static BooleanExpression toPipelineBooleanExpr(FilterInternal f) {
155156
Field field = Field.ofServerPath(unaryFilter.fieldReference.getFieldPath());
156157
switch (unaryFilter.getOperator()) {
157158
case IS_NAN:
158-
return and(field.exists(), field.isNaN());
159+
return and(field.exists(), field.equal(Double.NaN));
159160
case IS_NULL:
160-
return and(field.exists(), field.isNull());
161+
return and(field.exists(), field.equal(nullValue()));
161162
case IS_NOT_NAN:
162-
return and(field.exists(), field.isNotNaN());
163+
return and(field.exists(), field.notEqual(Double.NaN));
163164
case IS_NOT_NULL:
164-
return and(field.exists(), field.isNotNull());
165+
return and(field.exists(), field.notEqual(nullValue()));
165166
default:
166167
// Handle OPERATOR_UNSPECIFIED and UNRECOGNIZED cases as needed
167168
throw new IllegalArgumentException("Unsupported operator: " + unaryFilter.getOperator());
@@ -219,9 +220,17 @@ public static Map<String, Expression> selectablesToMap(Selectable... selectables
219220
for (Selectable proj : selectables) {
220221
if (proj instanceof Field) {
221222
Field fieldProj = (Field) proj;
223+
if (projMap.containsKey(fieldProj.getPath().getEncodedPath())) {
224+
throw new IllegalArgumentException(
225+
"Duplicate alias or field name: " + fieldProj.getPath().getEncodedPath());
226+
}
222227
projMap.put(fieldProj.getPath().getEncodedPath(), fieldProj);
223228
} else if (proj instanceof AliasedExpression) {
224229
AliasedExpression aliasedExpr = (AliasedExpression) proj;
230+
if (projMap.containsKey(aliasedExpr.getAlias())) {
231+
throw new IllegalArgumentException(
232+
"Duplicate alias or field name: " + aliasedExpr.getAlias());
233+
}
225234
projMap.put(aliasedExpr.getAlias(), aliasedExpr.getExpr());
226235
}
227236
}

0 commit comments

Comments
 (0)