@@ -138,6 +138,14 @@ namespace
138138 string value;
139139 bool present;
140140 };
141+
142+ class ChangeCharset : public AutoSetRestore <SSHORT>
143+ {
144+ public:
145+ ChangeCharset (Attachment* att)
146+ : AutoSetRestore(&att->att_charset, CS_NONE)
147+ { }
148+ };
141149} // anonymous namespace
142150
143151const Format* UsersTableScan::getFormat (thread_db* tdbb, jrd_rel* relation) const
@@ -183,6 +191,7 @@ IManagement* UserManagement::registerManager(Auth::Get& getPlugin, const char* p
183191 CheckStatusWrapper statusWrapper (&status);
184192
185193 UserIdInfo idInfo (att, tra);
194+ ChangeCharset cc (att);
186195 manager->start (&statusWrapper, &idInfo);
187196 if (status.getState () & IStatus::STATE_ERRORS)
188197 {
@@ -271,6 +280,7 @@ UserManagement::~UserManagement()
271280 LocalStatus status;
272281 CheckStatusWrapper statusWrapper (&status);
273282
283+ ChangeCharset cc (att);
274284 manager->rollback (&statusWrapper);
275285 PluginManagerInterfacePtr ()->releasePlugin (manager);
276286 managers[i].second = NULL ;
@@ -293,6 +303,7 @@ void UserManagement::commit()
293303 LocalStatus status;
294304 CheckStatusWrapper statusWrapper (&status);
295305
306+ ChangeCharset cc (att);
296307 manager->commit (&statusWrapper);
297308 if (status.getState () & IStatus::STATE_ERRORS)
298309 status_exception::raise (&statusWrapper);
@@ -363,6 +374,7 @@ void UserManagement::execute(USHORT id)
363374
364375 LocalStatus status;
365376 CheckStatusWrapper statusWrapper (&status);
377+ ChangeCharset cc (att);
366378
367379 if (command->attr .entered () || command->op == Auth::ADDMOD_OPER)
368380 {
0 commit comments