diff --git a/src/modb_database_p.c b/src/modb_database_p.c index 5971f51..d854aec 100644 --- a/src/modb_database_p.c +++ b/src/modb_database_p.c @@ -289,7 +289,8 @@ uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb) OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE), "(" "`mdo_id` INT UNSIGNED NOT NULL, " - "`object` MEDIUMBLOB NULL, " + "`length` INT UNSIGNED NOT NULL, " + "`object` LONGBLOB NULL, " "PRIMARY KEY (`mdo_id`)" ")", 0 ); diff --git a/src/modb_objects.c b/src/modb_objects.c index b5d63bd..a302d9d 100644 --- a/src/modb_objects.c +++ b/src/modb_objects.c @@ -233,9 +233,11 @@ int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb, strbld_str(sb, "INSERT INTO ", 0); escapeTableName_sb(sb, table, table_len); - strbld_str(sb, " (`mdo_id`, `object`) VALUES (", 0); + strbld_str(sb, " (`mdo_id`, `length`, `object`) VALUES (", 0); db_value_sb(sb, TYPE_ID, 1, object->id); strbld_char(sb, ','); + db_value_sb(sb, TYPE_UINT32, 1, object->data_len); + strbld_char(sb, ','); db_value_sb(sb, TYPE_BLOB, 2, object->data_c, object->data_len); strbld_char(sb, ')'); @@ -270,6 +272,8 @@ int64_t modbObjectUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id, columnSetValueStr_sb(sb, "mdo_id", TYPE_ID, 1, object->id); } if (object->data_c != 0) { + strbld_char(sb, ','); + columnSetValueStr_sb(sb, "length", TYPE_UINT32, 1, object->data_len); strbld_char(sb, ','); columnSetValueStr_sb(sb, "object", TYPE_BLOB, 2, object->data_c, object->data_len); }