1#pragma once
2
3#include <string>
4#include <tuple>
5#include <Common/SipHash.h>
6
7namespace DB
8{
9
10struct QualifiedTableName
11{
12 std::string database;
13 std::string table;
14
15 bool operator==(const QualifiedTableName & other) const
16 {
17 return database == other.database && table == other.table;
18 }
19
20 bool operator<(const QualifiedTableName & other) const
21 {
22 return std::forward_as_tuple(database, table) < std::forward_as_tuple(other.database, other.table);
23 }
24
25 UInt64 hash() const
26 {
27 SipHash hash_state;
28 hash_state.update(database.data(), database.size());
29 hash_state.update(table.data(), table.size());
30 return hash_state.get64();
31 }
32};
33
34}
35
36namespace std
37{
38
39template <> struct hash<DB::QualifiedTableName>
40{
41 using argument_type = DB::QualifiedTableName;
42 using result_type = size_t;
43
44 result_type operator()(const argument_type & qualified_table) const
45 {
46 return qualified_table.hash();
47 }
48};
49
50}
51