fix(xugu): preserve invalid view status in object tree

This commit is contained in:
Elias 2026-08-07 13:44:44 +08:00 committed by GitHub
parent 96d16b173b
commit b8144da5f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 1 deletions

View File

@ -2091,7 +2091,7 @@ JOIN ALL_SCHEMAS s ON s.DB_ID = t.DB_ID AND s.SCHEMA_ID = t.SCHEMA_ID
WHERE s.DB_ID = CURRENT_DB_ID
AND UPPER(s.SCHEMA_NAME) = UPPER(?)`},
{objectTypes: []string{"VIEW"}, sql: `
SELECT v.VIEW_NAME AS OBJECT_NAME, 'VIEW' AS OBJECT_TYPE, v.COMMENTS, NULL AS VALID
SELECT v.VIEW_NAME AS OBJECT_NAME, 'VIEW' AS OBJECT_TYPE, v.COMMENTS, v.VALID
FROM ALL_VIEWS v
JOIN ALL_SCHEMAS s ON s.DB_ID = v.DB_ID AND s.SCHEMA_ID = v.SCHEMA_ID
WHERE s.DB_ID = CURRENT_DB_ID

View File

@ -1020,6 +1020,20 @@ func TestXuguListObjectsQueryIncludesProgrammableObjects(t *testing.T) {
assertArgs(t, query.Args, wantArgs)
}
func TestXuguListObjectsQueryPreservesViewValidity(t *testing.T) {
query := xuguListObjectsQuery("APP", metadataListConstraints{ObjectTypes: []string{"VIEW"}})
upper := strings.ToUpper(query.SQL)
if !strings.Contains(upper, "FROM ALL_VIEWS V") {
t.Fatalf("view lookup should query ALL_VIEWS: %s", query.SQL)
}
if !strings.Contains(upper, "V.VALID") {
t.Fatalf("view lookup must preserve the catalog validity flag: %s", query.SQL)
}
if strings.Contains(upper, "NULL AS VALID") {
t.Fatalf("view lookup must not discard the catalog validity flag: %s", query.SQL)
}
}
func TestXuguListObjectsQueryKeepsPublicSynonymsOutOfSchemaGroups(t *testing.T) {
query := xuguListObjectsQuery("SYSDBA", metadataListConstraints{ObjectTypes: []string{"SYNONYM"}})
for _, want := range []string{"FROM ALL_SYNONYMS y", "y.IS_PUBLIC = FALSE", "OBJECT_TYPE IN (?)"} {