@nicia-ai/typegraph 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/postgres/index.cjs +33 -33
- package/dist/backend/postgres/index.js +4 -4
- package/dist/backend/sqlite/index.cjs +14 -14
- package/dist/backend/sqlite/index.d.cts +11 -0
- package/dist/backend/sqlite/index.d.ts +11 -0
- package/dist/backend/sqlite/index.js +4 -4
- package/dist/backend/sqlite/libsql.cjs +7 -7
- package/dist/backend/sqlite/libsql.js +4 -4
- package/dist/backend/sqlite/local.cjs +26 -9
- package/dist/backend/sqlite/local.cjs.map +1 -1
- package/dist/backend/sqlite/local.js +21 -5
- package/dist/backend/sqlite/local.js.map +1 -1
- package/dist/{chunk-FQCQM3KG.cjs → chunk-3JK66E3I.cjs} +4 -2
- package/dist/chunk-3JK66E3I.cjs.map +1 -0
- package/dist/{chunk-SMMOAVJ5.js → chunk-3PPEHLGK.js} +3 -3
- package/dist/{chunk-SMMOAVJ5.js.map → chunk-3PPEHLGK.js.map} +1 -1
- package/dist/{chunk-UQVBVBVG.js → chunk-5ZMMHUWR.js} +53 -7
- package/dist/chunk-5ZMMHUWR.js.map +1 -0
- package/dist/{chunk-4XNE2JG3.js → chunk-753F33CV.js} +4 -2
- package/dist/chunk-753F33CV.js.map +1 -0
- package/dist/{chunk-CQL6FOTT.cjs → chunk-GUYI6VAS.cjs} +43 -24
- package/dist/chunk-GUYI6VAS.cjs.map +1 -0
- package/dist/{chunk-NRNJ52AA.js → chunk-NSLTDXVH.js} +26 -7
- package/dist/chunk-NSLTDXVH.js.map +1 -0
- package/dist/{chunk-2X7P7AD5.cjs → chunk-PEE4EWXZ.cjs} +22 -22
- package/dist/{chunk-2X7P7AD5.cjs.map → chunk-PEE4EWXZ.cjs.map} +1 -1
- package/dist/{chunk-Q73OWTJY.cjs → chunk-SCXOGKLD.cjs} +112 -66
- package/dist/chunk-SCXOGKLD.cjs.map +1 -0
- package/dist/index.cjs +135 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -1
- package/dist/index.d.ts +45 -1
- package/dist/index.js +115 -36
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +16 -16
- package/dist/indexes/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-4XNE2JG3.js.map +0 -1
- package/dist/chunk-CQL6FOTT.cjs.map +0 -1
- package/dist/chunk-FQCQM3KG.cjs.map +0 -1
- package/dist/chunk-NRNJ52AA.js.map +0 -1
- package/dist/chunk-Q73OWTJY.cjs.map +0 -1
- package/dist/chunk-UQVBVBVG.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chunkHRNQ3DVJ_cjs = require('./chunk-HRNQ3DVJ.cjs');
|
|
4
4
|
var chunkWRWVWKQL_cjs = require('./chunk-WRWVWKQL.cjs');
|
|
5
5
|
var chunkO5PST6TB_cjs = require('./chunk-O5PST6TB.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk3JK66E3I_cjs = require('./chunk-3JK66E3I.cjs');
|
|
7
7
|
var chunkUVZHTBZ5_cjs = require('./chunk-UVZHTBZ5.cjs');
|
|
8
8
|
var zod = require('zod');
|
|
9
9
|
var drizzleOrm = require('drizzle-orm');
|
|
@@ -1930,9 +1930,9 @@ function validateTableName(name, label) {
|
|
|
1930
1930
|
if (!name || name.length === 0) {
|
|
1931
1931
|
throw new chunkO5PST6TB_cjs.ConfigurationError(`${label} table name cannot be empty`);
|
|
1932
1932
|
}
|
|
1933
|
-
if (name.length >
|
|
1933
|
+
if (name.length > chunk3JK66E3I_cjs.MAX_PG_IDENTIFIER_LENGTH) {
|
|
1934
1934
|
throw new chunkO5PST6TB_cjs.ConfigurationError(
|
|
1935
|
-
`${label} table name exceeds maximum length of ${
|
|
1935
|
+
`${label} table name exceeds maximum length of ${chunk3JK66E3I_cjs.MAX_PG_IDENTIFIER_LENGTH} characters`
|
|
1936
1936
|
);
|
|
1937
1937
|
}
|
|
1938
1938
|
if (!VALID_IDENTIFIER_PATTERN.test(name)) {
|
|
@@ -2104,6 +2104,7 @@ function buildStandardStartCte(input) {
|
|
|
2104
2104
|
const { ast, ctx, graphId, predicateIndex, requiredColumnsByAlias } = input;
|
|
2105
2105
|
const alias = ast.start.alias;
|
|
2106
2106
|
const kinds = ast.start.kinds;
|
|
2107
|
+
const cteMaterialization = ctx.dialect.capabilities.emitNotMaterializedHint ? drizzleOrm.sql`NOT MATERIALIZED ` : drizzleOrm.sql``;
|
|
2107
2108
|
const kindFilter = compileKindFilter(drizzleOrm.sql.raw("kind"), kinds);
|
|
2108
2109
|
const temporalFilter = input.temporalFilterPass.forAlias();
|
|
2109
2110
|
const cteContext = { ...ctx, cteColumnPrefix: "" };
|
|
@@ -2118,14 +2119,19 @@ function buildStandardStartCte(input) {
|
|
|
2118
2119
|
...predicateClauses
|
|
2119
2120
|
];
|
|
2120
2121
|
const effectiveRequiredColumns = requiredColumnsByAlias ? requiredColumnsByAlias.get(alias) ?? EMPTY_REQUIRED_COLUMNS : void 0;
|
|
2122
|
+
const limitClause = input.limitOffset === void 0 ? drizzleOrm.sql`` : input.limitOffset.offset === void 0 ? drizzleOrm.sql`
|
|
2123
|
+
LIMIT ${input.limitOffset.limit}
|
|
2124
|
+
` : drizzleOrm.sql`
|
|
2125
|
+
LIMIT ${input.limitOffset.limit} OFFSET ${input.limitOffset.offset}
|
|
2126
|
+
`;
|
|
2121
2127
|
return drizzleOrm.sql`
|
|
2122
|
-
cte_${drizzleOrm.sql.raw(alias)} AS (
|
|
2128
|
+
cte_${drizzleOrm.sql.raw(alias)} AS ${cteMaterialization}(
|
|
2123
2129
|
SELECT ${drizzleOrm.sql.join(
|
|
2124
2130
|
compileNodeSelectColumns(void 0, alias, effectiveRequiredColumns),
|
|
2125
2131
|
drizzleOrm.sql`, `
|
|
2126
2132
|
)}
|
|
2127
2133
|
FROM ${ctx.schema.nodesTable}
|
|
2128
|
-
WHERE ${drizzleOrm.sql.join(whereClauses, drizzleOrm.sql` AND `)}
|
|
2134
|
+
WHERE ${drizzleOrm.sql.join(whereClauses, drizzleOrm.sql` AND `)}${limitClause}
|
|
2129
2135
|
)
|
|
2130
2136
|
`;
|
|
2131
2137
|
}
|
|
@@ -2189,7 +2195,7 @@ function buildStandardTraversalCte(input) {
|
|
|
2189
2195
|
...compileEdgeSelectColumns("e", edgeAlias, requiredEdgeColumns),
|
|
2190
2196
|
...compileNodeSelectColumns("n", nodeAlias, requiredNodeColumns)
|
|
2191
2197
|
];
|
|
2192
|
-
const cteMaterialization = materializeCte ? drizzleOrm.sql`MATERIALIZED ` : drizzleOrm.sql``;
|
|
2198
|
+
const cteMaterialization = materializeCte ? drizzleOrm.sql`MATERIALIZED ` : ctx.dialect.capabilities.emitNotMaterializedHint ? drizzleOrm.sql`NOT MATERIALIZED ` : drizzleOrm.sql``;
|
|
2193
2199
|
function compileTraversalBranch(branch) {
|
|
2194
2200
|
const whereClauses = [
|
|
2195
2201
|
...baseWhereClauses,
|
|
@@ -3170,7 +3176,7 @@ function lowerComposableQueryToLogicalPlanNode(query, dialect, graphId, nextPlan
|
|
|
3170
3176
|
nextPlanNodeId
|
|
3171
3177
|
});
|
|
3172
3178
|
}
|
|
3173
|
-
const dialectAdapter =
|
|
3179
|
+
const dialectAdapter = chunk3JK66E3I_cjs.getDialect(dialect);
|
|
3174
3180
|
const vectorPredicate = runVectorPredicatePass(
|
|
3175
3181
|
query,
|
|
3176
3182
|
dialectAdapter
|
|
@@ -4000,9 +4006,9 @@ function truncateToBytes(value, maxBytes) {
|
|
|
4000
4006
|
}
|
|
4001
4007
|
function projectionAlias(entityPrefix, kind, field2) {
|
|
4002
4008
|
const prefix = entityPrefix === "node" ? "sg_n" : "sg_e";
|
|
4003
|
-
const hash =
|
|
4009
|
+
const hash = chunk3JK66E3I_cjs.fnv1aBase36(`${kind}\0${field2}`);
|
|
4004
4010
|
const fixedBytes = prefix.length + 1 + 1 + hash.length;
|
|
4005
|
-
const maxKindBytes =
|
|
4011
|
+
const maxKindBytes = chunk3JK66E3I_cjs.MAX_PG_IDENTIFIER_LENGTH - fixedBytes;
|
|
4006
4012
|
const truncatedKind = truncateToBytes(kind, maxKindBytes);
|
|
4007
4013
|
return `${prefix}_${truncatedKind}_${hash}`;
|
|
4008
4014
|
}
|
|
@@ -5245,7 +5251,7 @@ function compileSetOperation2(op, graphId, options = "sqlite") {
|
|
|
5245
5251
|
);
|
|
5246
5252
|
}
|
|
5247
5253
|
function resolveDialectAdapter(dialect, fulltextStrategy) {
|
|
5248
|
-
const baseAdapter =
|
|
5254
|
+
const baseAdapter = chunk3JK66E3I_cjs.getDialect(dialect);
|
|
5249
5255
|
if (fulltextStrategy === void 0 || fulltextStrategy === baseAdapter.fulltext) {
|
|
5250
5256
|
return baseAdapter;
|
|
5251
5257
|
}
|
|
@@ -5279,8 +5285,10 @@ function resolveCountAggregateFastPath(ast) {
|
|
|
5279
5285
|
if (groupField.alias !== ast.start.alias || !isIdFieldRef(groupField)) {
|
|
5280
5286
|
return void 0;
|
|
5281
5287
|
}
|
|
5282
|
-
let
|
|
5283
|
-
let
|
|
5288
|
+
let requiresNodeCount = false;
|
|
5289
|
+
let requiresNodeCountDistinct = false;
|
|
5290
|
+
let requiresEdgeCount = false;
|
|
5291
|
+
let requiresEdgeCountDistinct = false;
|
|
5284
5292
|
for (const projectedField of ast.projection.fields) {
|
|
5285
5293
|
const source = projectedField.source;
|
|
5286
5294
|
if (!isAggregateExpr(source)) {
|
|
@@ -5289,26 +5297,35 @@ function resolveCountAggregateFastPath(ast) {
|
|
|
5289
5297
|
}
|
|
5290
5298
|
continue;
|
|
5291
5299
|
}
|
|
5292
|
-
if (
|
|
5300
|
+
if (!isIdFieldRef(source.field)) {
|
|
5301
|
+
return void 0;
|
|
5302
|
+
}
|
|
5303
|
+
const isNodeTarget = source.field.alias === traversal.nodeAlias;
|
|
5304
|
+
const isEdgeTarget = source.field.alias === traversal.edgeAlias;
|
|
5305
|
+
if (!isNodeTarget && !isEdgeTarget) {
|
|
5293
5306
|
return void 0;
|
|
5294
5307
|
}
|
|
5295
5308
|
if (source.function === "count") {
|
|
5296
|
-
|
|
5309
|
+
if (isNodeTarget) requiresNodeCount = true;
|
|
5310
|
+
else requiresEdgeCount = true;
|
|
5297
5311
|
continue;
|
|
5298
5312
|
}
|
|
5299
5313
|
if (source.function === "countDistinct") {
|
|
5300
|
-
|
|
5314
|
+
if (isNodeTarget) requiresNodeCountDistinct = true;
|
|
5315
|
+
else requiresEdgeCountDistinct = true;
|
|
5301
5316
|
continue;
|
|
5302
5317
|
}
|
|
5303
5318
|
return void 0;
|
|
5304
5319
|
}
|
|
5305
|
-
if (!
|
|
5320
|
+
if (!requiresNodeCount && !requiresNodeCountDistinct && !requiresEdgeCount && !requiresEdgeCountDistinct) {
|
|
5306
5321
|
return void 0;
|
|
5307
5322
|
}
|
|
5308
5323
|
return {
|
|
5309
5324
|
traversal,
|
|
5310
|
-
|
|
5311
|
-
|
|
5325
|
+
requiresNodeCount,
|
|
5326
|
+
requiresNodeCountDistinct,
|
|
5327
|
+
requiresEdgeCount,
|
|
5328
|
+
requiresEdgeCountDistinct
|
|
5312
5329
|
};
|
|
5313
5330
|
}
|
|
5314
5331
|
function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredColumnsByAlias, predicateIndex, temporalFilterPass) {
|
|
@@ -5316,15 +5333,23 @@ function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredC
|
|
|
5316
5333
|
if (!plan) {
|
|
5317
5334
|
return void 0;
|
|
5318
5335
|
}
|
|
5319
|
-
const {
|
|
5336
|
+
const {
|
|
5337
|
+
traversal,
|
|
5338
|
+
requiresNodeCount,
|
|
5339
|
+
requiresNodeCountDistinct,
|
|
5340
|
+
requiresEdgeCount,
|
|
5341
|
+
requiresEdgeCountDistinct
|
|
5342
|
+
} = plan;
|
|
5320
5343
|
const { dialect } = ctx;
|
|
5321
5344
|
const startAlias = ast.start.alias;
|
|
5322
5345
|
const previousAlias = traversal.joinFromAlias;
|
|
5323
5346
|
const previousAliasIdColumn = `${previousAlias}_id`;
|
|
5324
5347
|
const previousAliasKindColumn = `${previousAlias}_kind`;
|
|
5325
5348
|
const countCteAlias = `cte_${traversal.nodeAlias}_counts`;
|
|
5326
|
-
const
|
|
5327
|
-
const
|
|
5349
|
+
const nodeCountColumn = `${traversal.nodeAlias}_count`;
|
|
5350
|
+
const nodeCountDistinctColumn = `${traversal.nodeAlias}_count_distinct`;
|
|
5351
|
+
const edgeCountColumn = `${traversal.edgeAlias}_count`;
|
|
5352
|
+
const edgeCountDistinctColumn = `${traversal.edgeAlias}_count_distinct`;
|
|
5328
5353
|
const previousNodeKinds = getNodeKindsForAlias(ast, traversal.joinFromAlias);
|
|
5329
5354
|
const edgeKinds = [...new Set(traversal.edgeKinds)];
|
|
5330
5355
|
const nodeKinds = traversal.nodeKinds;
|
|
@@ -5350,34 +5375,68 @@ function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredC
|
|
|
5350
5375
|
const targetField = traversal.direction === "out" ? "to_id" : "from_id";
|
|
5351
5376
|
const joinKindField = traversal.direction === "out" ? "from_kind" : "to_kind";
|
|
5352
5377
|
const targetKindField = traversal.direction === "out" ? "to_kind" : "from_kind";
|
|
5378
|
+
const hasNodePredicates = nodePredicateClauses.length > 0;
|
|
5379
|
+
const requiresNodeJoin = requiresNodeCount || requiresNodeCountDistinct || hasNodePredicates;
|
|
5380
|
+
const useInnerJoin = hasNodePredicates;
|
|
5353
5381
|
const whereClauses = [
|
|
5354
5382
|
drizzleOrm.sql`e.graph_id = ${graphId}`,
|
|
5355
5383
|
compileKindFilter(drizzleOrm.sql.raw("e.kind"), edgeKinds),
|
|
5356
5384
|
compileKindFilter(drizzleOrm.sql.raw(`e.${joinKindField}`), previousNodeKinds),
|
|
5357
5385
|
compileKindFilter(drizzleOrm.sql.raw(`e.${targetKindField}`), nodeKinds),
|
|
5358
|
-
compileKindFilter(drizzleOrm.sql.raw("n.kind"), nodeKinds),
|
|
5359
5386
|
edgeTemporalFilter,
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
...
|
|
5387
|
+
...edgePredicateClauses,
|
|
5388
|
+
// INNER JOIN mode: node-side filters in WHERE constrain every aggregate.
|
|
5389
|
+
...requiresNodeJoin && useInnerJoin ? [
|
|
5390
|
+
compileKindFilter(drizzleOrm.sql.raw("n.kind"), nodeKinds),
|
|
5391
|
+
nodeTemporalFilter,
|
|
5392
|
+
...nodePredicateClauses
|
|
5393
|
+
] : []
|
|
5363
5394
|
];
|
|
5395
|
+
const nodeJoinOnClauses = requiresNodeJoin ? useInnerJoin ? (
|
|
5396
|
+
// INNER JOIN: only the key conditions; filters live in WHERE.
|
|
5397
|
+
[
|
|
5398
|
+
drizzleOrm.sql`n.graph_id = e.graph_id`,
|
|
5399
|
+
drizzleOrm.sql`n.id = e.${drizzleOrm.sql.raw(targetField)}`,
|
|
5400
|
+
drizzleOrm.sql`n.kind = e.${drizzleOrm.sql.raw(targetKindField)}`
|
|
5401
|
+
]
|
|
5402
|
+
) : [
|
|
5403
|
+
drizzleOrm.sql`n.graph_id = e.graph_id`,
|
|
5404
|
+
drizzleOrm.sql`n.id = e.${drizzleOrm.sql.raw(targetField)}`,
|
|
5405
|
+
drizzleOrm.sql`n.kind = e.${drizzleOrm.sql.raw(targetKindField)}`,
|
|
5406
|
+
compileKindFilter(drizzleOrm.sql.raw("n.kind"), nodeKinds),
|
|
5407
|
+
nodeTemporalFilter
|
|
5408
|
+
] : [];
|
|
5364
5409
|
const aggregateColumns = [];
|
|
5365
|
-
if (
|
|
5366
|
-
aggregateColumns.push(drizzleOrm.sql`COUNT(n.id) AS ${drizzleOrm.sql.raw(
|
|
5410
|
+
if (requiresNodeCount) {
|
|
5411
|
+
aggregateColumns.push(drizzleOrm.sql`COUNT(n.id) AS ${drizzleOrm.sql.raw(nodeCountColumn)}`);
|
|
5412
|
+
}
|
|
5413
|
+
if (requiresNodeCountDistinct) {
|
|
5414
|
+
aggregateColumns.push(
|
|
5415
|
+
drizzleOrm.sql`COUNT(DISTINCT n.id) AS ${drizzleOrm.sql.raw(nodeCountDistinctColumn)}`
|
|
5416
|
+
);
|
|
5417
|
+
}
|
|
5418
|
+
if (requiresEdgeCount) {
|
|
5419
|
+
aggregateColumns.push(drizzleOrm.sql`COUNT(e.id) AS ${drizzleOrm.sql.raw(edgeCountColumn)}`);
|
|
5367
5420
|
}
|
|
5368
|
-
if (
|
|
5421
|
+
if (requiresEdgeCountDistinct) {
|
|
5369
5422
|
aggregateColumns.push(
|
|
5370
|
-
drizzleOrm.sql`COUNT(DISTINCT
|
|
5423
|
+
drizzleOrm.sql`COUNT(DISTINCT e.id) AS ${drizzleOrm.sql.raw(edgeCountDistinctColumn)}`
|
|
5371
5424
|
);
|
|
5372
5425
|
}
|
|
5426
|
+
const startCteLimit = traversal.optional && ast.orderBy === void 0 && ast.limit !== void 0 ? { limit: ast.limit, offset: ast.offset } : void 0;
|
|
5373
5427
|
const startCte = buildStandardStartCte({
|
|
5374
5428
|
ast,
|
|
5375
5429
|
ctx,
|
|
5376
5430
|
graphId,
|
|
5377
5431
|
predicateIndex,
|
|
5378
5432
|
requiredColumnsByAlias,
|
|
5379
|
-
temporalFilterPass
|
|
5433
|
+
temporalFilterPass,
|
|
5434
|
+
...startCteLimit === void 0 ? {} : { limitOffset: startCteLimit }
|
|
5380
5435
|
});
|
|
5436
|
+
const targetNodeJoinKeyword = useInnerJoin ? "JOIN" : "LEFT JOIN";
|
|
5437
|
+
const targetNodeJoin = requiresNodeJoin ? drizzleOrm.sql`
|
|
5438
|
+
${drizzleOrm.sql.raw(targetNodeJoinKeyword)} ${ctx.schema.nodesTable} n ON ${drizzleOrm.sql.join(nodeJoinOnClauses, drizzleOrm.sql` AND `)}
|
|
5439
|
+
` : drizzleOrm.sql``;
|
|
5381
5440
|
const countCte = drizzleOrm.sql`
|
|
5382
5441
|
${drizzleOrm.sql.raw(countCteAlias)} AS (
|
|
5383
5442
|
SELECT
|
|
@@ -5386,16 +5445,20 @@ function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredC
|
|
|
5386
5445
|
${drizzleOrm.sql.join(aggregateColumns, drizzleOrm.sql`, `)}
|
|
5387
5446
|
FROM cte_${drizzleOrm.sql.raw(previousAlias)}
|
|
5388
5447
|
JOIN ${ctx.schema.edgesTable} e ON cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasIdColumn)} = e.${drizzleOrm.sql.raw(joinField)}
|
|
5389
|
-
AND cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasKindColumn)} = e.${drizzleOrm.sql.raw(joinKindField)}
|
|
5390
|
-
JOIN ${ctx.schema.nodesTable} n ON n.graph_id = e.graph_id
|
|
5391
|
-
AND n.id = e.${drizzleOrm.sql.raw(targetField)}
|
|
5392
|
-
AND n.kind = e.${drizzleOrm.sql.raw(targetKindField)}
|
|
5448
|
+
AND cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasKindColumn)} = e.${drizzleOrm.sql.raw(joinKindField)}${targetNodeJoin}
|
|
5393
5449
|
WHERE ${drizzleOrm.sql.join(whereClauses, drizzleOrm.sql` AND `)}
|
|
5394
5450
|
GROUP BY
|
|
5395
5451
|
cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasIdColumn)},
|
|
5396
5452
|
cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasKindColumn)}
|
|
5397
5453
|
)
|
|
5398
5454
|
`;
|
|
5455
|
+
function resolveCountColumn(source) {
|
|
5456
|
+
const isEdge = source.field.alias === traversal.edgeAlias;
|
|
5457
|
+
if (source.function === "countDistinct") {
|
|
5458
|
+
return isEdge ? edgeCountDistinctColumn : nodeCountDistinctColumn;
|
|
5459
|
+
}
|
|
5460
|
+
return isEdge ? edgeCountColumn : nodeCountColumn;
|
|
5461
|
+
}
|
|
5399
5462
|
const projection = drizzleOrm.sql.join(
|
|
5400
5463
|
ast.projection.fields.map((projectedField) => {
|
|
5401
5464
|
const source = projectedField.source;
|
|
@@ -5408,7 +5471,7 @@ function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredC
|
|
|
5408
5471
|
);
|
|
5409
5472
|
return drizzleOrm.sql`${value} AS ${quoteIdentifier2(projectedField.outputName)}`;
|
|
5410
5473
|
}
|
|
5411
|
-
const projectedCountColumn = source
|
|
5474
|
+
const projectedCountColumn = resolveCountColumn(source);
|
|
5412
5475
|
const countValue = drizzleOrm.sql`${drizzleOrm.sql.raw(countCteAlias)}.${drizzleOrm.sql.raw(projectedCountColumn)}`;
|
|
5413
5476
|
const aggregateValue = traversal.optional ? drizzleOrm.sql`COALESCE(${countValue}, 0)` : countValue;
|
|
5414
5477
|
return drizzleOrm.sql`${aggregateValue} AS ${quoteIdentifier2(projectedField.outputName)}`;
|
|
@@ -5423,19 +5486,29 @@ function compileCountAggregateFastPath(ast, graphId, ctx, logicalPlan, requiredC
|
|
|
5423
5486
|
AND ${drizzleOrm.sql.raw(countCteAlias)}.${drizzleOrm.sql.raw(previousAliasKindColumn)} = cte_${drizzleOrm.sql.raw(previousAlias)}.${drizzleOrm.sql.raw(previousAliasKindColumn)}
|
|
5424
5487
|
`;
|
|
5425
5488
|
const orderBy = buildStandardOrderBy({ ast, dialect });
|
|
5426
|
-
const
|
|
5427
|
-
|
|
5428
|
-
offset: ast.offset
|
|
5429
|
-
});
|
|
5489
|
+
const emittedLogicalPlan = startCteLimit === void 0 ? logicalPlan : stripLimitOffsetFromPlan(logicalPlan);
|
|
5490
|
+
const limitOffset = startCteLimit === void 0 ? buildLimitOffsetClause({ limit: ast.limit, offset: ast.offset }) : void 0;
|
|
5430
5491
|
return emitStandardQuerySql({
|
|
5431
5492
|
ctes: [startCte, countCte],
|
|
5432
5493
|
fromClause,
|
|
5433
5494
|
...orderBy === void 0 ? {} : { orderBy },
|
|
5434
5495
|
...limitOffset === void 0 ? {} : { limitOffset },
|
|
5435
|
-
logicalPlan,
|
|
5496
|
+
logicalPlan: emittedLogicalPlan,
|
|
5436
5497
|
projection
|
|
5437
5498
|
});
|
|
5438
5499
|
}
|
|
5500
|
+
function stripLimitOffsetFromPlan(plan) {
|
|
5501
|
+
return { ...plan, root: stripLimitOffsetFromPlanNode(plan.root) };
|
|
5502
|
+
}
|
|
5503
|
+
function stripLimitOffsetFromPlanNode(node) {
|
|
5504
|
+
if (node.op === "limit_offset") {
|
|
5505
|
+
return stripLimitOffsetFromPlanNode(node.input);
|
|
5506
|
+
}
|
|
5507
|
+
if ("input" in node) {
|
|
5508
|
+
return { ...node, input: stripLimitOffsetFromPlanNode(node.input) };
|
|
5509
|
+
}
|
|
5510
|
+
return node;
|
|
5511
|
+
}
|
|
5439
5512
|
var STANDARD_QUERY_STRATEGY_HANDLERS = {
|
|
5440
5513
|
cte_project: compileStandardQueryWithCteStrategy
|
|
5441
5514
|
};
|
|
@@ -5776,14 +5849,14 @@ function generateId() {
|
|
|
5776
5849
|
|
|
5777
5850
|
// src/utils/path.ts
|
|
5778
5851
|
function parseSqlitePath(path) {
|
|
5779
|
-
const emptyPath = `${
|
|
5852
|
+
const emptyPath = `${chunk3JK66E3I_cjs.SQLITE_PATH_DELIMITER}${chunk3JK66E3I_cjs.SQLITE_PATH_DELIMITER}`;
|
|
5780
5853
|
if (!path || path === emptyPath) return [];
|
|
5781
5854
|
const trimmed = path.slice(1, -1);
|
|
5782
5855
|
if (trimmed === "") return [];
|
|
5783
|
-
return trimmed.split(
|
|
5856
|
+
return trimmed.split(chunk3JK66E3I_cjs.SQLITE_PATH_DELIMITER);
|
|
5784
5857
|
}
|
|
5785
5858
|
function isSqlitePath(value) {
|
|
5786
|
-
return typeof value === "string" && value.startsWith(
|
|
5859
|
+
return typeof value === "string" && value.startsWith(chunk3JK66E3I_cjs.SQLITE_PATH_DELIMITER) && value.endsWith(chunk3JK66E3I_cjs.SQLITE_PATH_DELIMITER);
|
|
5787
5860
|
}
|
|
5788
5861
|
function normalizePath(value) {
|
|
5789
5862
|
if (Array.isArray(value)) {
|
|
@@ -5798,12 +5871,12 @@ function normalizePath(value) {
|
|
|
5798
5871
|
return [];
|
|
5799
5872
|
}
|
|
5800
5873
|
function isPostgresTextArray(value) {
|
|
5801
|
-
return typeof value === "string" && value.startsWith(
|
|
5874
|
+
return typeof value === "string" && value.startsWith(chunk3JK66E3I_cjs.PG_ARRAY_START) && value.endsWith(chunk3JK66E3I_cjs.PG_ARRAY_END);
|
|
5802
5875
|
}
|
|
5803
5876
|
function parsePostgresTextArray(value) {
|
|
5804
5877
|
const inner = value.slice(1, -1);
|
|
5805
5878
|
if (inner === "") return [];
|
|
5806
|
-
return inner.split(
|
|
5879
|
+
return inner.split(chunk3JK66E3I_cjs.PG_PATH_ELEMENT_SEPARATOR);
|
|
5807
5880
|
}
|
|
5808
5881
|
|
|
5809
5882
|
// src/query/execution/result-mapper.ts
|
|
@@ -6040,7 +6113,7 @@ async function* createStreamIterable(batchSize, paginate) {
|
|
|
6040
6113
|
}
|
|
6041
6114
|
}
|
|
6042
6115
|
function getStreamBatchSize(options) {
|
|
6043
|
-
return options?.batchSize ??
|
|
6116
|
+
return options?.batchSize ?? chunk3JK66E3I_cjs.DEFAULT_STREAM_BATCH_SIZE;
|
|
6044
6117
|
}
|
|
6045
6118
|
|
|
6046
6119
|
// src/query/execution/field-tracker.ts
|
|
@@ -6122,7 +6195,7 @@ function createNodeTrackingProxy(alias, kindNames, tracker, options) {
|
|
|
6122
6195
|
return getPlaceholderForSystemField(property, options.mode);
|
|
6123
6196
|
}
|
|
6124
6197
|
if (property === "meta") {
|
|
6125
|
-
for (const key of
|
|
6198
|
+
for (const key of chunk3JK66E3I_cjs.NODE_META_KEYS) {
|
|
6126
6199
|
tracker.record(alias, `meta.${key}`, true);
|
|
6127
6200
|
}
|
|
6128
6201
|
return buildNodeMetaPlaceholder(options.mode);
|
|
@@ -6155,7 +6228,7 @@ function createEdgeTrackingProxy(alias, edgeKindNames, tracker, options) {
|
|
|
6155
6228
|
return getPlaceholderForSystemField(property, options.mode);
|
|
6156
6229
|
}
|
|
6157
6230
|
if (property === "meta") {
|
|
6158
|
-
for (const key of
|
|
6231
|
+
for (const key of chunk3JK66E3I_cjs.EDGE_META_KEYS) {
|
|
6159
6232
|
tracker.record(alias, `meta.${key}`, true);
|
|
6160
6233
|
}
|
|
6161
6234
|
return buildEdgeMetaPlaceholder(options.mode);
|
|
@@ -6924,7 +6997,7 @@ function substituteParameters(ast, bindings) {
|
|
|
6924
6997
|
};
|
|
6925
6998
|
}
|
|
6926
6999
|
function fillPlaceholders(params, bindings, dialect) {
|
|
6927
|
-
const adapter =
|
|
7000
|
+
const adapter = chunk3JK66E3I_cjs.getDialect(dialect);
|
|
6928
7001
|
return params.map((parameter) => {
|
|
6929
7002
|
if (parameter instanceof drizzleOrm.Placeholder) {
|
|
6930
7003
|
const name = parameter.name;
|
|
@@ -8019,7 +8092,7 @@ var ExecutableQuery = class _ExecutableQuery {
|
|
|
8019
8092
|
);
|
|
8020
8093
|
}
|
|
8021
8094
|
const isBackward = options.last !== void 0 || options.before !== void 0;
|
|
8022
|
-
const limit = options.first ?? options.last ??
|
|
8095
|
+
const limit = options.first ?? options.last ?? chunk3JK66E3I_cjs.DEFAULT_PAGINATION_LIMIT;
|
|
8023
8096
|
const cursor = options.after ?? options.before;
|
|
8024
8097
|
let cursorData;
|
|
8025
8098
|
if (cursor) {
|
|
@@ -9360,6 +9433,12 @@ function countDistinct(alias, field2) {
|
|
|
9360
9433
|
}
|
|
9361
9434
|
};
|
|
9362
9435
|
}
|
|
9436
|
+
function countEdges(edgeAlias) {
|
|
9437
|
+
return count(edgeAlias);
|
|
9438
|
+
}
|
|
9439
|
+
function countDistinctEdges(edgeAlias) {
|
|
9440
|
+
return countDistinct(edgeAlias);
|
|
9441
|
+
}
|
|
9363
9442
|
function sum(alias, field2) {
|
|
9364
9443
|
return {
|
|
9365
9444
|
__type: "aggregate",
|
|
@@ -9765,7 +9844,7 @@ function createGraphAlgorithms(params) {
|
|
|
9765
9844
|
const ctx = {
|
|
9766
9845
|
graphId: params.graphId,
|
|
9767
9846
|
backend: params.backend,
|
|
9768
|
-
dialect:
|
|
9847
|
+
dialect: chunk3JK66E3I_cjs.getDialect(params.backend.dialect),
|
|
9769
9848
|
schema: params.schema ?? (params.backend.tableNames ? createSqlSchema(params.backend.tableNames) : createSqlSchema()),
|
|
9770
9849
|
defaultTemporalMode: params.defaultTemporalMode
|
|
9771
9850
|
};
|
|
@@ -13495,7 +13574,7 @@ var Store = class {
|
|
|
13495
13574
|
graphId: this.graphId,
|
|
13496
13575
|
rootId,
|
|
13497
13576
|
backend: this.#backend,
|
|
13498
|
-
dialect:
|
|
13577
|
+
dialect: chunk3JK66E3I_cjs.getDialect(this.#backend.dialect),
|
|
13499
13578
|
schema: this.#schema,
|
|
13500
13579
|
options
|
|
13501
13580
|
});
|
|
@@ -13807,11 +13886,11 @@ Object.defineProperty(exports, "isUserRecoverable", {
|
|
|
13807
13886
|
});
|
|
13808
13887
|
Object.defineProperty(exports, "fts5Strategy", {
|
|
13809
13888
|
enumerable: true,
|
|
13810
|
-
get: function () { return
|
|
13889
|
+
get: function () { return chunk3JK66E3I_cjs.fts5Strategy; }
|
|
13811
13890
|
});
|
|
13812
13891
|
Object.defineProperty(exports, "tsvectorStrategy", {
|
|
13813
13892
|
enumerable: true,
|
|
13814
|
-
get: function () { return
|
|
13893
|
+
get: function () { return chunk3JK66E3I_cjs.tsvectorStrategy; }
|
|
13815
13894
|
});
|
|
13816
13895
|
Object.defineProperty(exports, "DEFAULT_SEARCHABLE_LANGUAGE", {
|
|
13817
13896
|
enumerable: true,
|
|
@@ -13876,6 +13955,8 @@ exports.composeFragments = composeFragments;
|
|
|
13876
13955
|
exports.core = core;
|
|
13877
13956
|
exports.count = count;
|
|
13878
13957
|
exports.countDistinct = countDistinct;
|
|
13958
|
+
exports.countDistinctEdges = countDistinctEdges;
|
|
13959
|
+
exports.countEdges = countEdges;
|
|
13879
13960
|
exports.createExternalRef = createExternalRef;
|
|
13880
13961
|
exports.createFragment = createFragment;
|
|
13881
13962
|
exports.createQueryBuilder = createQueryBuilder;
|