Skip to content

Commit 98e8418

Browse files
committed
Postfix for CORE-6412, fixed non-ascii users support
1 parent 57d43bb commit 98e8418

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

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

Comments
 (0)