@@ -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