~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/join_cache.cc

  • Committer: Andrew Hutchings
  • Date: 2011-01-04 11:36:01 UTC
  • mto: This revision was merged to the branch mainline in revision 2057.
  • Revision ID: andrew@linuxjedi.co.uk-20110104113601-diiveyfl32dgaa6f
Refix using placement new for join code, vector for join cache buffer.
Also refix a bug in COND_CMP properly

Show diffs side-by-side

added added

removed removed

Lines of Context:
89
89
  if (!(cache->field=(CacheField*)
90
90
        memory::sql_alloc(sizeof(CacheField)*(cache->fields+table_count*2)+(blobs+1)* sizeof(CacheField*))))
91
91
  {
92
 
    size= cache->end - cache->buff;
 
92
    size= cache->buff.size();
93
93
    global_join_buffer.sub(size);
94
 
    free((unsigned char*) cache->buff);
95
 
    cache->buff=0;
 
94
    cache->buff.clear();
96
95
    return(1);
97
96
  }
98
97
  copy=cache->field;
171
170
    my_error(ER_OUT_OF_GLOBAL_JOINMEMORY, MYF(ME_ERROR+ME_WAITTANG));
172
171
    return 1;
173
172
  }
174
 
  if (!(cache->buff= (unsigned char*) malloc(size)))
175
 
    return 1;
176
 
  cache->end= cache->buff+size;
 
173
  cache->buff.resize(size);
 
174
  cache->end= &cache->buff.back();
177
175
  cache->reset_cache_write();
178
176
 
179
177
  return 0;
255
253
void JoinCache::reset_cache_read()
256
254
{
257
255
  record_nr= 0;
258
 
  pos= buff;
 
256
  pos= &buff[0];
259
257
}
260
258
 
261
259
void JoinCache::reset_cache_write()