~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/filesort.cc

edit

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
  Sorts a database
22
22
*/
23
23
 
24
 
#include <config.h>
 
24
#include "config.h"
25
25
 
26
26
#include <float.h>
27
27
#include <limits.h>
30
30
#include <algorithm>
31
31
#include <iostream>
32
32
 
33
 
#include <drizzled/drizzled.h>
34
 
#include <drizzled/sql_sort.h>
35
 
#include <drizzled/filesort.h>
36
 
#include <drizzled/error.h>
37
 
#include <drizzled/probes.h>
38
 
#include <drizzled/session.h>
39
 
#include <drizzled/table.h>
40
 
#include <drizzled/table_list.h>
41
 
#include <drizzled/optimizer/range.h>
42
 
#include <drizzled/records.h>
43
 
#include <drizzled/internal/iocache.h>
44
 
#include <drizzled/internal/my_sys.h>
45
 
#include <plugin/myisam/myisam.h>
46
 
#include <drizzled/plugin/transactional_storage_engine.h>
47
 
#include <drizzled/atomics.h>
48
 
#include <drizzled/global_buffer.h>
49
 
 
50
 
#include <drizzled/sort_field.h>
 
33
#include "drizzled/drizzled.h"
 
34
#include "drizzled/sql_sort.h"
 
35
#include "drizzled/filesort.h"
 
36
#include "drizzled/error.h"
 
37
#include "drizzled/probes.h"
 
38
#include "drizzled/session.h"
 
39
#include "drizzled/table.h"
 
40
#include "drizzled/table_list.h"
 
41
#include "drizzled/optimizer/range.h"
 
42
#include "drizzled/records.h"
 
43
#include "drizzled/internal/iocache.h"
 
44
#include "drizzled/internal/my_sys.h"
 
45
#include "plugin/myisam/myisam.h"
 
46
#include "drizzled/plugin/transactional_storage_engine.h"
 
47
#include "drizzled/atomics.h"
 
48
#include "drizzled/global_buffer.h"
51
49
 
52
50
 
53
51
using namespace std;
134
132
 
135
133
/* functions defined in this file */
136
134
 
137
 
static char **make_char_array(char **old_pos, uint32_t fields,
 
135
static char **make_char_array(char **old_pos, register uint32_t fields,
138
136
                              uint32_t length);
139
137
 
140
138
static unsigned char *read_buffpek_from_file(internal::IO_CACHE *buffer_file,
456
454
 
457
455
/** Make a array of string pointers. */
458
456
 
459
 
static char **make_char_array(char **old_pos, uint32_t fields,
 
457
static char **make_char_array(char **old_pos, register uint32_t fields,
460
458
                              uint32_t length)
461
459
{
462
 
  char **pos;
 
460
  register char **pos;
463
461
  char *char_pos;
464
462
 
465
463
  if (old_pos ||
723
721
    1 Error
724
722
*/
725
723
 
726
 
int SortParam::write_keys(unsigned char **sort_keys, uint32_t count,
 
724
int SortParam::write_keys(register unsigned char **sort_keys, uint32_t count,
727
725
                          internal::IO_CACHE *buffpek_pointers, internal::IO_CACHE *tempfile)
728
726
{
729
727
  buffpek buffpek;
788
786
 
789
787
/** Make a sort-key from record. */
790
788
 
791
 
void SortParam::make_sortkey(unsigned char *to, unsigned char *ref_pos)
 
789
void SortParam::make_sortkey(register unsigned char *to, unsigned char *ref_pos)
792
790
{
793
791
  Field *field;
794
792
  SortField *sort_field;
1021
1019
 
1022
1020
 
1023
1021
/*
1024
 
  fields used by sorting in the sorted table's read set
 
1022
  Register fields used by sorting in the sorted table's read set
1025
1023
*/
1026
1024
 
1027
1025
void SortParam::register_used_fields()
1104
1102
  from_file= t_file ; to_file= &t_file2;
1105
1103
  while (*maxbuffer >= MERGEBUFF2)
1106
1104
  {
1107
 
    uint32_t i;
 
1105
    register uint32_t i;
1108
1106
 
1109
1107
    if (from_file->reinit_io_cache(internal::READ_CACHE,0L,0,0))
1110
1108
    {
1164
1162
 
1165
1163
uint32_t FileSort::read_to_buffer(internal::IO_CACHE *fromfile, buffpek *buffpek_inst, uint32_t rec_length)
1166
1164
{
1167
 
  uint32_t count;
 
1165
  register uint32_t count;
1168
1166
  uint32_t length;
1169
1167
 
1170
1168
  if ((count= (uint32_t) min((ha_rows) buffpek_inst->max_keys,buffpek_inst->count)))
1405
1403
    }
1406
1404
    else
1407
1405
    {
1408
 
      unsigned char *end;
 
1406
      register unsigned char *end;
1409
1407
      strpos= buffpek_inst->key+offset;
1410
1408
      for (end= strpos+buffpek_inst->mem_count*rec_length ;
1411
1409
           strpos != end ;
1476
1474
 
1477
1475
uint32_t FileSort::sortlength(SortField *sortorder, uint32_t s_length, bool *multi_byte_charset)
1478
1476
{
1479
 
  uint32_t length;
 
1477
  register uint32_t length;
1480
1478
  const CHARSET_INFO *cs;
1481
1479
  *multi_byte_charset= 0;
1482
1480