in squangle/mysql_client/Query.cpp [240:270]
void appendColumnTableName(folly::fbstring* s, const QueryArgument& d) {
if (d.isString()) {
s->reserve(s->size() + d.getString().size() + 4);
s->push_back('`');
for (char c : d.getString()) {
// Toss in an extra ` if we see one.
if (c == '`') {
s->push_back('`');
}
s->push_back(c);
}
s->push_back('`');
} else if (d.isTwoTuple()) {
// If a two-tuple is provided we have a qualified column name
auto t = d.getTwoTuple();
appendColumnTableName(s, std::get<0>(t));
s->push_back('.');
appendColumnTableName(s, std::get<1>(t));
} else if (d.isThreeTuple()) {
// If a three-tuple is provided we have a qualified column name
// with an alias. This is helpful for constructing JOIN queries.
auto t = d.getThreeTuple();
appendColumnTableName(s, std::get<0>(t));
s->push_back('.');
appendColumnTableName(s, std::get<1>(t));
s->append(" AS ");
appendColumnTableName(s, std::get<2>(t));
} else {
s->append(d.asString());
}
}