Currently, the ut_name::to_string() is used only in 2 cases: the first one is in logs or as part of error messages, and the second one is during parsing, temporarily storing the user defined type name in the auth::resource for later preparation with database and data_dictionary context. This patch changes the string so that the 'name' part of the ut_name (as opposed to the 'keyspace' part) is now quoted when needed. This does not worsen the logging set of cases, but it does help with parsing of the resulting string, when finishing preparing the auth::resource. After the modification, a more fitting name for the function is "ut_name::to_cql_string()", so the function is renamed to that.
47 lines
982 B
C++
47 lines
982 B
C++
/*
|
|
* Copyright (C) 2015-present ScyllaDB
|
|
*
|
|
* Modified by ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: (AGPL-3.0-or-later and Apache-2.0)
|
|
*/
|
|
|
|
#include "cql3/ut_name.hh"
|
|
#include "cql3/column_identifier.hh"
|
|
|
|
namespace cql3 {
|
|
|
|
ut_name::ut_name(shared_ptr<column_identifier> ks_name, ::shared_ptr<column_identifier> ut_name)
|
|
: _ks_name{!ks_name ? std::nullopt : std::optional<sstring>{ks_name->to_string()}}
|
|
, _ut_name{ut_name}
|
|
{ }
|
|
|
|
bool ut_name::has_keyspace() const {
|
|
return bool(_ks_name);
|
|
}
|
|
|
|
void ut_name::set_keyspace(sstring keyspace) {
|
|
_ks_name = std::optional<sstring>{keyspace};
|
|
}
|
|
|
|
const sstring& ut_name::get_keyspace() const {
|
|
return _ks_name.value();
|
|
}
|
|
|
|
bytes ut_name::get_user_type_name() const {
|
|
return _ut_name->bytes_;
|
|
}
|
|
|
|
sstring ut_name::get_string_type_name() const
|
|
{
|
|
return _ut_name->to_string();
|
|
}
|
|
|
|
sstring ut_name::to_cql_string() const {
|
|
return (has_keyspace() ? (_ks_name.value() + ".") : "") + _ut_name->to_cql_string();
|
|
}
|
|
|
|
}
|