@@ -313,6 +313,10 @@ void SCL_check_database(thread_db* tdbb, SecurityClass::flags_t mask)
313313 SET_TDBB(tdbb);
314314
315315 Jrd::Attachment* const attachment = tdbb->getAttachment();
316+
317+ if (!attachment->att_security_class)
318+ attachment->att_security_class = SCL_get_class(tdbb, DATABASE_CLASS);
319+
316320 const SecurityClass* const att_class = attachment->att_security_class;
317321 if (att_class && (att_class->scl_flags & mask))
318322 return;
@@ -1152,7 +1156,16 @@ void UserId::sclInit(thread_db* tdbb, bool create)
11521156 user->usr_init_role = role_name;
11531157 attachment->att_user = user;
11541158
1155- if (!create)
1159+ if (create)
1160+ {
1161+ dbb->dbb_owner = user->getUserName();
1162+ user->usr_privileges.load(INI_owner_privileges().c_str());
1163+ user->usr_granted_roles.clear();
1164+ user->usr_granted_roles.add(ADMIN_ROLE);
1165+
1166+ user->usr_flags &= ~USR_newrole;
1167+ }
1168+ else
11561169 {
11571170 AutoCacheRequest request(tdbb, irq_get_att_class, IRQ_REQUESTS);
11581171
@@ -1170,23 +1183,14 @@ void UserId::sclInit(thread_db* tdbb, bool create)
11701183 FOR(REQUEST_HANDLE request2)
11711184 FIRST 1 REL IN RDB$RELATIONS
11721185 WITH REL.RDB$SCHEMA_NAME EQ SYSTEM_SCHEMA AND
1173- REL.RDB$RELATION_NAME EQ "RDB$DATABASE"
1186+ REL.RDB$RELATION_NAME EQ "RDB$DATABASE"
11741187 {
1175- if (!REL.RDB$OWNER_NAME.NULL)
1188+ if (!REL.RDB$OWNER_NAME.NULL)
11761189 dbb->dbb_owner = REL.RDB$OWNER_NAME;
11771190 }
11781191 END_FOR
11791192 }
11801193 }
1181- else
1182- {
1183- dbb->dbb_owner = user->getUserName();
1184- user->usr_privileges.load(INI_owner_privileges().c_str());
1185- user->usr_granted_roles.clear();
1186- user->usr_granted_roles.add("RDB$ADMIN");
1187-
1188- user->usr_flags &= ~USR_newrole;
1189- }
11901194}
11911195
11921196
0 commit comments