Skip to content

Commit cd385b0

Browse files
committed
Fix missing RDB$PACKAGE_NAME filters
1 parent b6ec76e commit cd385b0

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

src/dsql/DdlNodes.epp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)