Commit Graph

4 Commits

Author SHA1 Message Date
Rafael Ávila de Espíndola
4551691b5d return a const reference from return_type
We define data_type as

using data_type = shared_ptr<const abstract_type>;

Since it is a shared_ptr, it cannot be copied into another thread
since that would create a race condition incrementing the reference
counter.

In particular, before this patch it is not legal to call
return_type from another thread.

With this patch read only access from another thread is possible.

Signed-off-by: Rafael Ávila de Espíndola <espindola@scylladb.com>
2019-04-08 11:07:45 -07:00
Rafael Ávila de Espíndola
53ab298957 Turn cql3_type into a trivial wrapper over data_type
Both cql3_type and abstract_type are normally used inside
shared_ptr. This creates a problem when an abstract_type needs to refer
to a cql3_type as that creates a cycle.

To avoid warnings from asan, we were using a std::unordered_map to
store one of the edges of the cycle. This avoids the warning, but
wastes even more memory.

Even before this patch cql3_type was a fairly light weight
structure. This patch pushes in that direction and now cql3_type is a
struct with a single member variable, a data_type.

This avoids the reference cycle and is easier to understand IMHO.

Tests: unit (dev)

Signed-off-by: Rafael Ávila de Espíndola <espindola@scylladb.com>
2019-03-20 14:10:28 -07:00
Duarte Nunes
fa2b0384d2 Replace std::experimental types with C++17 std version.
Replace stdx::optional and stdx::string_view with the C++ std
counterparts.

Some instances of boost::variant were also replaced with std::variant,
namely those that called seastar::visit.

Scylla now requires GCC 8 to compile.

Signed-off-by: Duarte Nunes <duarte@scylladb.com>
Message-Id: <20190108111141.5369-1-duarte@scylladb.com>
2019-01-08 13:16:36 +02:00
Pekka Enberg
de48966abc cql3: Move as_json_function class to separate file
The as_json_function class is not registered as a function, but we can
still keep it cql3/functions, as per its namespace, to reduce the size
of select_statement.cc.
Message-Id: <20181002132637.30233-1-penberg@scylladb.com>
2018-10-03 13:30:08 +01:00