Skip to content

Commit

Permalink
test: run query engine tests with query compiler
Browse files Browse the repository at this point in the history
  • Loading branch information
aqrln committed Feb 5, 2025
1 parent ffebe63 commit c462b32
Show file tree
Hide file tree
Showing 20 changed files with 625 additions and 50 deletions.
3 changes: 3 additions & 0 deletions .prettierrc.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
tabWidth = 2
semi = false
singleQuote = true
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,11 @@ dev-pg-wasm: start-pg-js build-qe-wasm build-driver-adapters-kit

test-pg-wasm: dev-pg-wasm test-qe-st

dev-pg-qc: start-pg-js build-qc-wasm build-driver-adapters-kit
cp $(CONFIG_PATH)/pg-qc $(CONFIG_FILE)

test-pg-qc: dev-pg-qc test-qe-st

test-driver-adapter-pg: test-pg-js
test-driver-adapter-pg-wasm: test-pg-wasm

Expand Down
4 changes: 3 additions & 1 deletion libs/driver-adapters/executor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
"description": "",
"private": true,
"scripts": {
"build": "tsup ./src/testd-qe.ts ./src/demo-se.ts ./src/bench.ts --format esm --dts",
"build": "tsup ./src/testd-qe.ts ./src/testd-qc.ts ./src/demo-se.ts ./src/bench.ts --format esm --dts",
"test:qe": "node --import tsx ./src/testd-qe.ts",
"test:qc": "node --import tsx ./src/testd-qc.ts",
"demo:se": "node --import tsx ./src/demo-se.ts",
"demo:qc": "node --import tsx ./src/demo-qc.ts",
"clean:d1": "rm -rf ../../connector-test-kit-rs/query-engine-tests/.wrangler"
Expand All @@ -27,6 +28,7 @@
"@prisma/adapter-pg": "workspace:*",
"@prisma/adapter-planetscale": "workspace:*",
"@prisma/bundled-js-drivers": "workspace:*",
"@prisma/client-engine-runtime": "workspace:*",
"@prisma/driver-adapter-utils": "workspace:*",
"mitata": "0.1.11",
"query-engine-wasm-baseline": "npm:@prisma/[email protected]",
Expand Down
2 changes: 2 additions & 0 deletions libs/driver-adapters/executor/script/testd-qc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env bash
node "$(dirname "${BASH_SOURCE[0]}")/../dist/testd-qc.js"
2 changes: 1 addition & 1 deletion libs/driver-adapters/executor/src/demo-qc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ async function initQC({

const compiler = await qc.initQueryCompiler({
datamodel: schema,
flavour: adapter.provider,
provider: adapter.provider,
connectionInfo,
});

Expand Down
13 changes: 13 additions & 0 deletions libs/driver-adapters/executor/src/panic.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
type GlobalWithPanicHandler = typeof globalThis & {
PRISMA_WASM_PANIC_REGISTRY: {
set_message: (message: string) => void
}
}

export function setupPanicHandler() {
;(globalThis as GlobalWithPanicHandler).PRISMA_WASM_PANIC_REGISTRY = {
set_message(message: string) {
throw new Error('Panic in WASM module: ' + message)
},
}
}
24 changes: 12 additions & 12 deletions libs/driver-adapters/executor/src/query-compiler.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
import { ConnectionInfo } from "@prisma/driver-adapter-utils";
import { __dirname } from "./utils";
import { ConnectionInfo } from '@prisma/driver-adapter-utils'
import { __dirname } from './utils'

export type QueryCompilerParams = {
// TODO: support multiple datamodels
datamodel: string;
flavour: 'postgres' | 'mysql' | 'sqlite';
connectionInfo: ConnectionInfo;
};
datamodel: string
provider: 'postgres' | 'mysql' | 'sqlite'
connectionInfo: ConnectionInfo
}

export interface QueryCompiler {
new (params: QueryCompilerParams): QueryCompiler;
compile(query: string): Promise<string>;
new (params: QueryCompilerParams): QueryCompiler
compile(query: string): string
}

export async function initQueryCompiler(
params: QueryCompilerParams,
): Promise<QueryCompiler> {
const { getQueryCompilerForProvider } = await import("./query-compiler-wasm");
const { getQueryCompilerForProvider } = await import('./query-compiler-wasm')
const WasmQueryCompiler = (await getQueryCompilerForProvider(
params.flavour,
)) as QueryCompiler;
return new WasmQueryCompiler(params);
params.provider,
)) as QueryCompiler
return new WasmQueryCompiler(params)
}
Loading

0 comments on commit c462b32

Please sign in to comment.