MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / executeSqlV2

Function executeSqlV2

console/src/api/materialize/executeSqlV2.ts:225–296  ·  view source on GitHub ↗
(request: {
  queries: Q;
  queryKey: QueryKey;
  requestOptions?: RequestInit;
  sessionVariables?: SessionVariables;
  requestTimeoutMs?: number;
  /** Overrides the currently configured environment, only used in test */
  httpAddress?: string;
})

Source from the content-addressed store, hash-verified

223 * https://github.com/MaterializeInc/console/issues/1176
224 */
225export async function executeSqlV2<
226 Q extends CompiledQuery | CompiledQueryList,
227>(request: {
228 queries: Q;
229 queryKey: QueryKey;
230 requestOptions?: RequestInit;
231 sessionVariables?: SessionVariables;
232 requestTimeoutMs?: number;
233 /** Overrides the currently configured environment, only used in test */
234 httpAddress?: string;
235}): Promise<ExecuteSqlReturnType<Q>> {
236 const sqlRequest = buildExtendedSqlRequest(request.queries);
237 const httpAddress = await getHttpAddress(request);
238 const url = buildExecuteSqlUrl(httpAddress);
239
240 url.searchParams.append(
241 "options",
242 JSON.stringify(buildSessionVariables(request.sessionVariables)),
243 );
244
245 // TODO: Put query_key in a custom header rather than a search param
246 url.searchParams.append("query_key", hashKey(request.queryKey));
247
248 const {
249 headers: headersOverride,
250 signal,
251 ...restRequestOptions
252 } = request.requestOptions ?? {};
253
254 const signals = [
255 AbortSignal.timeout(request.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT),
256 ];
257 if (signal) {
258 signals.push(signal);
259 }
260
261 const response = await apiClient.mzApiFetch(url.toString(), {
262 method: "POST",
263 headers: {
264 "Content-Type": "application/json",
265 ...headersOverride,
266 },
267 body: JSON.stringify(sqlRequest),
268 signal: anySignal(signals),
269 ...restRequestOptions,
270 });
271
272 const responseText = await response.text();
273
274 const isFetchFailure = !response.ok;
275
276 if (isFetchFailure) {
277 if (response.status === 401) {
278 // Should never happen
279 throw new Error(UNAUTHORIZED_ERROR, {
280 cause: { status: response.status },
281 });
282 }

Callers 15

executeSqlHttpFunction · 0.90
fetchCurrentUserFunction · 0.90
fetchDatabaseListFunction · 0.90
fetchWorkflowGraphFunction · 0.90
fetchIsOwnerFunction · 0.90
cancelQueryFunction · 0.90
fetchWorkflowGraphNodesFunction · 0.90
fetchConnectionsFunction · 0.90
fetchMaxMySqlConnectionsFunction · 0.90
fetchLagHistoryFunction · 0.90

Calls 10

buildExecuteSqlUrlFunction · 0.90
buildSessionVariablesFunction · 0.90
anySignalFunction · 0.90
buildExtendedSqlRequestFunction · 0.85
getHttpAddressFunction · 0.85
mapToTypedSqlResultsFunction · 0.85
timeoutMethod · 0.80
appendMethod · 0.45
pushMethod · 0.45
parseMethod · 0.45

Tested by

no test coverage detected