DBOpParams params = {};
obj_version bucket_version;
RGWBucketInfo orig_info;
+ map<std::string, bufferlist> attrs;
/* Check if the bucket already exists and return the old info, caller will have a use for it */
orig_info.bucket.name = info.bucket.name;
params.op.bucket.info.bucket.name = info.bucket.name;
- ret = get_bucket_info(dpp, string("name"), "", orig_info, nullptr, nullptr,
+ ret = get_bucket_info(dpp, string("name"), "", orig_info, &attrs, nullptr,
&bucket_version);
if (ret) {
pobjv = &info.objv_tracker;
}
+ if (!pattrs) {
+ pattrs = &attrs;
+ }
+
InitializeParams(dpp, ¶ms);
params.op.bucket.info.bucket.name = info.bucket.name;
+ params.op.bucket.bucket_attrs = *pattrs;
if (powner) {
params.op.bucket.owner = to_string(*powner);
if (query_str == "attrs") {
params.op.query_str = "attrs";
- params.op.bucket.bucket_attrs = *pattrs;
} else if (query_str == "owner") {
/* Update only owner i.e, chown.
* Update creation_time too */
Zonegroup = {}, HasInstanceObj = {}, Quota = {}, RequesterPays = {}, HasWebsite = {}, \
WebsiteConf = {}, SwiftVersioning = {}, SwiftVerLocation = {}, MdsearchConfig = {}, \
NewBucketInstanceID = {}, ObjectLock = {}, SyncPolicyInfoGroups = {}, \
- BucketVersion = {}, Mtime = {} WHERE BucketName = {}";
+ BucketAttrs = {}, BucketVersion = {}, Mtime = {} WHERE BucketName = {}";
// Updates Attrs, OwnerID, Mtime, Version
static constexpr std::string_view AttrsQuery =
"UPDATE '{}' SET OwnerID = {}, BucketAttrs = {}, Mtime = {}, BucketVersion = {} \
WHERE BucketName = {}";
// Updates OwnerID, CreationTime, Mtime, Version
static constexpr std::string_view OwnerQuery =
- "UPDATE '{}' SET OwnerID = {}, CreationTime = {}, Mtime = {}, BucketVersion = {} WHERE BucketName = {}";
+ "UPDATE '{}' SET OwnerID = {}, CreationTime = {}, BucketAttrs = {}, Mtime = {}, BucketVersion = {} WHERE BucketName = {}";
public:
virtual ~UpdateBucketOp() {}
params.op.bucket.swift_ver_location, params.op.bucket.mdsearch_config,
params.op.bucket.new_bucket_instance_id, params.op.bucket.obj_lock,
params.op.bucket.sync_policy_info_groups,
+ params.op.bucket.bucket_attrs,
params.op.bucket.bucket_ver, params.op.bucket.mtime,
params.op.bucket.bucket_name);
}
if (params.op.query_str == "owner") {
return fmt::format(OwnerQuery, params.bucket_table,
params.op.user.user_id, params.op.bucket.creation_time,
+ params.op.bucket.bucket_attrs,
params.op.bucket.mtime,
params.op.bucket.bucket_ver, params.op.bucket.bucket_name);
}
SQL_BIND_INDEX(dpp, *stmt, index, p_params.op.bucket.bucket_name, sdb);
SQL_BIND_TEXT(dpp, *stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+ SQL_BIND_INDEX(dpp, *stmt, index, p_params.op.bucket.bucket_attrs, sdb);
+ SQL_ENCODE_BLOB_PARAM(dpp, *stmt, index, params->op.bucket.bucket_attrs, sdb);
+
SQL_BIND_INDEX(dpp, *stmt, index, p_params.op.bucket.bucket_ver, sdb);
SQL_BIND_INT(dpp, *stmt, index, params->op.bucket.bucket_version.ver, sdb);
{
int ret;
- ret = store->getDB()->update_bucket(dpp, "info", info, exclusive, nullptr, nullptr, &_mtime, &info.objv_tracker);
+ ret = store->getDB()->update_bucket(dpp, "info", info, exclusive, nullptr, &attrs, &_mtime, &info.objv_tracker);
return ret;