|  | //   Copyright 2011-2015 Quickstep Technologies LLC. | 
|  | //   Copyright 2015-2016 Pivotal Software, Inc. | 
|  | // | 
|  | //   Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | //   you may not use this file except in compliance with the License. | 
|  | //   You may obtain a copy of the License at | 
|  | // | 
|  | //       http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | //   Unless required by applicable law or agreed to in writing, software | 
|  | //   distributed under the License is distributed on an "AS IS" BASIS, | 
|  | //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | //   See the License for the specific language governing permissions and | 
|  | //   limitations under the License. | 
|  |  | 
|  | syntax = "proto2"; | 
|  |  | 
|  | package quickstep.serialization; | 
|  |  | 
|  | import "expressions/Expressions.proto"; | 
|  | import "expressions/aggregation/AggregateFunction.proto"; | 
|  | import "storage/HashTable.proto"; | 
|  |  | 
|  | message Aggregate { | 
|  | required AggregateFunction function = 1; | 
|  | repeated Scalar argument = 2; | 
|  | required bool is_distinct = 3; | 
|  | } | 
|  |  | 
|  | message AggregationOperationState { | 
|  | required int32 relation_id = 1; | 
|  | repeated Aggregate aggregates = 2; | 
|  | repeated Scalar group_by_expressions = 3; | 
|  | optional Predicate predicate = 4; | 
|  | required uint64 estimated_num_entries = 5; | 
|  |  | 
|  | // NOTE(chasseur): 'hash_table_impl_type' is marked optional, but it is | 
|  | // needed if 'group_by_expressions' is non-empty, and ignored otherwise. | 
|  | optional HashTableImplType hash_table_impl_type = 6; | 
|  | } |