From b06e8f55f9f1c79654db8990805ee774736dfaec Mon Sep 17 00:00:00 2001 From: Brett Saviano Date: Mon, 20 Jul 2026 07:44:24 -0400 Subject: [PATCH] Improve performance of server-side project query --- src/utils/FileProviderUtil.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/utils/FileProviderUtil.ts b/src/utils/FileProviderUtil.ts index 099a0eb8..451c6e2a 100644 --- a/src/utils/FileProviderUtil.ts +++ b/src/utils/FileProviderUtil.ts @@ -125,13 +125,10 @@ export async function projectContentsFromUri(uri: vscode.Uri, flat = false): Pro query = `SELECT DISTINCT BY (${nameCol}) ${nameCol} ` + "Name, Type FROM %Studio.Project_ProjectItemsList(?,1) AS pil WHERE " + - "(Type = 'MAC' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.mac,*.int,*.inc,*.bas,*.mvi',1,1,1,1,0,1) AS sod WHERE pil.Name = sod.Name)) OR " + - "(Type = 'CSP' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.cspall',1,1,1,1,0,1) AS sod WHERE '/'||pil.Name = sod.Name)) OR " + - "(Type NOT IN ('CLS','PKG','MAC','CSP','DIR','GBL') AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.other',1,1,1,1,0,1) AS sod WHERE " + - "$PIECE(sod.Name,'.',1,$LENGTH(sod.Name,'.')-1) = $PIECE(pil.Name,'.',1,$LENGTH(pil.Name,'.')-1) AND UPPER($PIECE(sod.Name,'.',$LENGTH(sod.Name,'.'))) = $PIECE(pil.Name,'.',$LENGTH(pil.Name,'.')))) OR " + + "(Type NOT IN ('CLS','PKG','DIR','GBL') AND EXISTS (SELECT Size FROM %Library.RoutineMgr_StudioOpenDialog(pil.Name,1,1,1,1,0,1))) OR " + "(Type = 'CLS' AND EXISTS (SELECT dcd.ID FROM %Dictionary.ClassDefinition AS dcd WHERE dcd.ID = pil.Name)) OR " + - "(Type = 'PKG' AND EXISTS (SELECT dcd.ID FROM %Dictionary.ClassDefinition AS dcd WHERE dcd.ID %STARTSWITH pil.Name||'.')) OR " + - "(Type = 'DIR' AND EXISTS (SELECT sod.Size FROM %Library.RoutineMgr_StudioOpenDialog('*.cspall',1,1,1,0,0,1) AS sod WHERE pil.Name %STARTSWITH sod.Name||'/' OR pil.Name = sod.Name))"; + "(Type = 'PKG' AND EXISTS (SELECT TOP 1 dcd.ID FROM %Dictionary.ClassDefinition AS dcd WHERE dcd.ID %STARTSWITH pil.Name||'.')) OR " + + "(Type = 'DIR' AND EXISTS (SELECT TOP 1 Size FROM %Library.RoutineMgr_StudioOpenDialog('*.cspall',1,1,1,0,0,1,'Name %STARTSWITH '''||pil.Name||'/''')))"; parameters = [project]; } }