From 31360fb01ab1f2e1fc72cef6f5afde03746db3b2 Mon Sep 17 00:00:00 2001 From: "mskold@mysql.com" <> Date: Mon, 3 Jan 2005 14:29:27 +0100 Subject: [PATCH] Merge for WL#2290 Add support for bit field in ndbcluster handler --- sql/ha_ndbcluster.cc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 6c8e948d42a..6384267861c 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -410,7 +410,6 @@ static inline bool ndb_supported_type(enum_field_types type) case MYSQL_TYPE_NULL: case MYSQL_TYPE_GEOMETRY: case MYSQL_TYPE_VARCHAR: - case MYSQL_TYPE_BIT: break; } return FALSE; @@ -498,20 +497,17 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field, } else // if (field->type() == MYSQL_TYPE_BIT) { - char buf[8]; - String str(buf, (uint32) sizeof(buf), NULL); + longlong bits= field->val_int(); - if (pack_len % 4) - // Round up bit field length to nearest word boundry - pack_len+= 4 - (pack_len % 4); + // Round up bit field length to nearest word boundry + pack_len= ((pack_len + 3) >> 2) << 2; DBUG_ASSERT(pack_len <= 8); if (field->is_null()) // Set value to NULL DBUG_RETURN((ndb_op->setValue(fieldnr, (char*)NULL, pack_len) != 0)); DBUG_PRINT("info", ("bit field")); - DBUG_DUMP("value", (char*)field->val_str(&str)->ptr(), pack_len); - DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)field->val_str(&str)->ptr(), - pack_len) != 0); + DBUG_DUMP("value", (char*)&bits, pack_len); + DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)&bits, pack_len) != 0); } } // Blob type