~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/filesort.cc

  • Committer: Brian Aker
  • Date: 2011-01-10 02:13:14 UTC
  • mto: This revision was merged to the branch mainline in revision 2069.
  • Revision ID: brian@tangent.org-20110110021314-dye0guuovwz4oi3j
Formattting, etc.

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 ||
566
564
  if (! indexfile && ! quick_select)
567
565
  {
568
566
    next_pos=(unsigned char*) 0;                        /* Find records in sequence */
569
 
    if (file->startTableScan(1))
570
 
      return(HA_POS_ERROR);
 
567
    file->startTableScan(1);
571
568
    file->extra_opt(HA_EXTRA_CACHE, getSession().variables.read_buff_size);
572
569
  }
573
570
 
577
574
    if (select->quick->reset())
578
575
      return(HA_POS_ERROR);
579
576
 
580
 
    if (read_record_info.init_read_record(&getSession(), select->quick->head, select, 1, 1))
581
 
      return(HA_POS_ERROR);
 
577
    read_record_info.init_read_record(&getSession(), select->quick->head, select, 1, 1);
582
578
  }
583
579
 
584
580
  /* Remember original bitmaps */
723
719
    1 Error
724
720
*/
725
721
 
726
 
int SortParam::write_keys(unsigned char **sort_keys, uint32_t count,
 
722
int SortParam::write_keys(register unsigned char **sort_keys, uint32_t count,
727
723
                          internal::IO_CACHE *buffpek_pointers, internal::IO_CACHE *tempfile)
728
724
{
729
725
  buffpek buffpek;
788
784
 
789
785
/** Make a sort-key from record. */
790
786
 
791
 
void SortParam::make_sortkey(unsigned char *to, unsigned char *ref_pos)
 
787
void SortParam::make_sortkey(register unsigned char *to, unsigned char *ref_pos)
792
788
{
793
789
  Field *field;
794
790
  SortField *sort_field;
1021
1017
 
1022
1018
 
1023
1019
/*
1024
 
  fields used by sorting in the sorted table's read set
 
1020
  Register fields used by sorting in the sorted table's read set
1025
1021
*/
1026
1022
 
1027
1023
void SortParam::register_used_fields()
1104
1100
  from_file= t_file ; to_file= &t_file2;
1105
1101
  while (*maxbuffer >= MERGEBUFF2)
1106
1102
  {
1107
 
    uint32_t i;
 
1103
    register uint32_t i;
1108
1104
 
1109
1105
    if (from_file->reinit_io_cache(internal::READ_CACHE,0L,0,0))
1110
1106
    {
1164
1160
 
1165
1161
uint32_t FileSort::read_to_buffer(internal::IO_CACHE *fromfile, buffpek *buffpek_inst, uint32_t rec_length)
1166
1162
{
1167
 
  uint32_t count;
 
1163
  register uint32_t count;
1168
1164
  uint32_t length;
1169
1165
 
1170
1166
  if ((count= (uint32_t) min((ha_rows) buffpek_inst->max_keys,buffpek_inst->count)))
1405
1401
    }
1406
1402
    else
1407
1403
    {
1408
 
      unsigned char *end;
 
1404
      register unsigned char *end;
1409
1405
      strpos= buffpek_inst->key+offset;
1410
1406
      for (end= strpos+buffpek_inst->mem_count*rec_length ;
1411
1407
           strpos != end ;
1476
1472
 
1477
1473
uint32_t FileSort::sortlength(SortField *sortorder, uint32_t s_length, bool *multi_byte_charset)
1478
1474
{
1479
 
  uint32_t length;
 
1475
  register uint32_t length;
1480
1476
  const CHARSET_INFO *cs;
1481
1477
  *multi_byte_charset= 0;
1482
1478