Commit 23c33249 authored by unknown's avatar unknown
Browse files

Merge poseidon.mysql.com:/home/tomas/mysql-5.0-telco-gca

into  poseidon.mysql.com:/home/tomas/mysql-5.1-telco-gca


storage/ndb/tools/restore/Restore.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbRecAttr.cpp:
  manual merge
parents 7c1572de f9bfa780
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -343,24 +343,24 @@ NdbOut& operator<<(NdbOut& out, const NdbRecAttr &r)
    }
    break;
    case NdbDictionary::Column::Blob:
    {
      const NdbBlob::Head* h = (const NdbBlob::Head*)r.aRef();
      out << h->length << ":";
      const unsigned char* p = (const unsigned char*)(h + 1);
      unsigned n = r.get_size_in_bytes() - sizeof(*h);
      for (unsigned k = 0; k < n && k < h->length; k++)
	out.print("%02X", (int)p[k]);
      j = length;
    }
    break;
    case NdbDictionary::Column::Text:
    {
      const NdbBlob::Head* h = (const NdbBlob::Head*)r.aRef();
      out << h->length << ":";
      const unsigned char* p = (const unsigned char*)(h + 1);
      unsigned n = r.get_size_in_bytes() - sizeof(*h);
      for (unsigned k = 0; k < n && k < h->length; k++)
      // user defined aRef() may not be aligned to Uint64
      NdbBlob::Head head;
      memcpy(&head, r.aRef(), sizeof(head));
      out << head.length << ":";
      const unsigned char* p = (const unsigned char*)r.aRef() + sizeof(head);
      if (r.get_size_in_bytes() < sizeof(head))
        out << "***error***"; // really cannot happen
      else {
        unsigned n = r.get_size_in_bytes() - sizeof(head);
        for (unsigned k = 0; k < n && k < head.length; k++) {
          if (r.getType() == NdbDictionary::Column::Blob)
            out.print("%02X", (int)p[k]);
          else
            out.print("%c", (int)p[k]);
        }
      }
      j = length;
    }
    break;
+6 −1
Original line number Diff line number Diff line
@@ -59,7 +59,12 @@ BackupFile::Twiddle(const AttributeDesc* attr_desc, AttributeData* attr_data, Ui
    return true;
  case 64:
    for(i = 0; i<arraySize; i++){
      attr_data->u_int64_value[i] = Twiddle64(attr_data->u_int64_value[i]);
      // allow unaligned
      char* p = (char*)&attr_data->u_int64_value[i];
      Uint64 x;
      memcpy(&x, p, sizeof(Uint64));
      x = Twiddle64(x);
      memcpy(p, &x, sizeof(Uint64));
    }
    return true;
  default: