Skip to content

Commit c04fc38

Browse files
committed
Fix #8623 - Regression: "no alias or table named "<T>" at this scope level".
1 parent 48b38a0 commit c04fc38

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/dsql/metd.epp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1566,8 +1566,22 @@ bool METD_get_view_relation(jrd_tra* transaction, DsqlCompilerScratch* dsqlScrat
15661566
{
15671567
QualifiedName relationName(X.RDB$RELATION_NAME, X.RDB$RELATION_SCHEMA_NAME);
15681568

1569+
ObjectsArray<QualifiedMetaString> contextName;
1570+
try
1571+
{
1572+
QualifiedMetaString::parseSchemaObjectListNoSep(X.RDB$CONTEXT_NAME, contextName);
1573+
}
1574+
catch (const status_exception&)
1575+
{
1576+
// Legacy (restored from backups) data stored in RDB$CONTEXT_NAME may cause exceptions.
1577+
contextName.clear();
1578+
contextName.push(QualifiedMetaString(X.RDB$CONTEXT_NAME));
1579+
}
1580+
15691581
if (PASS1_compare_alias(relationName, relation_or_alias) ||
1570-
(relation_or_alias.schema.isEmpty() && relation_or_alias.object == X.RDB$CONTEXT_NAME))
1582+
(relation_or_alias.schema.isEmpty() &&
1583+
contextName.getCount() == 1 &&
1584+
PASS1_compare_alias(contextName[0], relation_or_alias)))
15711585
{
15721586
if ((relation = METD_get_relation(transaction, dsqlScratch, relationName)))
15731587
return true;

0 commit comments

Comments
 (0)