1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-29 21:42:28 +03:00

correct medium int printout

correct cit printout
    correct bit store retrieve
This commit is contained in:
tomas@whalegate.ndb.mysql.com 2007-03-26 17:57:00 +02:00
parent 22c5d8ba44
commit c445baeabd
3 changed files with 15 additions and 24 deletions

View File

@ -336,10 +336,7 @@ inline
Int32 Int32
NdbRecAttr::medium_value() const NdbRecAttr::medium_value() const
{ {
Uint32 tmp = *(Uint32*)theRef; return sint3korr((unsigned char *)theRef);
if (tmp & (0x1<<23))
tmp|= (0xFF<<24);
return (Int32)tmp;
} }
inline inline
@ -367,7 +364,7 @@ inline
Uint32 Uint32
NdbRecAttr::u_medium_value() const NdbRecAttr::u_medium_value() const
{ {
return *(Uint32*)theRef; return uint3korr((unsigned char*)theRef);
} }
inline inline

View File

@ -236,24 +236,13 @@ ndbrecattr_print_formatted(NdbOut& out, const NdbRecAttr &r,
break; break;
case NdbDictionary::Column::Bit: case NdbDictionary::Column::Bit:
out << f.hex_prefix << "0x"; out << f.hex_prefix << "0x";
if (length < 33)
{ {
out.print("%X", r.u_32_value()); const Uint32 *buf = (Uint32 *)r.aRef();
} int k = (length+31)/32;
else if (length < 65) while (k > 0 && (buf[--k] == 0));
{ out.print("%X", buf[k]);
out.print("%llX", r.u_64_value()); while (k > 0)
} out.print("%.8X", buf[--k]);
else
{
const unsigned char *buf = (unsigned char *)r.aRef();
int k = 4*((length+31)/32);
while (k > 0 && (*(buf + --k) == 0));
do
{
out.print("%X", (Uint32)*(buf + k--));
}
while (k >= 0);
} }
break; break;
case NdbDictionary::Column::Unsigned: case NdbDictionary::Column::Unsigned:

View File

@ -727,7 +727,8 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field,
DBUG_DUMP("value", (char*)&bits, pack_len); DBUG_DUMP("value", (char*)&bits, pack_len);
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
/* store lsw first */ /* store lsw first */
bits = (bits >> 32) | (bits << 32); bits = ((bits >> 32) & 0x00000000FFFFFFFF)
| ((bits << 32) & 0xFFFFFFFF00000000);
#endif #endif
DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)&bits, pack_len) != 0); DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)&bits, pack_len) != 0);
} }
@ -2653,7 +2654,11 @@ void ha_ndbcluster::unpack_record(byte* buf)
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
/* lsw is stored first */ /* lsw is stored first */
Uint32 *buf= (Uint32 *)(*value).rec->aRef(); Uint32 *buf= (Uint32 *)(*value).rec->aRef();
((Field_bit *) *field)->store(*buf | (((longlong)*(buf+1)) << 32), ((Field_bit *) *field)->store((((longlong)*buf)
& 0x000000000FFFFFFFF)
|
((((longlong)*(buf+1)) << 32)
& 0xFFFFFFFF00000000),
TRUE); TRUE);
#else #else
((Field_bit *) *field)->store((longlong) ((Field_bit *) *field)->store((longlong)