Skip to content

Commit c043393

Browse files
committed
Code deduplication
1 parent 60d0a76 commit c043393

File tree

1 file changed

+5
-32
lines changed

1 file changed

+5
-32
lines changed

src/Client/BuzzHouse/Generator/StatementGenerator.cpp

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4124,45 +4124,18 @@ void StatementGenerator::updateGenerator(const SQLQuery & sq, ExternalIntegratio
41244124
}
41254125
}
41264126
}
4127-
else if (sq.has_explain() && !sq.explain().is_explain() && query.has_attach() && success)
4127+
else if (sq.has_explain() && !sq.explain().is_explain() && (query.has_attach() || query.has_detach()) && success)
41284128
{
4129-
const Attach & att = query.attach();
4130-
const SQLObjectName & oobj = att.object();
4129+
const SQLObjectName & oobj = query.has_attach() ? query.attach().object() : query.detach().object();
41314130
const bool istable = oobj.has_est() && oobj.est().table().table()[0] == 't';
41324131
const bool isview = oobj.has_est() && oobj.est().table().table()[0] == 'v';
41334132
const bool isdictionary = oobj.has_est() && oobj.est().table().table()[0] == 'd';
41344133
const bool isdatabase = oobj.has_database();
41354134
const uint32_t tname
41364135
= static_cast<uint32_t>(std::stoul(isdatabase ? oobj.database().database().substr(1) : oobj.est().table().table().substr(1)));
4137-
4138-
if (istable)
4139-
{
4140-
this->attachOrDetachObject<SQLTable>(tname, DetachStatus::ATTACHED);
4141-
}
4142-
else if (isview)
4143-
{
4144-
this->attachOrDetachObject<SQLView>(tname, DetachStatus::ATTACHED);
4145-
}
4146-
else if (isdictionary)
4147-
{
4148-
this->attachOrDetachObject<SQLDictionary>(tname, DetachStatus::ATTACHED);
4149-
}
4150-
else if (isdatabase)
4151-
{
4152-
this->attachOrDetachObject<std::shared_ptr<SQLDatabase>>(tname, DetachStatus::ATTACHED);
4153-
}
4154-
}
4155-
else if (sq.has_explain() && !sq.explain().is_explain() && query.has_detach() && success)
4156-
{
4157-
const Detach & det = query.detach();
4158-
const SQLObjectName & oobj = det.object();
4159-
const bool istable = oobj.has_est() && oobj.est().table().table()[0] == 't';
4160-
const bool isview = oobj.has_est() && oobj.est().table().table()[0] == 'v';
4161-
const bool isdictionary = oobj.has_est() && oobj.est().table().table()[0] == 'd';
4162-
const bool isdatabase = oobj.has_database();
4163-
const uint32_t tname
4164-
= static_cast<uint32_t>(std::stoul(isdatabase ? oobj.database().database().substr(1) : oobj.est().table().table().substr(1)));
4165-
const DetachStatus status = det.permanently() ? DetachStatus::PERM_DETACHED : DetachStatus::DETACHED;
4136+
const DetachStatus status = query.has_attach()
4137+
? DetachStatus::ATTACHED
4138+
: (query.detach().permanently() ? DetachStatus::PERM_DETACHED : DetachStatus::DETACHED);
41664139

41674140
if (istable)
41684141
{

0 commit comments

Comments
 (0)