 
 #include "join/joining.h"
 #include "gdf_table.cuh"
+#include "hashmap/hash_functions.cuh"
 
 constexpr int HASH_KERNEL_BLOCK_SIZE = 256;
 constexpr int HASH_KERNEL_ROWS_PER_THREAD = 1;

      return GDF_COLUMN_SIZE_MISMATCH;
  }

  using size_type = size_t;
  std::unique_ptr< const gdf_table<size_type> > input_table{new gdf_table<size_type>(num_input_cols, input)};
  std::unique_ptr< gdf_table<size_type> > output_table{new gdf_table<size_type>(num_input_cols, partitioned_output)};
  size_type number_of_partitions{static_cast<size_type>(num_partitions)};

  switch(hash)
  {
    case GDF_HASH_MURMUR3:
      {
        partition_gdf_table(*input_table, *output_table, number_of_partitions);
        break;
      }
    default:


  // check that the columns data are not null, have matching types,
  // and the same number of rows
  for (size_type i = 0; i < num_input_cols; i++) {
    if( (nullptr == input[i]->data) 
        || (nullptr == partitioned_output[i]->data))
      return GDF_DATASET_EMPTY;
