- Fix a bug in XCOL tables. When a row was filtered internally the XColumn

was not reset causing rows to be lost.
modified:
  storage/connect/connect.cc
  storage/connect/ha_connect.cc
  storage/connect/tabxcl.cpp

- Typo
modified:
  storage/connect/connect.cc
  storage/connect/ha_connect.cc
This commit is contained in:
Olivier Bertrand 2014-10-24 19:22:05 +02:00
parent c4cf40c21b
commit 652b964827
3 changed files with 8 additions and 7 deletions

View file

@ -416,14 +416,14 @@ RCODE EvalColumns(PGLOBAL g, PTDB tdbp, bool mrr)
for (colp= tdbp->GetColumns(); rc == RC_OK && colp;
colp= colp->GetNext()) {
colp->Reset();
colp->Reset();
// Virtual columns are computed by MariaDB
if (!colp->GetColUse(U_VIRTUAL) && (!mrr || colp->GetKcol()))
if (colp->Eval(g))
rc= RC_FX;
// Virtual columns are computed by MariaDB
if (!colp->GetColUse(U_VIRTUAL) && (!mrr || colp->GetKcol()))
if (colp->Eval(g))
rc= RC_FX;
} // endfor colp
} // endfor colp
err:
g->jump_level--;

View file

@ -2188,7 +2188,7 @@ PFIL ha_connect::CondFilter(PGLOBAL g, Item *cond)
if (trace)
htrc("Func type=%d argnum=%d\n", condf->functype(),
condf->argument_count());
condf->argument_count());
switch (condf->functype()) {
case Item_func::EQUAL_FUNC:

View file

@ -266,6 +266,7 @@ bool XCLCOL::Init(PGLOBAL g, PTDBASE tp)
void XCLCOL::ReadColumn(PGLOBAL g)
{
if (((PTDBXCL)To_Tdb)->New) {
Colp->Reset(); // In case of failed filtering
Colp->Eval(g);
strncpy(Cbuf, To_Val->GetCharValue(), Colp->GetLength());
Cbuf[Colp->GetLength()] = 0;