@@ -733,68 +733,6 @@ async function activateWithInstalledDistribution(
733733 void extLogger . log ( "Initializing source archive filesystem provider." ) ;
734734 archiveFilesystemProvider_activate ( ctx ) ;
735735
736- async function compileAndRunQuery (
737- quickEval : boolean ,
738- selectedQuery : Uri | undefined ,
739- progress : ProgressCallback ,
740- token : CancellationToken ,
741- databaseItem : DatabaseItem | undefined ,
742- range ?: Range ,
743- ) : Promise < void > {
744- if ( qs !== undefined ) {
745- // If no databaseItem is specified, use the database currently selected in the Databases UI
746- databaseItem =
747- databaseItem || ( await databaseUI . getDatabaseItem ( progress , token ) ) ;
748- if ( databaseItem === undefined ) {
749- throw new Error ( "Can't run query without a selected database" ) ;
750- }
751- const databaseInfo = {
752- name : databaseItem . name ,
753- databaseUri : databaseItem . databaseUri . toString ( ) ,
754- } ;
755-
756- // handle cancellation from the history view.
757- const source = new CancellationTokenSource ( ) ;
758- token . onCancellationRequested ( ( ) => source . cancel ( ) ) ;
759-
760- const initialInfo = await createInitialQueryInfo (
761- selectedQuery ,
762- databaseInfo ,
763- quickEval ,
764- range ,
765- ) ;
766- const item = new LocalQueryInfo ( initialInfo , source ) ;
767- qhm . addQuery ( item ) ;
768- try {
769- const completedQueryInfo = await qs . compileAndRunQueryAgainstDatabase (
770- databaseItem ,
771- initialInfo ,
772- queryStorageDir ,
773- progress ,
774- source . token ,
775- undefined ,
776- item ,
777- ) ;
778- qhm . completeQuery ( item , completedQueryInfo ) ;
779- await showResultsForCompletedQuery (
780- localQueryResultsView ,
781- item as CompletedLocalQueryInfo ,
782- WebviewReveal . Forced ,
783- ) ;
784- // Note we must update the query history view after showing results as the
785- // display and sorting might depend on the number of results
786- } catch ( e ) {
787- const err = asError ( e ) ;
788- err . message = `Error running query: ${ err . message } ` ;
789- item . failureReason = err . message ;
790- throw e ;
791- } finally {
792- await qhm . refreshTreeView ( ) ;
793- source . dispose ( ) ;
794- }
795- }
796- }
797-
798736 async function compileAndRunQueryOnMultipleDatabases (
799737 progress : ProgressCallback ,
800738 token : CancellationToken ,
@@ -839,6 +777,11 @@ async function activateWithInstalledDistribution(
839777 for ( const item of quickpick ) {
840778 try {
841779 await compileAndRunQuery (
780+ qs ,
781+ qhm ,
782+ databaseUI ,
783+ localQueryResultsView ,
784+ queryStorageDir ,
842785 false ,
843786 uri ,
844787 progress ,
@@ -954,7 +897,19 @@ async function activateWithInstalledDistribution(
954897 progress : ProgressCallback ,
955898 token : CancellationToken ,
956899 uri : Uri | undefined ,
957- ) => await compileAndRunQuery ( false , uri , progress , token , undefined ) ,
900+ ) =>
901+ await compileAndRunQuery (
902+ qs ,
903+ qhm ,
904+ databaseUI ,
905+ localQueryResultsView ,
906+ queryStorageDir ,
907+ false ,
908+ uri ,
909+ progress ,
910+ token ,
911+ undefined ,
912+ ) ,
958913 {
959914 title : "Running query" ,
960915 cancellable : true ,
@@ -973,7 +928,19 @@ async function activateWithInstalledDistribution(
973928 progress : ProgressCallback ,
974929 token : CancellationToken ,
975930 uri : Uri | undefined ,
976- ) => await compileAndRunQuery ( false , uri , progress , token , undefined ) ,
931+ ) =>
932+ await compileAndRunQuery (
933+ qs ,
934+ qhm ,
935+ databaseUI ,
936+ localQueryResultsView ,
937+ queryStorageDir ,
938+ false ,
939+ uri ,
940+ progress ,
941+ token ,
942+ undefined ,
943+ ) ,
977944 {
978945 title : "Running query" ,
979946 cancellable : true ,
@@ -1068,6 +1035,11 @@ async function activateWithInstalledDistribution(
10681035 await Promise . all (
10691036 queryUris . map ( async ( uri ) =>
10701037 compileAndRunQuery (
1038+ qs ,
1039+ qhm ,
1040+ databaseUI ,
1041+ localQueryResultsView ,
1042+ queryStorageDir ,
10711043 false ,
10721044 uri ,
10731045 wrappedProgress ,
@@ -1094,7 +1066,19 @@ async function activateWithInstalledDistribution(
10941066 progress : ProgressCallback ,
10951067 token : CancellationToken ,
10961068 uri : Uri | undefined ,
1097- ) => await compileAndRunQuery ( true , uri , progress , token , undefined ) ,
1069+ ) =>
1070+ await compileAndRunQuery (
1071+ qs ,
1072+ qhm ,
1073+ databaseUI ,
1074+ localQueryResultsView ,
1075+ queryStorageDir ,
1076+ true ,
1077+ uri ,
1078+ progress ,
1079+ token ,
1080+ undefined ,
1081+ ) ,
10981082 {
10991083 title : "Running query" ,
11001084 cancellable : true ,
@@ -1112,7 +1096,19 @@ async function activateWithInstalledDistribution(
11121096 progress : ProgressCallback ,
11131097 token : CancellationToken ,
11141098 uri : Uri | undefined ,
1115- ) => await compileAndRunQuery ( true , uri , progress , token , undefined ) ,
1099+ ) =>
1100+ await compileAndRunQuery (
1101+ qs ,
1102+ qhm ,
1103+ databaseUI ,
1104+ localQueryResultsView ,
1105+ queryStorageDir ,
1106+ true ,
1107+ uri ,
1108+ progress ,
1109+ token ,
1110+ undefined ,
1111+ ) ,
11161112 {
11171113 title : "Running query" ,
11181114 cancellable : true ,
@@ -1131,7 +1127,19 @@ async function activateWithInstalledDistribution(
11311127 uri : Uri ,
11321128 range : Range ,
11331129 ) =>
1134- await compileAndRunQuery ( true , uri , progress , token , undefined , range ) ,
1130+ await compileAndRunQuery (
1131+ qs ,
1132+ qhm ,
1133+ databaseUI ,
1134+ localQueryResultsView ,
1135+ queryStorageDir ,
1136+ true ,
1137+ uri ,
1138+ progress ,
1139+ token ,
1140+ undefined ,
1141+ range ,
1142+ ) ,
11351143 {
11361144 title : "Running query" ,
11371145 cancellable : true ,
@@ -1610,7 +1618,18 @@ async function activateWithInstalledDistribution(
16101618 window . activeTextEditor ?. document ,
16111619 ) ;
16121620 if ( res ) {
1613- await compileAndRunQuery ( false , res [ 0 ] , progress , token , undefined ) ;
1621+ await compileAndRunQuery (
1622+ qs ,
1623+ qhm ,
1624+ databaseUI ,
1625+ localQueryResultsView ,
1626+ queryStorageDir ,
1627+ false ,
1628+ res [ 0 ] ,
1629+ progress ,
1630+ token ,
1631+ undefined ,
1632+ ) ;
16141633 }
16151634 } ,
16161635 {
@@ -1629,7 +1648,18 @@ async function activateWithInstalledDistribution(
16291648 window . activeTextEditor ?. document ,
16301649 ) ;
16311650 if ( res ) {
1632- await compileAndRunQuery ( false , res [ 0 ] , progress , token , undefined ) ;
1651+ await compileAndRunQuery (
1652+ qs ,
1653+ qhm ,
1654+ databaseUI ,
1655+ localQueryResultsView ,
1656+ queryStorageDir ,
1657+ false ,
1658+ res [ 0 ] ,
1659+ progress ,
1660+ token ,
1661+ undefined ,
1662+ ) ;
16331663 }
16341664 } ,
16351665 {
@@ -1648,7 +1678,18 @@ async function activateWithInstalledDistribution(
16481678 window . activeTextEditor ?. document ,
16491679 ) ;
16501680 if ( res ) {
1651- await compileAndRunQuery ( false , res [ 0 ] , progress , token , undefined ) ;
1681+ await compileAndRunQuery (
1682+ qs ,
1683+ qhm ,
1684+ databaseUI ,
1685+ localQueryResultsView ,
1686+ queryStorageDir ,
1687+ false ,
1688+ res [ 0 ] ,
1689+ progress ,
1690+ token ,
1691+ undefined ,
1692+ ) ;
16521693 }
16531694 } ,
16541695 {
@@ -1735,6 +1776,72 @@ async function showResultsForCompletedQuery(
17351776) : Promise < void > {
17361777 await localQueryResultsView . showResults ( query , forceReveal , false ) ;
17371778}
1779+ async function compileAndRunQuery (
1780+ qs : QueryRunner ,
1781+ qhm : QueryHistoryManager ,
1782+ databaseUI : DatabaseUI ,
1783+ localQueryResultsView : ResultsView ,
1784+ queryStorageDir : string ,
1785+ quickEval : boolean ,
1786+ selectedQuery : Uri | undefined ,
1787+ progress : ProgressCallback ,
1788+ token : CancellationToken ,
1789+ databaseItem : DatabaseItem | undefined ,
1790+ range ?: Range ,
1791+ ) : Promise < void > {
1792+ if ( qs !== undefined ) {
1793+ // If no databaseItem is specified, use the database currently selected in the Databases UI
1794+ databaseItem =
1795+ databaseItem || ( await databaseUI . getDatabaseItem ( progress , token ) ) ;
1796+ if ( databaseItem === undefined ) {
1797+ throw new Error ( "Can't run query without a selected database" ) ;
1798+ }
1799+ const databaseInfo = {
1800+ name : databaseItem . name ,
1801+ databaseUri : databaseItem . databaseUri . toString ( ) ,
1802+ } ;
1803+
1804+ // handle cancellation from the history view.
1805+ const source = new CancellationTokenSource ( ) ;
1806+ token . onCancellationRequested ( ( ) => source . cancel ( ) ) ;
1807+
1808+ const initialInfo = await createInitialQueryInfo (
1809+ selectedQuery ,
1810+ databaseInfo ,
1811+ quickEval ,
1812+ range ,
1813+ ) ;
1814+ const item = new LocalQueryInfo ( initialInfo , source ) ;
1815+ qhm . addQuery ( item ) ;
1816+ try {
1817+ const completedQueryInfo = await qs . compileAndRunQueryAgainstDatabase (
1818+ databaseItem ,
1819+ initialInfo ,
1820+ queryStorageDir ,
1821+ progress ,
1822+ source . token ,
1823+ undefined ,
1824+ item ,
1825+ ) ;
1826+ qhm . completeQuery ( item , completedQueryInfo ) ;
1827+ await showResultsForCompletedQuery (
1828+ localQueryResultsView ,
1829+ item as CompletedLocalQueryInfo ,
1830+ WebviewReveal . Forced ,
1831+ ) ;
1832+ // Note we must update the query history view after showing results as the
1833+ // display and sorting might depend on the number of results
1834+ } catch ( e ) {
1835+ const err = asError ( e ) ;
1836+ err . message = `Error running query: ${ err . message } ` ;
1837+ item . failureReason = err . message ;
1838+ throw e ;
1839+ } finally {
1840+ await qhm . refreshTreeView ( ) ;
1841+ source . dispose ( ) ;
1842+ }
1843+ }
1844+ }
17381845
17391846function addUnhandledRejectionListener ( ) {
17401847 const handler = ( error : unknown ) => {
0 commit comments