@@ -10,7 +10,7 @@ import Table from "../../database/table";
10
10
import Document from "../sql/document" ;
11
11
import * as LanguageStatement from "../sql/statement" ;
12
12
import { CTEReference , CallableReference , ClauseType , ObjectRef , StatementType } from "../sql/types" ;
13
- import CompletionItemCache , { changedCache } from "./completionItemCache" ;
13
+ import CompletionItemCache , { changedCache , toKey } from "./completionItemCache" ;
14
14
import Callable , { CallableType } from "../../database/callable" ;
15
15
import { ServerComponent } from "../../connection/serverComponent" ;
16
16
import { prepareParamType , createCompletionItem , getParmAttributes , completionItemCache } from "./completion" ;
@@ -91,10 +91,12 @@ async function getObjectColumns(
91
91
isUDTF = false
92
92
) : Promise < CompletionItem [ ] > {
93
93
94
- const databaseObj = ( schema + name ) . toUpperCase ( ) ;
95
- const tableUpdate : boolean = changedCache . delete ( databaseObj ) ;
94
+ const cacheKey = toKey ( `columns` , schema + name )
95
+ const tableUpdate : boolean = changedCache . delete ( cacheKey ) ;
96
+ const cached = completionItemCache . get ( cacheKey ) ;
97
+ const isCached = completionItemCache . has ( cacheKey ) ;
96
98
97
- if ( ! completionItemCache . has ( databaseObj ) || tableUpdate ) {
99
+ if ( cached === undefined || tableUpdate ) {
98
100
schema = Statement . noQuotes ( Statement . delimName ( schema , true ) ) ;
99
101
name = Statement . noQuotes ( Statement . delimName ( name , true ) ) ;
100
102
@@ -104,7 +106,8 @@ async function getObjectColumns(
104
106
const resultSet = await Callable . getResultColumns ( schema , name , true ) ;
105
107
106
108
if ( ! resultSet ?. length ? true : false ) {
107
- completionItemCache . set ( databaseObj , [ ] ) ;
109
+ console . log ( `Set: ${ cacheKey } , length: ${ resultSet . length } ` ) ;
110
+ completionItemCache . set ( cacheKey , [ ] ) ;
108
111
return [ ] ;
109
112
}
110
113
@@ -122,7 +125,8 @@ async function getObjectColumns(
122
125
const columns = await Table . getItems ( schema , name ) ;
123
126
124
127
if ( ! columns ?. length ? true : false ) {
125
- completionItemCache . set ( databaseObj , [ ] ) ;
128
+ console . log ( `Set: ${ cacheKey } , length: ${ columns . length } ` ) ;
129
+ completionItemCache . set ( cacheKey , [ ] ) ;
126
130
return [ ] ;
127
131
}
128
132
@@ -139,9 +143,10 @@ async function getObjectColumns(
139
143
140
144
const allCols = getAllColumns ( name , schema , completionItems ) ;
141
145
completionItems . push ( allCols ) ;
142
- completionItemCache . set ( databaseObj , completionItems ) ;
146
+ console . log ( `Set: ${ cacheKey } , length: ${ completionItems . length } ` ) ;
147
+ completionItemCache . set ( cacheKey , completionItems ) ;
143
148
}
144
- return completionItemCache . get ( databaseObj ) ;
149
+ return completionItemCache . get ( cacheKey ) ;
145
150
}
146
151
147
152
/**
@@ -172,6 +177,8 @@ async function getObjectCompletions(
172
177
. filter ( ( result ) => result . status == "fulfilled" )
173
178
. map ( ( result ) => ( result as PromiseFulfilledResult < any > ) . value )
174
179
. flat ( ) ;
180
+
181
+ console . log ( `Set: ${ forSchema } , length: ${ list . length } ` ) ;
175
182
completionItemCache . set ( forSchema , list ) ;
176
183
}
177
184
return completionItemCache . get ( forSchema ) ;
0 commit comments