Skip to content

Commit e57f0c8

Browse files
committed
Postfix for CORE-6412, fixed non-ascii users support
1 parent 4655b91 commit e57f0c8

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/jrd/UserManagement.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

143151
const 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

Comments
 (0)