@@ -140,6 +140,14 @@ namespace
140140 string value;
141141 bool present;
142142 };
143+
144+ class ChangeCharset : public AutoSetRestore <SSHORT>
145+ {
146+ public:
147+ ChangeCharset (Attachment* att)
148+ : AutoSetRestore(&att->att_charset, CS_NONE)
149+ { }
150+ };
143151} // anonymous namespace
144152
145153const Format* UsersTableScan::getFormat (thread_db* tdbb, jrd_rel* relation) const
@@ -185,6 +193,7 @@ IManagement* UserManagement::registerManager(Auth::Get& getPlugin, const char* p
185193 CheckStatusWrapper statusWrapper (&status);
186194
187195 UserIdInfo idInfo (att, tra);
196+ ChangeCharset cc (att);
188197 manager->start (&statusWrapper, &idInfo);
189198 if (status.getState () & IStatus::STATE_ERRORS)
190199 {
@@ -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