void FullContainerKey::toString(util::StackAllocator &alloc, util::String &str) const {
	try {
		FullContainerKeyComponents components;
		BitArray upperCaseBit(DEFAULT_UPPER_CASE_BIT_LENGTH);

		deserialize(alloc, components, upperCaseBit, true);

		str.clear();
		if (components.baseNameSize_ > 0) {
			str.append(components.baseName_, components.baseNameSize_);
		}

		if (components.systemPartId_ != UNDEF_SYSTEM_PART_ID) {
			util::NormalOStringStream oss;
			oss << components.systemPartId_;
			str.append("#");
			str.append(oss.str().c_str());
		}
		else if (components.systemPart_ != NULL && components.systemPartSize_ > 0) {
			str.append("#");
			str.append(components.systemPart_, components.systemPartSize_);
		}

		if (components.largeContainerId_ != UNDEF_LARGE_CONTAINERID) {
			util::NormalOStringStream oss;
			oss << components.largeContainerId_;
			str.append("@");
			str.append(oss.str().c_str());
		}

		if (components.affinityNumber_ != UNDEF_NODE_AFFINITY_NUMBER) {
			util::NormalOStringStream oss;
			oss << components.affinityNumber_;
			str.append("@");
			str.append(oss.str().c_str());
		}
		else if (components.affinityString_ != NULL && components.affinityStringSize_ > 0) {
			str.append("@");
			str.append(components.affinityString_, components.affinityStringSize_);
		}

	}
	catch (std::exception &e) {
		GS_RETHROW_USER_ERROR_CODED(GS_ERROR_DS_DS_CONTAINER_NAME_INVALID, e,
			"failed to get container/table name");
	}
}