//   Copyright 2011-2015 Quickstep Technologies LLC.
//   Copyright 2015 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;
}

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;
}
