                 l_table, join_type != JoinType::INNER_JOIN);
         if (err != GDF_SUCCESS) { return err; }
     }
+
+    //Construct the right columns
     if (0 != rnonjoincol.size()) {
         gdf_table<size_type> r_i_table(rnonjoincol.size(), rnonjoincol.data());
         gdf_table<size_type> r_table(num_right_cols - num_cols_to_join, result_cols + right_table_begin);

        if (err != GDF_SUCCESS) { return err; }
    }

    gdf_table<size_type> j_i_table(ljoincol.size(), ljoincol.data());
    gdf_table<size_type> j_table(num_cols_to_join, result_cols + left_table_end);
    err = j_i_table.gather(static_cast<index_type*>(left_indices->data),
            j_table, join_type != JoinType::INNER_JOIN);

	POP_RANGE();
    return err;

    }

    gdf_error err{GDF_SUCCESS};

    //Construct the left columns
    if (0 != lnonjoincol.size()) {
        gdf_table<size_type> l_i_table(lnonjoincol.size(), lnonjoincol.data());
        gdf_table<size_type> l_table(num_left_cols - num_cols_to_join, result_cols);
