This second example shows how to get and update a Datastore entity if it exists. For the * complete source code see + * href="https://github.com/googleapis/google-cloud-java/blob/4f9e98b21264028901878b8a11204868eca858ce/google-cloud-examples/src/main/java/com/google/cloud/examples/datastore/snippets/UpdateEntity.java"> * UpdateEntity.java. * *
{@code
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/SerializationTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/SerializationTest.java
index 105386515..1b8186a54 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/SerializationTest.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/SerializationTest.java
@@ -69,6 +69,19 @@ public class SerializationTest extends BaseSerializationTest {
.addDistinctOn("p")
.addOrderBy(OrderBy.asc("p"))
.build();
+ private static final Query QUERY4 =
+ Query.newProjectionEntityQueryBuilder()
+ .setKind("k")
+ .setNamespace("ns1")
+ .addProjection("p")
+ .setLimit(100)
+ .setOffset(5)
+ .setStartCursor(CURSOR1)
+ .setEndCursor(CURSOR2)
+ .setFilter(CompositeFilter.or(PropertyFilter.gt("p1", 10), PropertyFilter.eq("a", "v")))
+ .addDistinctOn("p")
+ .addOrderBy(OrderBy.asc("p"))
+ .build();
private static final KeyValue KEY_VALUE = KeyValue.of(KEY1);
private static final NullValue NULL_VALUE =
NullValue.newBuilder().setExcludeFromIndexes(true).build();
@@ -136,6 +149,7 @@ protected java.io.Serializable[] serializableObjects() {
QUERY1,
QUERY2,
QUERY3,
+ QUERY4,
NULL_VALUE,
KEY_VALUE,
STRING_VALUE,
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/StructuredQueryTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/StructuredQueryTest.java
index b3f4b944a..c59337586 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/StructuredQueryTest.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/StructuredQueryTest.java
@@ -37,8 +37,10 @@ public class StructuredQueryTest {
private static final Cursor END_CURSOR = Cursor.copyFrom(new byte[] {10});
private static final int OFFSET = 42;
private static final Integer LIMIT = 43;
- private static final Filter FILTER =
+ private static final Filter AND_FILTER =
CompositeFilter.and(PropertyFilter.gt("p1", 10), PropertyFilter.eq("a", "v"));
+ private static final Filter OR_FILTER =
+ CompositeFilter.or(PropertyFilter.gt("p1", 10), PropertyFilter.eq("a", "v"));
private static final OrderBy ORDER_BY_1 = OrderBy.asc("p2");
private static final OrderBy ORDER_BY_2 = OrderBy.desc("p3");
private static final List ORDER_BY = ImmutableList.of(ORDER_BY_1, ORDER_BY_2);
@@ -56,7 +58,7 @@ public class StructuredQueryTest {
.setEndCursor(END_CURSOR)
.setOffset(OFFSET)
.setLimit(LIMIT)
- .setFilter(FILTER)
+ .setFilter(AND_FILTER)
.setOrderBy(ORDER_BY_1, ORDER_BY_2)
.build();
private static final KeyQuery KEY_QUERY =
@@ -67,7 +69,7 @@ public class StructuredQueryTest {
.setEndCursor(END_CURSOR)
.setOffset(OFFSET)
.setLimit(LIMIT)
- .setFilter(FILTER)
+ .setFilter(OR_FILTER)
.setOrderBy(ORDER_BY_1, ORDER_BY_2)
.build();
private static final ProjectionEntityQuery PROJECTION_QUERY =
@@ -78,7 +80,7 @@ public class StructuredQueryTest {
.setEndCursor(END_CURSOR)
.setOffset(OFFSET)
.setLimit(LIMIT)
- .setFilter(FILTER)
+ .setFilter(AND_FILTER)
.setOrderBy(ORDER_BY_1, ORDER_BY_2)
.setProjection(PROJECTION1, PROJECTION2)
.setDistinctOn(DISTINCT_ON1, DISTINCT_ON2)
@@ -93,7 +95,14 @@ public void testEntityQueryBuilder() {
@Test
public void testKeyQueryBuilder() {
- compareBaseBuilderFields(KEY_QUERY);
+ assertEquals(NAMESPACE, KEY_QUERY.getNamespace());
+ assertEquals(KIND, KEY_QUERY.getKind());
+ assertEquals(START_CURSOR, KEY_QUERY.getStartCursor());
+ assertEquals(END_CURSOR, KEY_QUERY.getEndCursor());
+ assertEquals(OFFSET, KEY_QUERY.getOffset());
+ assertEquals(LIMIT, KEY_QUERY.getLimit());
+ assertEquals(OR_FILTER, KEY_QUERY.getFilter());
+ assertEquals(ORDER_BY, KEY_QUERY.getOrderBy());
assertEquals(ImmutableList.of(StructuredQuery.KEY_PROPERTY_NAME), KEY_QUERY.getProjection());
assertTrue(KEY_QUERY.getDistinctOn().isEmpty());
}
@@ -112,7 +121,7 @@ private void compareBaseBuilderFields(StructuredQuery> query) {
assertEquals(END_CURSOR, query.getEndCursor());
assertEquals(OFFSET, query.getOffset());
assertEquals(LIMIT, query.getLimit());
- assertEquals(FILTER, query.getFilter());
+ assertEquals(AND_FILTER, query.getFilter());
assertEquals(ORDER_BY, query.getOrderBy());
}
diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java
index b8c3bb4b6..f010d8135 100644
--- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java
+++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java
@@ -59,6 +59,7 @@
import com.google.cloud.datastore.ReadOption;
import com.google.cloud.datastore.StringValue;
import com.google.cloud.datastore.StructuredQuery;
+import com.google.cloud.datastore.StructuredQuery.CompositeFilter;
import com.google.cloud.datastore.StructuredQuery.OrderBy;
import com.google.cloud.datastore.StructuredQuery.PropertyFilter;
import com.google.cloud.datastore.TimestampValue;
@@ -223,6 +224,85 @@ private List makeResultsCopy(QueryResults scResults) {
return results;
}
+ @Test
+ public void orQuery() {
+ Key key = Key.newBuilder(KEY1, KIND2, 2).build();
+ Entity entity3 =
+ Entity.newBuilder(ENTITY1)
+ .setKey(key)
+ .remove("str")
+ .set("name", "Dan")
+ .setNull("null")
+ .set("age", 19)
+ .build();
+ DATASTORE.put(entity3);
+
+ // age == 19 || age == 20
+ CompositeFilter orFilter =
+ CompositeFilter.or(PropertyFilter.eq("age", 19), PropertyFilter.eq("age", 20));
+ Query simpleOrQuery =
+ Query.newEntityQueryBuilder()
+ .setNamespace(NAMESPACE)
+ .setKind(KIND2)
+ .setFilter(orFilter)
+ .build();
+ QueryResults results = DATASTORE.run(simpleOrQuery);
+ assertTrue(results.hasNext());
+ assertEquals(ENTITY2, results.next());
+ assertTrue(results.hasNext());
+ assertEquals(entity3, results.next());
+ assertFalse(results.hasNext());
+
+ // age == 19 || age == 20 with limit of 1
+ Query simpleOrQueryLimit =
+ Query.newEntityQueryBuilder()
+ .setNamespace(NAMESPACE)
+ .setKind(KIND2)
+ .setFilter(orFilter)
+ .setLimit(1)
+ .build();
+ QueryResults results2 = DATASTORE.run(simpleOrQueryLimit);
+ assertTrue(results2.hasNext());
+ assertEquals(ENTITY2, results2.next());
+ assertFalse(results2.hasNext());
+
+ // (age == 18 && name == Dan) || (age == 20 && name == Dan)
+ CompositeFilter nestedOr =
+ CompositeFilter.or(
+ CompositeFilter.and(PropertyFilter.eq("age", 18), PropertyFilter.eq("name", "Dan")),
+ CompositeFilter.and(PropertyFilter.eq("age", 20), PropertyFilter.eq("name", "Dan")));
+ CompositeFilter compositeFilter =
+ CompositeFilter.and(PropertyFilter.hasAncestor(ROOT_KEY), nestedOr);
+ Query orQueryNested =
+ Query.newEntityQueryBuilder()
+ .setNamespace(NAMESPACE)
+ .setKind(KIND2)
+ .setFilter(compositeFilter)
+ .build();
+ QueryResults results3 = DATASTORE.run(orQueryNested);
+ assertTrue(results3.hasNext());
+ assertEquals(ENTITY2, results3.next());
+ assertFalse(results3.hasNext());
+
+ // age == 20 && (name == Bob || name == Dan)
+ CompositeFilter nestedOr2 =
+ CompositeFilter.or(PropertyFilter.eq("name", "Dan"), PropertyFilter.eq("name", "Bob"));
+ CompositeFilter andFilter = CompositeFilter.and(PropertyFilter.eq("age", 20), nestedOr2);
+ CompositeFilter ancestorAndFilter =
+ CompositeFilter.and(PropertyFilter.hasAncestor(ROOT_KEY), andFilter);
+ Query orQueryNested2 =
+ Query.newEntityQueryBuilder()
+ .setNamespace(NAMESPACE)
+ .setKind(KIND2)
+ .setFilter(ancestorAndFilter)
+ .setLimit(1)
+ .build();
+ QueryResults results4 = DATASTORE.run(orQueryNested2);
+ assertTrue(results4.hasNext());
+ assertEquals(ENTITY2, results4.next());
+ assertFalse(results4.hasNext());
+ }
+
@Test
public void testNewTransactionCommit() {
Transaction transaction = DATASTORE.newTransaction();
@@ -946,6 +1026,21 @@ public void testInNotInNeqFilters() throws InterruptedException {
assertEquals(e2, resultNeq.next());
assertFalse(resultNeq.hasNext());
+ Query scQueryInEqOr =
+ Query.newEntityQueryBuilder()
+ .setKind(KIND1)
+ .setFilter(
+ CompositeFilter.or(
+ PropertyFilter.in("v_int", ListValue.of(10, 50000)),
+ PropertyFilter.eq("v_int", 10000)))
+ .build();
+
+ QueryResults run = DATASTORE.run(scQueryInEqOr);
+
+ assertTrue(run.hasNext());
+ assertEquals(e1, run.next());
+ assertFalse(run.hasNext());
+
DATASTORE.delete(e1.getKey());
DATASTORE.delete(e2.getKey());
}
diff --git a/grpc-google-cloud-datastore-admin-v1/pom.xml b/grpc-google-cloud-datastore-admin-v1/pom.xml
index 49fee5cf0..f92d982b4 100644
--- a/grpc-google-cloud-datastore-admin-v1/pom.xml
+++ b/grpc-google-cloud-datastore-admin-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-datastore-admin-v1
- 2.13.5
+ 2.14.2
grpc-google-cloud-datastore-admin-v1
GRPC library for google-cloud-datastore
com.google.cloud
google-cloud-datastore-parent
- 2.13.5
+ 2.14.2
diff --git a/grpc-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminGrpc.java b/grpc-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminGrpc.java
index 29fc8fcdc..59052f146 100644
--- a/grpc-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminGrpc.java
+++ b/grpc-google-cloud-datastore-admin-v1/src/main/java/com/google/datastore/admin/v1/DatastoreAdminGrpc.java
@@ -421,7 +421,7 @@ public DatastoreAdminFutureStub newStub(
* but are accessed via service google.longrunning.Operations.
*
*/
- public abstract static class DatastoreAdminImplBase implements io.grpc.BindableService {
+ public interface AsyncService {
/**
*
@@ -437,7 +437,7 @@ public abstract static class DatastoreAdminImplBase implements io.grpc.BindableS
* Cloud Storage.
*
*/
- public void exportEntities(
+ default void exportEntities(
com.google.datastore.admin.v1.ExportEntitiesRequest request,
io.grpc.stub.StreamObserver+ * Google Cloud Datastore Admin API + * The Datastore Admin API provides several admin services for Cloud Datastore. + * ----------------------------------------------------------------------------- + * ## Concepts + * Project, namespace, kind, and entity as defined in the Google Cloud Datastore + * API. + * Operation: An Operation represents work being performed in the background. + * EntityFilter: Allows specifying a subset of entities in a project. This is + * specified as a combination of kinds and namespaces (either or both of which + * may be all). + * ----------------------------------------------------------------------------- + * ## Services + * # Export/Import + * The Export/Import service provides the ability to copy all or a subset of + * entities to/from Google Cloud Storage. + * Exported data may be imported into Cloud Datastore for any Google Cloud + * Platform project. It is not restricted to the export source project. It is + * possible to export from one project and then import into another. + * Exported data can also be loaded into Google BigQuery for analysis. + * Exports and imports are performed asynchronously. An Operation resource is + * created for each export/import. The state (including any errors encountered) + * of the export/import may be queried via the Operation resource. + * # Index + * The index service manages Cloud Datastore composite indexes. + * Index creation and deletion are performed asynchronously. + * An Operation resource is created for each such asynchronous operation. + * The state of the operation (including any errors encountered) + * may be queried via the Operation resource. + * # Operation + * The Operations collection provides a record of actions performed for the + * specified project (including any operations in progress). Operations are not + * created directly but through calls on other collections or resources. + * An operation that is not yet done may be cancelled. The request to cancel is + * asynchronous and the operation may continue to run for some time after the + * request to cancel is made. + * An operation that is done may be deleted so that it is no longer listed as + * part of the Operation collection. + * ListOperations returns all pending operations, but not completed operations. + * Operations are created by service DatastoreAdmin, + * but are accessed via service google.longrunning.Operations. + *+ */ + public abstract static class DatastoreAdminImplBase + implements io.grpc.BindableService, AsyncService { @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) - .addMethod( - getExportEntitiesMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.ExportEntitiesRequest, - com.google.longrunning.Operation>(this, METHODID_EXPORT_ENTITIES))) - .addMethod( - getImportEntitiesMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.ImportEntitiesRequest, - com.google.longrunning.Operation>(this, METHODID_IMPORT_ENTITIES))) - .addMethod( - getCreateIndexMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.CreateIndexRequest, - com.google.longrunning.Operation>(this, METHODID_CREATE_INDEX))) - .addMethod( - getDeleteIndexMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.DeleteIndexRequest, - com.google.longrunning.Operation>(this, METHODID_DELETE_INDEX))) - .addMethod( - getGetIndexMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.GetIndexRequest, - com.google.datastore.admin.v1.Index>(this, METHODID_GET_INDEX))) - .addMethod( - getListIndexesMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.datastore.admin.v1.ListIndexesRequest, - com.google.datastore.admin.v1.ListIndexesResponse>( - this, METHODID_LIST_INDEXES))) - .build(); + return DatastoreAdminGrpc.bindService(this); } } /** - * + * A stub to allow clients to do asynchronous rpc calls to service DatastoreAdmin. * *
* Google Cloud Datastore Admin API
@@ -769,7 +781,7 @@ public void listIndexes(
}
/**
- *
+ * A stub to allow clients to do synchronous rpc calls to service DatastoreAdmin.
*
*
* Google Cloud Datastore Admin API
@@ -938,7 +950,7 @@ public com.google.datastore.admin.v1.ListIndexesResponse listIndexes(
}
/**
- *
+ * A stub to allow clients to do ListenableFuture-style rpc calls to service DatastoreAdmin.
*
*
* Google Cloud Datastore Admin API
@@ -1119,10 +1131,10 @@ private static final class MethodHandlers
io.grpc.stub.ServerCalls.ServerStreamingMethod,
io.grpc.stub.ServerCalls.ClientStreamingMethod,
io.grpc.stub.ServerCalls.BidiStreamingMethod {
- private final DatastoreAdminImplBase serviceImpl;
+ private final AsyncService serviceImpl;
private final int methodId;
- MethodHandlers(DatastoreAdminImplBase serviceImpl, int methodId) {
+ MethodHandlers(AsyncService serviceImpl, int methodId) {
this.serviceImpl = serviceImpl;
this.methodId = methodId;
}
@@ -1178,6 +1190,48 @@ public io.grpc.stub.StreamObserver invoke(
}
}
+ public static final io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+ return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+ .addMethod(
+ getExportEntitiesMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.ExportEntitiesRequest,
+ com.google.longrunning.Operation>(service, METHODID_EXPORT_ENTITIES)))
+ .addMethod(
+ getImportEntitiesMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.ImportEntitiesRequest,
+ com.google.longrunning.Operation>(service, METHODID_IMPORT_ENTITIES)))
+ .addMethod(
+ getCreateIndexMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.CreateIndexRequest,
+ com.google.longrunning.Operation>(service, METHODID_CREATE_INDEX)))
+ .addMethod(
+ getDeleteIndexMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.DeleteIndexRequest,
+ com.google.longrunning.Operation>(service, METHODID_DELETE_INDEX)))
+ .addMethod(
+ getGetIndexMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.GetIndexRequest,
+ com.google.datastore.admin.v1.Index>(service, METHODID_GET_INDEX)))
+ .addMethod(
+ getListIndexesMethod(),
+ io.grpc.stub.ServerCalls.asyncUnaryCall(
+ new MethodHandlers<
+ com.google.datastore.admin.v1.ListIndexesRequest,
+ com.google.datastore.admin.v1.ListIndexesResponse>(
+ service, METHODID_LIST_INDEXES)))
+ .build();
+ }
+
private abstract static class DatastoreAdminBaseDescriptorSupplier
implements io.grpc.protobuf.ProtoFileDescriptorSupplier,
io.grpc.protobuf.ProtoServiceDescriptorSupplier {
diff --git a/pom.xml b/pom.xml
index 5183f87e4..eabf1c94a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-datastore-parent
pom
- 2.13.5
+ 2.14.2
Google Cloud Datastore Parent
https://github.com/googleapis/java-datastore
@@ -151,7 +151,7 @@
com.google.cloud
google-cloud-shared-dependencies
- 3.3.0
+ 3.6.0
pom
import
@@ -159,27 +159,27 @@
com.google.api.grpc
proto-google-cloud-datastore-admin-v1
- 2.13.5
+ 2.14.2
com.google.api.grpc
grpc-google-cloud-datastore-admin-v1
- 2.13.5
+ 2.14.2
com.google.cloud
google-cloud-datastore
- 2.13.5
+ 2.14.2
com.google.api.grpc
proto-google-cloud-datastore-v1
- 0.104.5
+ 0.105.2
com.google.cloud.datastore
datastore-v1-proto-client
- 2.13.5
+ 2.14.2
com.google.api.grpc
@@ -232,7 +232,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.10.1
+ 3.11.0
UTF-8
true
diff --git a/proto-google-cloud-datastore-admin-v1/pom.xml b/proto-google-cloud-datastore-admin-v1/pom.xml
index 0df47ea36..5a13251a4 100644
--- a/proto-google-cloud-datastore-admin-v1/pom.xml
+++ b/proto-google-cloud-datastore-admin-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-datastore-admin-v1
- 2.13.5
+ 2.14.2
proto-google-cloud-datastore-admin-v1
Proto library for google-cloud-datastore
com.google.cloud
google-cloud-datastore-parent
- 2.13.5
+ 2.14.2
diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml
index 5595c4c45..33adffc1f 100644
--- a/proto-google-cloud-datastore-v1/pom.xml
+++ b/proto-google-cloud-datastore-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-datastore-v1
- 0.104.5
+ 0.105.2
proto-google-cloud-datastore-v1
PROTO library for proto-google-cloud-datastore-v1
com.google.cloud
google-cloud-datastore-parent
- 2.13.5
+ 2.14.2
diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java
index 91aa55f7d..5311d1a45 100644
--- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java
+++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/AggregationQuery.java
@@ -121,7 +121,7 @@ public interface AggregationOrBuilder
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -132,7 +132,7 @@ public interface AggregationOrBuilder
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -161,7 +161,7 @@ public interface AggregationOrBuilder
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -172,7 +172,7 @@ public interface AggregationOrBuilder
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -195,7 +195,7 @@ public interface AggregationOrBuilder
*
*
*
- * Defines a aggregation that produces a single result.
+ * Defines an aggregation that produces a single result.
*
*
* Protobuf type {@code google.datastore.v1.AggregationQuery.Aggregation}
@@ -252,7 +252,7 @@ public interface CountOrBuilder
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -277,7 +277,7 @@ public interface CountOrBuilder
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -302,7 +302,7 @@ public interface CountOrBuilder
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -377,7 +377,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -405,7 +405,7 @@ public boolean hasUpTo() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -433,7 +433,7 @@ public com.google.protobuf.Int64Value getUpTo() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -825,7 +825,7 @@ public Builder mergeFrom(
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -852,7 +852,7 @@ public boolean hasUpTo() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -883,7 +883,7 @@ public com.google.protobuf.Int64Value getUpTo() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -918,7 +918,7 @@ public Builder setUpTo(com.google.protobuf.Int64Value value) {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -950,7 +950,7 @@ public Builder setUpTo(com.google.protobuf.Int64Value.Builder builderForValue) {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -988,7 +988,7 @@ public Builder mergeUpTo(com.google.protobuf.Int64Value value) {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -1020,7 +1020,7 @@ public Builder clearUpTo() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -1047,7 +1047,7 @@ public com.google.protobuf.Int64Value.Builder getUpToBuilder() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -1076,7 +1076,7 @@ public com.google.protobuf.Int64ValueOrBuilder getUpToOrBuilder() {
* Optional. Optional constraint on the maximum number of entities to
* count.
* This provides a way to set an upper bound on the number of entities
- * to scan, limiting latency and cost.
+ * to scan, limiting latency, and cost.
* Unspecified is interpreted as no bound.
* If a zero value is provided, a count result of zero should always be
* expected.
@@ -1287,7 +1287,7 @@ public com.google.datastore.v1.AggregationQuery.Aggregation.CountOrBuilder getCo
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -1298,7 +1298,7 @@ public com.google.datastore.v1.AggregationQuery.Aggregation.CountOrBuilder getCo
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -1338,7 +1338,7 @@ public java.lang.String getAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -1349,7 +1349,7 @@ public java.lang.String getAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -1567,7 +1567,7 @@ protected Builder newBuilderForType(
*
*
*
- * Defines a aggregation that produces a single result.
+ * Defines an aggregation that produces a single result.
*
*
* Protobuf type {@code google.datastore.v1.AggregationQuery.Aggregation}
@@ -2021,7 +2021,7 @@ public com.google.datastore.v1.AggregationQuery.Aggregation.Count.Builder getCou
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -2032,7 +2032,7 @@ public com.google.datastore.v1.AggregationQuery.Aggregation.Count.Builder getCou
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -2071,7 +2071,7 @@ public java.lang.String getAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -2082,7 +2082,7 @@ public java.lang.String getAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -2121,7 +2121,7 @@ public com.google.protobuf.ByteString getAliasBytes() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -2132,7 +2132,7 @@ public com.google.protobuf.ByteString getAliasBytes() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -2170,7 +2170,7 @@ public Builder setAlias(java.lang.String value) {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -2181,7 +2181,7 @@ public Builder setAlias(java.lang.String value) {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
@@ -2215,7 +2215,7 @@ public Builder clearAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2),
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4)
+ * COUNT(*)
* OVER (
* ...
* );
@@ -2226,7 +2226,7 @@ public Builder clearAlias() {
* COUNT_UP_TO(1) AS count_up_to_1,
* COUNT_UP_TO(2) AS property_1,
* COUNT_UP_TO(3) AS count_up_to_3,
- * COUNT_UP_TO(4) AS property_2
+ * COUNT(*) AS property_2
* OVER (
* ...
* );
diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java
index 39432e877..d6f7c3c6a 100644
--- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java
+++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Entity.java
@@ -173,8 +173,8 @@ public int getPropertiesCount() {
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -200,8 +200,8 @@ public java.util.Map getPropert
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -218,8 +218,8 @@ public java.util.Map getPropert
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -244,8 +244,8 @@ public java.util.Mapmap<string, .google.datastore.v1.Value> properties = 3;
@@ -918,8 +918,8 @@ public int getPropertiesCount() {
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -945,8 +945,8 @@ public java.util.Mapmap<string, .google.datastore.v1.Value> properties = 3;
@@ -963,8 +963,8 @@ public java.util.Mapmap<string, .google.datastore.v1.Value> properties = 3;
@@ -989,8 +989,8 @@ public java.util.Mapmap<string, .google.datastore.v1.Value> properties = 3;
@@ -1021,8 +1021,8 @@ public Builder clearProperties() {
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -1048,8 +1048,8 @@ public java.util.Mapmap<string, .google.datastore.v1.Value> properties = 3;
@@ -1073,8 +1073,8 @@ public Builder putProperties(java.lang.String key, com.google.datastore.v1.Value
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java
index 19f935612..d36510825 100644
--- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java
+++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/EntityOrBuilder.java
@@ -78,8 +78,8 @@ public interface EntityOrBuilder
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -93,8 +93,8 @@ public interface EntityOrBuilder
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -111,8 +111,8 @@ public interface EntityOrBuilder
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -126,8 +126,8 @@ public interface EntityOrBuilder
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
@@ -145,8 +145,8 @@ com.google.datastore.v1.Value getPropertiesOrDefault(
* The map's keys are property names.
* A property name matching regex `__.*__` is reserved.
* A reserved property name is forbidden in certain documented contexts.
- * The name must not contain more than 500 characters.
- * The name cannot be `""`.
+ * The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ * be empty.
*
*
* map<string, .google.datastore.v1.Value> properties = 3;
diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java
index 475a26177..2b23df9f8 100644
--- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java
+++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/Query.java
@@ -345,6 +345,9 @@ public com.google.datastore.v1.PropertyOrderOrBuilder getOrderOrBuilder(int inde
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -360,6 +363,9 @@ public java.util.Listrepeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -376,6 +382,9 @@ public java.util.Listrepeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -391,6 +400,9 @@ public int getDistinctOnCount() {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -406,6 +418,9 @@ public com.google.datastore.v1.PropertyReference getDistinctOn(int index) {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2509,6 +2524,9 @@ private void ensureDistinctOnIsMutable() {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2527,6 +2545,9 @@ public java.util.Listrepeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2545,6 +2566,9 @@ public int getDistinctOnCount() {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2563,6 +2587,9 @@ public com.google.datastore.v1.PropertyReference getDistinctOn(int index) {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2587,6 +2614,9 @@ public Builder setDistinctOn(int index, com.google.datastore.v1.PropertyReferenc
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2609,6 +2639,9 @@ public Builder setDistinctOn(
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2633,6 +2666,9 @@ public Builder addDistinctOn(com.google.datastore.v1.PropertyReference value) {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2657,6 +2693,9 @@ public Builder addDistinctOn(int index, com.google.datastore.v1.PropertyReferenc
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2679,6 +2718,9 @@ public Builder addDistinctOn(
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2701,6 +2743,9 @@ public Builder addDistinctOn(
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2723,6 +2768,9 @@ public Builder addAllDistinctOn(
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2744,6 +2792,9 @@ public Builder clearDistinctOn() {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2765,6 +2816,9 @@ public Builder removeDistinctOn(int index) {
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2779,6 +2833,9 @@ public com.google.datastore.v1.PropertyReference.Builder getDistinctOnBuilder(in
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2797,6 +2854,9 @@ public com.google.datastore.v1.PropertyReferenceOrBuilder getDistinctOnOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2816,6 +2876,9 @@ public com.google.datastore.v1.PropertyReferenceOrBuilder getDistinctOnOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2831,6 +2894,9 @@ public com.google.datastore.v1.PropertyReference.Builder addDistinctOnBuilder()
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -2846,6 +2912,9 @@ public com.google.datastore.v1.PropertyReference.Builder addDistinctOnBuilder(in
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java
index f06b1b616..1b2009699 100644
--- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java
+++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/QueryOrBuilder.java
@@ -224,6 +224,9 @@ public interface QueryOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -236,6 +239,9 @@ public interface QueryOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -248,6 +254,9 @@ public interface QueryOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -260,6 +269,9 @@ public interface QueryOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
@@ -273,6 +285,9 @@ public interface QueryOrBuilder
* The properties to make distinct. The query results will contain the first
* result for each distinct combination of values for the given properties
* (if empty, all results are returned).
+ * Requires:
+ * * If `order` is specified, the set of distinct on properties must appear
+ * before the non-distinct on properties in `order`.
*
*
* repeated .google.datastore.v1.PropertyReference distinct_on = 6;
diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto
index bbb5989e5..91c521716 100644
--- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto
+++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/aggregation_result.proto
@@ -1,4 +1,4 @@
-// Copyright 2022 Google LLC
+// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto
index 2f9c71427..4822048b6 100644
--- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto
+++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/datastore.proto
@@ -1,4 +1,4 @@
-// Copyright 2022 Google LLC
+// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto
index ddf22e032..2d22853f5 100644
--- a/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto
+++ b/proto-google-cloud-datastore-v1/src/main/proto/google/datastore/v1/entity.proto
@@ -1,4 +1,4 @@
-// Copyright 2022 Google LLC
+// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -213,7 +213,7 @@ message Entity {
// The map's keys are property names.
// A property name matching regex `__.*__` is reserved.
// A reserved property name is forbidden in certain documented contexts.
- // The name must not contain more than 500 characters.
- // The name cannot be `""`.
+ // The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot
+ // be empty.
map