@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof com.google.datastore.v1.Query)) { return super.equals(obj); } com.google.datastore.v1.Query other = (com.google.datastore.v1.Query) obj; boolean result = true; result = result && getProjectionList().equals(other.getProjectionList()); result = result && getKindList().equals(other.getKindList()); result = result && (hasFilter() == other.hasFilter()); if (hasFilter()) { result = result && getFilter().equals(other.getFilter()); } result = result && getOrderList().equals(other.getOrderList()); result = result && getDistinctOnList().equals(other.getDistinctOnList()); result = result && getStartCursor().equals(other.getStartCursor()); result = result && getEndCursor().equals(other.getEndCursor()); result = result && (getOffset() == other.getOffset()); result = result && (hasLimit() == other.hasLimit()); if (hasLimit()) { result = result && getLimit().equals(other.getLimit()); } result = result && unknownFields.equals(other.unknownFields); return result; }
hash = (53 * hash) + getKindList().hashCode();
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof com.google.datastore.v1.Query)) { return super.equals(obj); } com.google.datastore.v1.Query other = (com.google.datastore.v1.Query) obj; boolean result = true; result = result && getProjectionList().equals(other.getProjectionList()); result = result && getKindList().equals(other.getKindList()); result = result && (hasFilter() == other.hasFilter()); if (hasFilter()) { result = result && getFilter().equals(other.getFilter()); } result = result && getOrderList().equals(other.getOrderList()); result = result && getDistinctOnList().equals(other.getDistinctOnList()); result = result && getStartCursor().equals(other.getStartCursor()); result = result && getEndCursor().equals(other.getEndCursor()); result = result && (getOffset() == other.getOffset()); result = result && (hasLimit() == other.hasLimit()); if (hasLimit()) { result = result && getLimit().equals(other.getLimit()); } result = result && unknownFields.equals(other.unknownFields); return result; }
hash = (53 * hash) + getKindList().hashCode();
hash = (53 * hash) + getKindList().hashCode();
result = result && getProjectionList() .equals(other.getProjectionList()); result = result && getKindList() .equals(other.getKindList()); result = result && (hasFilter() == other.hasFilter()); if (hasFilter()) {
/** * Creates a scatter query from the given user query * * @param query the user's query. * @param numSplits the number of splits to create. */ private Query.Builder createScatterQuery(Query query, int numSplits) { // TODO(pcostello): We can potentially support better splits with equality filters in our query // if there exists a composite index on property, __scatter__, __key__. Until an API for // metadata exists, this isn't possible. Note that ancestor and inequality queries fall into // the same category. Query.Builder scatterPointQuery = Query.newBuilder(); scatterPointQuery.addAllKind(query.getKindList()); scatterPointQuery.addOrder(DatastoreHelper.makeOrder( DatastoreHelper.SCATTER_PROPERTY_NAME, Direction.ASCENDING)); // There is a split containing entities before and after each scatter entity: // ||---*------*------*------*------*------*------*---|| = scatter entity // If we represent each split as a region before a scatter entity, there is an extra region // following the last scatter point. Thus, we do not need the scatter entities for the last // region. scatterPointQuery.getLimitBuilder().setValue((numSplits - 1) * KEYS_PER_SPLIT); scatterPointQuery.addProjection(Projection.newBuilder().setProperty( PropertyReference.newBuilder().setName("__key__"))); return scatterPointQuery; }
/** * Creates a scatter query from the given user query * * @param query the user's query. * @param numSplits the number of splits to create. */ private Query.Builder createScatterQuery(Query query, int numSplits) { // TODO(pcostello): We can potentially support better splits with equality filters in our query // if there exists a composite index on property, __scatter__, __key__. Until an API for // metadata exists, this isn't possible. Note that ancestor and inequality queries fall into // the same category. Query.Builder scatterPointQuery = Query.newBuilder(); scatterPointQuery.addAllKind(query.getKindList()); scatterPointQuery.addOrder(DatastoreHelper.makeOrder( DatastoreHelper.SCATTER_PROPERTY_NAME, Direction.ASCENDING)); // There is a split containing entities before and after each scatter entity: // ||---*------*------*------*------*------*------*---|| = scatter entity // If we represent each split as a region before a scatter entity, there is an extra region // following the last scatter point. Thus, we do not need the scatter entities for the last // region. scatterPointQuery.getLimitBuilder().setValue((numSplits - 1) * KEYS_PER_SPLIT); scatterPointQuery.addProjection(Projection.newBuilder().setProperty( PropertyReference.newBuilder().setName("__key__"))); return scatterPointQuery; }