Files
scylladb/cql3/ut_name.cc
Wojciech Mitros 169a821316 cql: maybe quote user type name in ut_name::to_string()
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.
2023-03-23 01:41:58 +01:00

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();
}
}