Navigation Menu

Skip to content

Commit

Permalink
fix a bug of rnd_next with column pruning.
Browse files Browse the repository at this point in the history
  • Loading branch information
ikdttr committed Jul 28, 2009
1 parent 331cc7a commit 27220e8
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions ha_groonga.cc
Expand Up @@ -510,6 +510,7 @@ int ha_groonga::rnd_next(uchar *buf)
int rc;
mrn_record *record;
mrn_info *info = this->minfo;
mrn_cond *cond = this->mcond;
record = this->cur;
if (mcond == NULL)
{
Expand All @@ -522,10 +523,10 @@ int ha_groonga::rnd_next(uchar *buf)
if (rc == 0)
{
Field **field;
int i;
for (i=0, field = table->field; *field; i++, field++)
int i,j;
for (i=0,j=0, field = table->field; *field; i++, field++)
{
if (record->value[i] == NULL)
if ((cond) && (cond->list->columns[i] == NULL))
{
(*field)->set_null();
}
Expand All @@ -536,16 +537,17 @@ int ha_groonga::rnd_next(uchar *buf)
switch ((*field)->type())
{
case (MYSQL_TYPE_LONG) :
vint = GRN_INT32_VALUE(record->value[i]);
vint = GRN_INT32_VALUE(record->value[j]);
(*field)->set_notnull();
(*field)->store(vint);
break;
case (MYSQL_TYPE_VARCHAR) :
vchar = GRN_TEXT_VALUE(record->value[i]);
vchar = GRN_TEXT_VALUE(record->value[j]);
(*field)->set_notnull();
(*field)->store(vchar, GRN_BULK_WSIZE(record->value[i]), system_charset_info);
(*field)->store(vchar, GRN_BULK_WSIZE(record->value[j]), system_charset_info);
break;
}
j++;
}
}
mrn_rewind_record(ctx, record);
Expand Down

0 comments on commit 27220e8

Please sign in to comment.