8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 04:03:04 +01:00

Protect system domains.

This commit is contained in:
robocop 2014-04-06 01:16:30 +00:00
parent add68e374f
commit 4fac925a2e

View File

@ -3716,7 +3716,9 @@ void CreateDomainNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch
Attachment* const attachment = transaction->tra_attachment;
dsql_fld* type = nameType->type;
if (fb_utils::implicit_domain(nameType->name.c_str()))
// The commented line should be restored when implicit domains get their own sys flag.
//if (fb_utils::implicit_domain(nameType->name.c_str()))
if (strncmp(nameType->name.c_str(), IMPLICIT_DOMAIN_PREFIX, IMPLICIT_DOMAIN_PREFIX_LEN) == 0)
{
status_exception::raise(
Arg::Gds(isc_sqlerr) << Arg::Num(-637) <<
@ -4245,6 +4247,12 @@ void AlterDomainNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
DDL_TRIGGER_ALTER_DOMAIN, name);
if (!FLD.RDB$SYSTEM_FLAG.NULL && FLD.RDB$SYSTEM_FLAG == fb_sysflag_system)
{
status_exception::raise(Arg::Gds(isc_dyn_cant_modify_sysobj) <<
"domain" << Arg::Str(name));
}
MODIFY FLD
if (dropConstraint)
{