Skip to content

Commit e05f1ab

Browse files
committed
feat(vnext): recognize bounded relation query sites
1 parent ef47c7f commit e05f1ab

4 files changed

Lines changed: 1739 additions & 0 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"test:worker-placement": "node ./scripts/worker-placement.mjs",
2828
"test:integrity": "node ./scripts/check-test-integrity.mjs",
2929
"bench:parser-adapter": "vitest bench --run src/vnext/__tests__/node-sql-parser-adapter.bench.ts",
30+
"bench:query-site": "vitest bench --run src/vnext/__tests__/query-site.bench.ts",
3031
"bench:statement-index": "vitest bench --run src/vnext/__tests__/statement-index.bench.ts",
3132
"test:package": "node ./scripts/clean.mjs && tsc && node ./scripts/package-smoke.mjs",
3233
"demo": "vite build",
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { bench, describe } from "vitest";
2+
import {
3+
recognizeSqlRelationQuerySite,
4+
type SqlQuerySiteDialect,
5+
} from "../query-site.js";
6+
import { createIdentitySqlSource } from "../source.js";
7+
import {
8+
buildSqlStatementIndex,
9+
DUCKDB_SQL_LEXICAL_PROFILE,
10+
findSqlStatementSlot,
11+
} from "../statement-index.js";
12+
13+
const dialect: SqlQuerySiteDialect = {
14+
decodeRelationPath: (rawPath, cursorOffset) => ({
15+
finalSegment: { from: 0, to: rawPath.length },
16+
prefix: {
17+
quoted: false,
18+
value: rawPath.slice(0, cursorOffset),
19+
},
20+
qualifier: [],
21+
quality: "exact",
22+
status: "decoded",
23+
}),
24+
lexicalProfile: DUCKDB_SQL_LEXICAL_PROFILE,
25+
};
26+
const tenKilobyteQuery = `SELECT ${Array.from(
27+
{ length: 1_100 },
28+
(_, index) => `value_${index}`,
29+
).join(", ")} FROM schema_prefix`;
30+
const source = createIdentitySqlSource(tenKilobyteQuery);
31+
const index = buildSqlStatementIndex(
32+
source.analysisText,
33+
dialect.lexicalProfile,
34+
);
35+
const position = tenKilobyteQuery.length;
36+
const slot = findSqlStatementSlot(index, position, "left");
37+
38+
describe("query-site recognizer", () => {
39+
bench("10 KiB active statement", () => {
40+
recognizeSqlRelationQuerySite(source, slot, position, dialect);
41+
});
42+
});

0 commit comments

Comments
 (0)