@@ -372,15 +372,18 @@ static void checkViewDependency(thread_db* tdbb, jrd_tra* transaction,
372372 Y IN RDB$RELATION_FIELDS CROSS
373373 Z IN RDB$VIEW_RELATIONS
374374 WITH X.RDB$SCHEMA_NAME EQ relationName.schema.c_str() AND
375+ X.RDB$PACKAGE_NAME EQUIV NULLIF(relationName.package.c_str(), '') AND
375376 X.RDB$RELATION_NAME EQ relationName.object.c_str() AND
376377 X.RDB$FIELD_NAME EQ fieldName.c_str() AND
377378 X.RDB$FIELD_NAME EQ Y.RDB$BASE_FIELD AND
378379 X.RDB$FIELD_SOURCE_SCHEMA_NAME EQ Y.RDB$FIELD_SOURCE_SCHEMA_NAME AND
379380 X.RDB$FIELD_SOURCE EQ Y.RDB$FIELD_SOURCE AND
380381 Y.RDB$SCHEMA_NAME EQ Z.RDB$SCHEMA_NAME AND
382+ Y.RDB$PACKAGE_NAME MISSING AND
381383 Y.RDB$RELATION_NAME EQ Z.RDB$VIEW_NAME AND
382384 X.RDB$SCHEMA_NAME EQ Z.RDB$RELATION_SCHEMA_NAME AND
383385 X.RDB$RELATION_NAME EQ Z.RDB$RELATION_NAME AND
386+ X.RDB$PACKAGE_NAME EQUIV Z.RDB$PACKAGE_NAME AND
384387 Y.RDB$VIEW_CONTEXT EQ Z.RDB$VIEW_CONTEXT
385388 {
386389 const QualifiedName viewName(Z.RDB$VIEW_NAME, Z.RDB$SCHEMA_NAME);
@@ -588,6 +591,7 @@ static bool fieldExists(thread_db* tdbb, jrd_tra* transaction, const QualifiedNa
588591 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
589592 FLD IN RDB$RELATION_FIELDS
590593 WITH FLD.RDB$SCHEMA_NAME EQ relationName.schema.c_str() AND
594+ FLD.RDB$PACKAGE_NAME EQUIV NULLIF(relationName.package.c_str(), '') AND
591595 FLD.RDB$RELATION_NAME EQ relationName.object.c_str() AND
592596 FLD.RDB$FIELD_NAME EQ fieldName.c_str()
593597 {
@@ -776,6 +780,7 @@ static void modifyLocalFieldPosition(thread_db* tdbb, jrd_tra* transaction,
776780 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
777781 FLD IN RDB$RELATION_FIELDS
778782 WITH FLD.RDB$SCHEMA_NAME EQ relationName.schema.c_str() AND
783+ FLD.RDB$PACKAGE_NAME EQUIV NULLIF(relationName.package.c_str(), '') AND
779784 FLD.RDB$RELATION_NAME EQ relationName.object.c_str()
780785 SORTED BY ASCENDING FLD.RDB$FIELD_POSITION
781786 {
@@ -822,6 +827,7 @@ static void modifyLocalFieldPosition(thread_db* tdbb, jrd_tra* transaction,
822827 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
823828 FLD IN RDB$RELATION_FIELDS
824829 WITH FLD.RDB$SCHEMA_NAME EQ relationName.schema.c_str() AND
830+ FLD.RDB$PACKAGE_NAME EQUIV NULLIF(relationName.package.c_str(), '') AND
825831 FLD.RDB$RELATION_NAME EQ relationName.object.c_str() AND
826832 FLD.RDB$FIELD_POSITION >= MIN(newPosition, existingPosition) AND
827833 FLD.RDB$FIELD_POSITION <= MAX(newPosition, existingPosition)
@@ -7149,6 +7155,7 @@ bool RelationNode::deleteLocalField(thread_db* tdbb, jrd_tra* transaction,
71497155 RFR IN RDB$RELATION_FIELDS
71507156 WITH RFR.RDB$FIELD_NAME EQ fieldName.c_str() AND
71517157 RFR.RDB$SCHEMA_NAME EQ relationName.schema.c_str() AND
7158+ RFR.RDB$PACKAGE_NAME EQUIV NULLIF(relationName.package.c_str(), '') AND
71527159 RFR.RDB$RELATION_NAME EQ relationName.object.c_str()
71537160 {
71547161 executePreChangeHandler();
@@ -9949,6 +9956,7 @@ void AlterRelationNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratc
99499956 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
99509957 RFL IN RDB$RELATION_FIELDS
99519958 WITH RFL.RDB$SCHEMA_NAME = relation->rel_name.schema.c_str() AND
9959+ RFL.RDB$PACKAGE_NAME EQUIV NULLIF(relation->rel_name.package.c_str(), '') AND
99529960 RFL.RDB$RELATION_NAME = relation->rel_name.object.c_str() AND
99539961 RFL.RDB$FIELD_NAME = addColumnClause->field->fld_name.c_str()
99549962 {
@@ -9985,6 +9993,7 @@ void AlterRelationNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratc
99859993 RFL IN RDB$RELATION_FIELDS
99869994 WITH RFL.RDB$FIELD_NAME EQ clause->fromName.c_str() AND
99879995 RFL.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
9996+ RFL.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
99889997 RFL.RDB$RELATION_NAME EQ name.object.c_str()
99899998 {
99909999 found = true;
@@ -10050,6 +10059,7 @@ void AlterRelationNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratc
1005010059 RFL IN RDB$RELATION_FIELDS
1005110060 WITH RFL.RDB$FIELD_NAME EQ clause->name.c_str() AND
1005210061 RFL.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
10062+ RFL.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1005310063 RFL.RDB$RELATION_NAME EQ name.object.c_str()
1005410064 {
1005510065 found = true;
@@ -10203,6 +10213,7 @@ void AlterRelationNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScratc
1020310213 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
1020410214 REL IN RDB$RELATIONS
1020510215 WITH REL.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
10216+ REL.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1020610217 REL.RDB$RELATION_NAME EQ name.object.c_str()
1020710218 {
1020810219 MODIFY REL
@@ -10392,9 +10403,11 @@ void AlterRelationNode::modifyField(thread_db* tdbb, DsqlCompilerScratch* dsqlSc
1039210403 REL IN RDB$RELATIONS CROSS
1039310404 FLD IN RDB$FIELDS
1039410405 WITH RFR.RDB$SCHEMA_NAME = name.schema.c_str() AND
10406+ RFR.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1039510407 RFR.RDB$RELATION_NAME = name.object.c_str() AND
1039610408 RFR.RDB$FIELD_NAME = field->fld_name.c_str() AND
1039710409 REL.RDB$SCHEMA_NAME = RFR.RDB$SCHEMA_NAME AND
10410+ REL.RDB$PACKAGE_NAME EQUIV RFR.RDB$PACKAGE_NAME AND
1039810411 REL.RDB$RELATION_NAME = RFR.RDB$RELATION_NAME AND
1039910412 FLD.RDB$SCHEMA_NAME = RFR.RDB$FIELD_SOURCE_SCHEMA_NAME AND
1040010413 FLD.RDB$FIELD_NAME = RFR.RDB$FIELD_SOURCE
@@ -12051,6 +12064,7 @@ void CreateAlterViewNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScra
1205112064 FLD IN RDB$FIELDS
1205212065 WITH RFL.RDB$FIELD_NAME EQ fieldStr AND
1205312066 RFL.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
12067+ RFL.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1205412068 RFL.RDB$RELATION_NAME EQ name.object.c_str() AND
1205512069 RFL.RDB$BASE_FIELD MISSING AND
1205612070 FLD.RDB$SCHEMA_NAME EQ RFL.RDB$FIELD_SOURCE_SCHEMA_NAME AND
@@ -12114,6 +12128,7 @@ void CreateAlterViewNode::execute(thread_db* tdbb, DsqlCompilerScratch* dsqlScra
1211412128 FLD IN RDB$FIELDS
1211512129 WITH RFL.RDB$FIELD_NAME EQ fieldStr AND
1211612130 RFL.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
12131+ RFL.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1211712132 RFL.RDB$RELATION_NAME EQ name.object.c_str() AND
1211812133 RFL.RDB$BASE_FIELD MISSING AND
1211912134 FLD.RDB$SCHEMA_NAME EQ RFL.RDB$FIELD_SOURCE_SCHEMA_NAME AND
@@ -12529,11 +12544,13 @@ Cached::Relation* ModifyIndexNode::getRelByIndex(thread_db* tdbb, const Qualifie
1252912544 IDX IN RDB$INDICES
1253012545 WITH
1253112546 IDX.RDB$SCHEMA_NAME EQ index.schema.c_str() AND
12547+ IDX.RDB$PACKAGE_NAME EQUIV NULLIF(index.package.c_str(), '') AND
1253212548 IDX.RDB$INDEX_NAME EQ index.object.c_str()
1253312549 {
1253412550 fb_assert(!relation);
1253512551 relation = MetadataCache::getPerm<Cached::Relation>(tdbb,
12536- QualifiedName(IDX.RDB$RELATION_NAME, IDX.RDB$SCHEMA_NAME), CacheFlag::AUTOCREATE);
12552+ QualifiedName(IDX.RDB$RELATION_NAME, IDX.RDB$SCHEMA_NAME, IDX.RDB$PACKAGE_NAME),
12553+ CacheFlag::AUTOCREATE);
1253712554 }
1253812555 END_FOR
1253912556
@@ -15919,6 +15936,7 @@ static bool checkObjectExist(thread_db* tdbb, jrd_tra* transaction, const Qualif
1591915936 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
1592015937 X IN RDB$RELATIONS
1592115938 WITH X.RDB$SCHEMA_NAME EQ name.schema.c_str() AND
15939+ X.RDB$PACKAGE_NAME EQUIV NULLIF(name.package.c_str(), '') AND
1592215940 X.RDB$RELATION_NAME EQ name.object.c_str()
1592315941 {
1592415942 rc = (type != obj_view) || !X.RDB$VIEW_BLR.NULL;
@@ -15968,6 +15986,7 @@ static bool checkFieldExist(thread_db* tdbb, jrd_tra* transaction, const Qualifi
1596815986 FOR(REQUEST_HANDLE request TRANSACTION_HANDLE transaction)
1596915987 X IN RDB$RELATION_FIELDS
1597015988 WITH X.RDB$SCHEMA_NAME EQ relation.schema.c_str() AND
15989+ X.RDB$PACKAGE_NAME EQUIV NULLIF(relation.package.c_str(), '') AND
1597115990 X.RDB$RELATION_NAME EQ relation.object.c_str() AND
1597215991 X.RDB$FIELD_NAME EQ field.c_str()
1597315992 {
0 commit comments