//   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 "types/Type.proto";

enum HashTableImplType {
  LINEAR_OPEN_ADDRESSING = 0;
  SEPARATE_CHAINING = 1;
  SIMPLE_SCALAR_SEPARATE_CHAINING = 2;
}

// NOTE(chasseur): This proto describes the run-time parameters for a resizable
// HashTable. It does not describe any template parameters of the HashTable
// class, which are different in different contexts (e.g. join vs. grouping).
message HashTable {
  required HashTableImplType hash_table_impl_type = 1;
  repeated Type key_types = 2;
  required uint64 estimated_num_entries = 3;
}
