@hypequery/clickhouse 2.0.0 → 2.0.2
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/core/features/aggregations.d.ts +27 -1
- package/dist/core/features/aggregations.d.ts.map +1 -1
- package/dist/core/features/aggregations.js +43 -3
- package/dist/core/query-builder.d.ts +1 -0
- package/dist/core/query-builder.d.ts.map +1 -1
- package/dist/core/query-builder.js +3 -0
- package/dist/core/tests/integration/setup.d.ts +2 -10
- package/dist/core/tests/integration/setup.d.ts.map +1 -1
- package/dist/core/tests/integration/setup.js +30 -251
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +2 -1
- package/dist/datasets.d.ts +41 -0
- package/dist/datasets.d.ts.map +1 -0
- package/dist/datasets.js +387 -0
- package/dist/migrations/config/index.d.ts +3 -0
- package/dist/migrations/config/index.d.ts.map +1 -0
- package/dist/migrations/config/index.js +1 -0
- package/dist/migrations/config/types.d.ts +45 -0
- package/dist/migrations/config/types.d.ts.map +1 -0
- package/dist/migrations/config/types.js +28 -0
- package/dist/migrations/diff/diff.d.ts +11 -0
- package/dist/migrations/diff/diff.d.ts.map +1 -0
- package/dist/migrations/diff/diff.js +240 -0
- package/dist/migrations/diff/index.d.ts +3 -0
- package/dist/migrations/diff/index.d.ts.map +1 -0
- package/dist/migrations/diff/index.js +1 -0
- package/dist/migrations/diff/types.d.ts +74 -0
- package/dist/migrations/diff/types.d.ts.map +1 -0
- package/dist/migrations/diff/types.js +1 -0
- package/dist/migrations/introspect/index.d.ts +3 -0
- package/dist/migrations/introspect/index.d.ts.map +1 -0
- package/dist/migrations/introspect/index.js +1 -0
- package/dist/migrations/introspect/pull-schema.d.ts +23 -0
- package/dist/migrations/introspect/pull-schema.d.ts.map +1 -0
- package/dist/migrations/introspect/pull-schema.js +135 -0
- package/dist/migrations/plan/index.d.ts +3 -0
- package/dist/migrations/plan/index.d.ts.map +1 -0
- package/dist/migrations/plan/index.js +1 -0
- package/dist/migrations/plan/plan.d.ts +12 -0
- package/dist/migrations/plan/plan.d.ts.map +1 -0
- package/dist/migrations/plan/plan.js +416 -0
- package/dist/migrations/plan/types.d.ts +93 -0
- package/dist/migrations/plan/types.d.ts.map +1 -0
- package/dist/migrations/plan/types.js +1 -0
- package/dist/migrations/schema/column.d.ts +71 -0
- package/dist/migrations/schema/column.d.ts.map +1 -0
- package/dist/migrations/schema/column.js +123 -0
- package/dist/migrations/schema/define.d.ts +24 -0
- package/dist/migrations/schema/define.d.ts.map +1 -0
- package/dist/migrations/schema/define.js +47 -0
- package/dist/migrations/schema/index.d.ts +4 -0
- package/dist/migrations/schema/index.d.ts.map +1 -0
- package/dist/migrations/schema/index.js +2 -0
- package/dist/migrations/schema/types.d.ts +74 -0
- package/dist/migrations/schema/types.d.ts.map +1 -0
- package/dist/migrations/schema/types.js +1 -0
- package/dist/migrations/snapshot/index.d.ts +3 -0
- package/dist/migrations/snapshot/index.d.ts.map +1 -0
- package/dist/migrations/snapshot/index.js +1 -0
- package/dist/migrations/snapshot/serialize.d.ts +21 -0
- package/dist/migrations/snapshot/serialize.d.ts.map +1 -0
- package/dist/migrations/snapshot/serialize.js +127 -0
- package/dist/migrations/snapshot/types.d.ts +47 -0
- package/dist/migrations/snapshot/types.d.ts.map +1 -0
- package/dist/migrations/snapshot/types.js +1 -0
- package/dist/migrations/sql/index.d.ts +4 -0
- package/dist/migrations/sql/index.d.ts.map +1 -0
- package/dist/migrations/sql/index.js +2 -0
- package/dist/migrations/sql/render.d.ts +10 -0
- package/dist/migrations/sql/render.d.ts.map +1 -0
- package/dist/migrations/sql/render.js +347 -0
- package/dist/migrations/sql/types.d.ts +53 -0
- package/dist/migrations/sql/types.d.ts.map +1 -0
- package/dist/migrations/sql/types.js +1 -0
- package/dist/migrations/sql/write.d.ts +10 -0
- package/dist/migrations/sql/write.d.ts.map +1 -0
- package/dist/migrations/sql/write.js +35 -0
- package/dist/semantic-backend.d.ts +7 -0
- package/dist/semantic-backend.d.ts.map +1 -0
- package/dist/semantic-backend.js +208 -0
- package/dist/types/base.d.ts +1 -0
- package/dist/types/base.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { BuilderState, SchemaDefinition } from '../types/builder-state.js';
|
|
2
2
|
import { QueryBuilder } from '../query-builder.js';
|
|
3
|
-
import type { SelectQueryNode } from '../../types/index.js';
|
|
3
|
+
import type { SelectQueryNode, SelectionNode } from '../../types/index.js';
|
|
4
4
|
export declare class AggregationFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>>> {
|
|
5
5
|
private builder;
|
|
6
|
+
private static readonly TRAILING_ALIAS_PATTERN;
|
|
7
|
+
private static readonly LEADING_AGGREGATE_CALL_PATTERN;
|
|
6
8
|
constructor(builder: QueryBuilder<Schema, State>);
|
|
9
|
+
private stripTrailingAlias;
|
|
10
|
+
private isAggregateSelection;
|
|
11
|
+
private createAggregateSelection;
|
|
12
|
+
private shouldInferGroupByFromSelection;
|
|
7
13
|
private inferGroupBySelections;
|
|
8
14
|
private createAggregation;
|
|
9
15
|
sum(column: string, alias: string): SelectQueryNode<State["output"], Schema>;
|
|
@@ -11,5 +17,25 @@ export declare class AggregationFeature<Schema extends SchemaDefinition<Schema>,
|
|
|
11
17
|
avg(column: string, alias: string): SelectQueryNode<State["output"], Schema>;
|
|
12
18
|
min(column: string, alias: string): SelectQueryNode<State["output"], Schema>;
|
|
13
19
|
max(column: string, alias: string): SelectQueryNode<State["output"], Schema>;
|
|
20
|
+
countDistinct(column: string, alias: string): {
|
|
21
|
+
select: SelectionNode[];
|
|
22
|
+
kind: "select-query";
|
|
23
|
+
from?: import("../../types/base.js").SourceNode;
|
|
24
|
+
arrayJoins?: import("../../types/base.js").ArrayJoinNode[];
|
|
25
|
+
prewhere?: import("../../types/base.js").ExprNode;
|
|
26
|
+
where?: import("../../types/base.js").ExprNode;
|
|
27
|
+
groupBy?: import("../../types/base.js").GroupByItemNode[];
|
|
28
|
+
withTotals?: boolean;
|
|
29
|
+
having?: import("../../types/base.js").HavingNode[];
|
|
30
|
+
limitBy?: import("../../types/base.js").LimitByNode;
|
|
31
|
+
limit?: number;
|
|
32
|
+
offset?: number;
|
|
33
|
+
distinct?: boolean;
|
|
34
|
+
orderBy?: import("../../types/base.js").OrderByItemNode[];
|
|
35
|
+
joins?: import("../../types/base.js").JoinNode[];
|
|
36
|
+
ctes?: import("../../types/base.js").CteNode[];
|
|
37
|
+
unionQueries?: string[];
|
|
38
|
+
settings?: import("@clickhouse/client-common").ClickHouseSettings;
|
|
39
|
+
};
|
|
14
40
|
}
|
|
15
41
|
//# sourceMappingURL=aggregations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../../src/core/features/aggregations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../../src/core/features/aggregations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3E,qBAAa,kBAAkB,CAC7B,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC;IAKxF,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAoC;gBAEtE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,+BAA+B;IAYvC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,iBAAiB;IAsBzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIjC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAInC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIjC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIjC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIjC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;CAiB5C"}
|
|
@@ -1,12 +1,37 @@
|
|
|
1
1
|
export class AggregationFeature {
|
|
2
2
|
builder;
|
|
3
|
+
static TRAILING_ALIAS_PATTERN = /\s+AS\s+[A-Za-z_][A-Za-z0-9_]*$/i;
|
|
4
|
+
static LEADING_AGGREGATE_CALL_PATTERN = /^(COUNT|SUM|AVG|MIN|MAX)\s*\(/i;
|
|
3
5
|
constructor(builder) {
|
|
4
6
|
this.builder = builder;
|
|
5
7
|
}
|
|
8
|
+
stripTrailingAlias(selection) {
|
|
9
|
+
return selection.replace(AggregationFeature.TRAILING_ALIAS_PATTERN, '').trim();
|
|
10
|
+
}
|
|
11
|
+
isAggregateSelection(selection) {
|
|
12
|
+
const expressionWithoutAlias = this.stripTrailingAlias(selection);
|
|
13
|
+
return AggregationFeature.LEADING_AGGREGATE_CALL_PATTERN.test(expressionWithoutAlias);
|
|
14
|
+
}
|
|
15
|
+
createAggregateSelection(selection) {
|
|
16
|
+
return {
|
|
17
|
+
kind: 'selection',
|
|
18
|
+
selection,
|
|
19
|
+
isAggregate: true,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
shouldInferGroupByFromSelection(item) {
|
|
23
|
+
if (item.selection === '*') {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (item.isAggregate === true) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return !this.isAggregateSelection(item.selection);
|
|
30
|
+
}
|
|
6
31
|
inferGroupBySelections(select) {
|
|
7
32
|
return select
|
|
33
|
+
.filter(item => this.shouldInferGroupByFromSelection(item))
|
|
8
34
|
.map(item => item.selection)
|
|
9
|
-
.filter(selection => selection !== '*')
|
|
10
35
|
.map(selection => {
|
|
11
36
|
const aliasMatch = selection.match(/\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i);
|
|
12
37
|
return {
|
|
@@ -21,13 +46,13 @@ export class AggregationFeature {
|
|
|
21
46
|
if (query.select) {
|
|
22
47
|
return {
|
|
23
48
|
...query,
|
|
24
|
-
select: [...query.select,
|
|
49
|
+
select: [...query.select, this.createAggregateSelection(aggregationSQL)],
|
|
25
50
|
groupBy: query.groupBy || this.inferGroupBySelections(query.select)
|
|
26
51
|
};
|
|
27
52
|
}
|
|
28
53
|
return {
|
|
29
54
|
...query,
|
|
30
|
-
select: [
|
|
55
|
+
select: [this.createAggregateSelection(aggregationSQL)]
|
|
31
56
|
};
|
|
32
57
|
}
|
|
33
58
|
sum(column, alias) {
|
|
@@ -45,4 +70,19 @@ export class AggregationFeature {
|
|
|
45
70
|
max(column, alias) {
|
|
46
71
|
return this.createAggregation(column, 'MAX', alias);
|
|
47
72
|
}
|
|
73
|
+
countDistinct(column, alias) {
|
|
74
|
+
const aggregationSQL = `COUNT(DISTINCT ${column}) AS ${alias}`;
|
|
75
|
+
const query = this.builder.getQueryNode();
|
|
76
|
+
if (query.select) {
|
|
77
|
+
return {
|
|
78
|
+
...query,
|
|
79
|
+
select: [...query.select, this.createAggregateSelection(aggregationSQL)],
|
|
80
|
+
groupBy: query.groupBy || this.inferGroupBySelections(query.select),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
...query,
|
|
85
|
+
select: [this.createAggregateSelection(aggregationSQL)],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
48
88
|
}
|
|
@@ -126,6 +126,7 @@ export declare class QueryBuilder<Schema extends SchemaDefinition<Schema>, State
|
|
|
126
126
|
avg<Column extends SelectableColumn<State>, Alias extends string = `${Column & string}_avg`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
|
|
127
127
|
min<Column extends SelectableColumn<State>, Alias extends string = `${Column & string}_min`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
|
|
128
128
|
max<Column extends SelectableColumn<State>, Alias extends string = `${Column & string}_max`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
|
|
129
|
+
countDistinct<Column extends keyof BaseRow<State>, Alias extends string = `${Column & string}_countDistinct`>(column: Column, alias?: Alias): QueryBuilder<Schema, AppendToOutput<State, Record<Alias, string>>>;
|
|
129
130
|
private applyAggregation;
|
|
130
131
|
getTableName(): string;
|
|
131
132
|
getRuntimeContext(): QueryRuntimeContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -252,6 +252,9 @@ export class QueryBuilder {
|
|
|
252
252
|
max(column, alias) {
|
|
253
253
|
return this.applyAggregation(column, alias, 'max', (col, finalAlias) => this.aggregations.max(col, finalAlias));
|
|
254
254
|
}
|
|
255
|
+
countDistinct(column, alias) {
|
|
256
|
+
return this.applyAggregation(column, alias, 'countDistinct', (col, finalAlias) => this.aggregations.countDistinct(col, finalAlias));
|
|
257
|
+
}
|
|
255
258
|
applyAggregation(column, alias, suffix, updater) {
|
|
256
259
|
const columnName = String(column);
|
|
257
260
|
const finalAlias = (alias || `${columnName}_${suffix}`);
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
host: string;
|
|
3
|
-
user: string;
|
|
4
|
-
password: string;
|
|
5
|
-
database: string;
|
|
6
|
-
};
|
|
1
|
+
import { CLICKHOUSE_CONTAINER_NAME, TEST_CONNECTION_CONFIG, TEST_DATA } from '../../../../../../testing/clickhouse/harness.mjs';
|
|
7
2
|
export declare const initializeTestConnection: () => Promise<{
|
|
8
3
|
cache: import("../../cache/controller.js").CacheController;
|
|
9
4
|
adapter: import("../../adapters/database-adapter.js").DatabaseAdapter;
|
|
@@ -12,10 +7,7 @@ export declare const initializeTestConnection: () => Promise<{
|
|
|
12
7
|
table<TableName extends never>(tableName: TableName): import("../../query-builder.js").SelectQB<import("../../types/builder-state.js").SchemaDefinition<unknown>, TableName, import("../../../index.js").TableRecord<import("../../types/builder-state.js").SchemaDefinition<unknown>[TableName]>, TableName>;
|
|
13
8
|
}>;
|
|
14
9
|
export declare const ensureConnectionInitialized: () => import("@clickhouse/client").ClickHouseClient | import("@clickhouse/client-web").ClickHouseClient;
|
|
15
|
-
export declare const isDockerAvailable: () => Promise<boolean>;
|
|
16
|
-
export declare const isDockerComposeAvailable: () => Promise<boolean>;
|
|
17
10
|
export declare const isContainerRunning: (containerName: string) => Promise<boolean>;
|
|
18
|
-
export declare const isClickHouseReady: () => Promise<boolean>;
|
|
19
11
|
export declare const startClickHouseContainer: () => Promise<void>;
|
|
20
12
|
export declare const waitForClickHouse: (maxAttempts?: number, retryInterval?: number) => Promise<void>;
|
|
21
13
|
export declare const stopClickHouseContainer: () => Promise<void>;
|
|
@@ -46,6 +38,6 @@ export interface TestSchemaType {
|
|
|
46
38
|
created_at: string;
|
|
47
39
|
}>;
|
|
48
40
|
}
|
|
49
|
-
export
|
|
41
|
+
export { CLICKHOUSE_CONTAINER_NAME, TEST_CONNECTION_CONFIG, TEST_DATA };
|
|
50
42
|
export declare const setupTestDatabase: () => Promise<void>;
|
|
51
43
|
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/core/tests/integration/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/core/tests/integration/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,SAAS,EASV,MAAM,kDAAkD,CAAC;AA4B1D,eAAO,MAAM,wBAAwB;;;;;;EAyBpC,CAAC;AAGF,eAAO,MAAM,2BAA2B,yGAevC,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,OAAO,CAE/E,CAAC;AAGF,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CAO7D,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,oBAAgB,EAChB,sBAAoB,KACnB,OAAO,CAAC,IAAI,CAOd,CAAC;AAGF,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAU5D,CAAC;AAGF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC;AAKxE,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAuBtD,CAAC"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
1
|
import { ClickHouseConnection } from '../../connection.js';
|
|
4
|
-
import { exec } from 'child_process';
|
|
5
|
-
import { promisify } from 'util';
|
|
6
2
|
import { logger as hypeQueryLogger } from '../../utils/logger.js';
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import { CLICKHOUSE_CONTAINER_NAME, TEST_CONNECTION_CONFIG, TEST_DATA, detectComposeCommand, ensureDockerDaemon, isContainerRunning as sharedIsContainerRunning, seedClickHouseDatabase, startClickHouseContainer as sharedStartClickHouseContainer, stopClickHouseContainer as sharedStopClickHouseContainer, waitForClickHouse as sharedWaitForClickHouse,
|
|
4
|
+
// @ts-expect-error: shared test harness is plain JS
|
|
5
|
+
} from '../../../../../../testing/clickhouse/harness.mjs';
|
|
9
6
|
// Disable the hypequery logger to prevent "logs after tests" errors
|
|
10
7
|
// This must be done early in the setup, before any queries run
|
|
11
8
|
hypeQueryLogger.configure({ enabled: false });
|
|
@@ -27,20 +24,7 @@ const logger = {
|
|
|
27
24
|
}
|
|
28
25
|
}
|
|
29
26
|
};
|
|
30
|
-
const
|
|
31
|
-
// Create a path to the project root
|
|
32
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
33
|
-
const __dirname = path.dirname(__filename);
|
|
34
|
-
const projectRoot = path.resolve(__dirname, '../../../../../');
|
|
35
|
-
// Connection configuration (with defaults that can be overridden by env variables)
|
|
36
|
-
const CLICKHOUSE_TEST_PORT = process.env.CLICKHOUSE_TEST_PORT || '8123';
|
|
37
|
-
const config = {
|
|
38
|
-
host: process.env.CLICKHOUSE_TEST_HOST || `http://localhost:${CLICKHOUSE_TEST_PORT}`,
|
|
39
|
-
user: process.env.CLICKHOUSE_TEST_USER || 'default',
|
|
40
|
-
password: process.env.CLICKHOUSE_TEST_PASSWORD || 'hypequery_test',
|
|
41
|
-
database: process.env.CLICKHOUSE_TEST_DB || 'test_db',
|
|
42
|
-
};
|
|
43
|
-
export const TEST_CONNECTION_CONFIG = config;
|
|
27
|
+
const config = TEST_CONNECTION_CONFIG;
|
|
44
28
|
// Initialize the ClickHouse connection
|
|
45
29
|
export const initializeTestConnection = async () => {
|
|
46
30
|
logger.info('Initializing ClickHouse connection with config:', config);
|
|
@@ -84,179 +68,41 @@ export const ensureConnectionInitialized = () => {
|
|
|
84
68
|
return ClickHouseConnection.getClient();
|
|
85
69
|
};
|
|
86
70
|
// Check if Docker is installed
|
|
87
|
-
export const isDockerAvailable = async () => {
|
|
88
|
-
try {
|
|
89
|
-
await execAsync('docker --version');
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
// Check if Docker Compose is installed
|
|
97
|
-
export const isDockerComposeAvailable = async () => {
|
|
98
|
-
try {
|
|
99
|
-
await execAsync('docker compose version');
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
try {
|
|
104
|
-
// Try the hyphenated version for older installations
|
|
105
|
-
await execAsync('docker-compose --version');
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
// Check if a docker container is running
|
|
114
71
|
export const isContainerRunning = async (containerName) => {
|
|
115
|
-
|
|
116
|
-
const { stdout } = await execAsync(`docker ps --filter "name=${containerName}" --format "{{.Names}}"`);
|
|
117
|
-
return stdout.trim() === containerName;
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
// Check if ClickHouse is ready
|
|
124
|
-
export const isClickHouseReady = async () => {
|
|
125
|
-
try {
|
|
126
|
-
const client = ClickHouseConnection.getClient();
|
|
127
|
-
await client.ping();
|
|
128
|
-
return true;
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
72
|
+
return sharedIsContainerRunning(containerName);
|
|
133
73
|
};
|
|
134
74
|
// Start the ClickHouse container
|
|
135
75
|
export const startClickHouseContainer = async () => {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (composeAvailable) {
|
|
143
|
-
logger.info('Starting ClickHouse container with Docker Compose...');
|
|
144
|
-
try {
|
|
145
|
-
// Fix the path to the docker-compose.test.yml file
|
|
146
|
-
const composePath = path.resolve(projectRoot, 'packages/clickhouse/docker-compose.test.yml');
|
|
147
|
-
logger.info(`Using Docker Compose file at: ${composePath}`);
|
|
148
|
-
// Make sure we're executing the command from the correct directory
|
|
149
|
-
await execAsync(`docker compose -f "${composePath}" up -d`);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
logger.error('Failed to start ClickHouse container with Docker Compose:', error);
|
|
153
|
-
throw error;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
// Fallback to Docker run
|
|
158
|
-
logger.info('Starting ClickHouse container with Docker...');
|
|
159
|
-
try {
|
|
160
|
-
await execAsync(`
|
|
161
|
-
docker run -d --name hypequery-test-clickhouse
|
|
162
|
-
-p 8123:8123 -p 9000:9000
|
|
163
|
-
-e CLICKHOUSE_USER=${config.user}
|
|
164
|
-
-e CLICKHOUSE_PASSWORD=${config.password}
|
|
165
|
-
-e CLICKHOUSE_DB=${config.database}
|
|
166
|
-
--ulimit nofile=262144:262144
|
|
167
|
-
clickhouse/clickhouse-server:latest
|
|
168
|
-
`);
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
logger.error('Failed to start ClickHouse container with Docker:', error);
|
|
172
|
-
throw error;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
76
|
+
await ensureDockerDaemon();
|
|
77
|
+
const compose = await detectComposeCommand();
|
|
78
|
+
await sharedStartClickHouseContainer({
|
|
79
|
+
compose,
|
|
80
|
+
logger: (message) => logger.info(message),
|
|
81
|
+
});
|
|
175
82
|
};
|
|
176
83
|
// Wait for ClickHouse to be ready
|
|
177
84
|
export const waitForClickHouse = async (maxAttempts = 30, retryInterval = 1000) => {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
logger.info(`Waiting for ClickHouse... Attempt ${attempt}/${maxAttempts}`);
|
|
185
|
-
await new Promise(resolve => setTimeout(resolve, retryInterval));
|
|
186
|
-
}
|
|
187
|
-
throw new Error(`ClickHouse failed to start after ${maxAttempts} attempts`);
|
|
85
|
+
await sharedWaitForClickHouse({
|
|
86
|
+
config,
|
|
87
|
+
maxAttempts,
|
|
88
|
+
retryDelayMs: retryInterval,
|
|
89
|
+
logger: (message) => logger.info(message),
|
|
90
|
+
});
|
|
188
91
|
};
|
|
189
92
|
// Stop the ClickHouse container
|
|
190
93
|
export const stopClickHouseContainer = async () => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
logger.info(`Using Docker Compose file at: ${composePath}`);
|
|
198
|
-
// Make sure we're executing the command from the correct directory
|
|
199
|
-
await execAsync(`docker compose -f "${composePath}" down -v`);
|
|
200
|
-
}
|
|
201
|
-
catch (error) {
|
|
202
|
-
logger.error('Failed to stop ClickHouse container with Docker Compose:', error);
|
|
203
|
-
// Log the error but don't throw, so the tests can complete
|
|
204
|
-
// This allows for manual cleanup if needed
|
|
205
|
-
}
|
|
94
|
+
try {
|
|
95
|
+
const compose = await detectComposeCommand();
|
|
96
|
+
await sharedStopClickHouseContainer({
|
|
97
|
+
compose,
|
|
98
|
+
logger: (message) => logger.info(message),
|
|
99
|
+
});
|
|
206
100
|
}
|
|
207
|
-
|
|
208
|
-
logger.
|
|
209
|
-
try {
|
|
210
|
-
await execAsync('docker stop hypequery-test-clickhouse && docker rm hypequery-test-clickhouse');
|
|
211
|
-
}
|
|
212
|
-
catch (error) {
|
|
213
|
-
logger.error('Failed to stop ClickHouse container with Docker:', error);
|
|
214
|
-
// Log the error but don't throw, so the tests can complete
|
|
215
|
-
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error('Failed to stop ClickHouse container:', error);
|
|
216
103
|
}
|
|
217
104
|
};
|
|
218
|
-
|
|
219
|
-
if (!value) {
|
|
220
|
-
return value;
|
|
221
|
-
}
|
|
222
|
-
if (value.includes('T')) {
|
|
223
|
-
return value.split('T')[0];
|
|
224
|
-
}
|
|
225
|
-
if (value.includes(' ')) {
|
|
226
|
-
return value.split(' ')[0];
|
|
227
|
-
}
|
|
228
|
-
return value;
|
|
229
|
-
}
|
|
230
|
-
function normalizeTestData() {
|
|
231
|
-
const testTable = (rawTestData.test_table ?? []).map(row => ({
|
|
232
|
-
id: row.id,
|
|
233
|
-
name: row.name,
|
|
234
|
-
category: row.category,
|
|
235
|
-
price: row.price,
|
|
236
|
-
created_at: normalizeDateValue(row.created_at),
|
|
237
|
-
is_active: row.is_active,
|
|
238
|
-
tags: row.tags ?? [],
|
|
239
|
-
}));
|
|
240
|
-
const users = (rawTestData.users ?? []).map(row => ({
|
|
241
|
-
id: row.id,
|
|
242
|
-
user_name: row.user_name,
|
|
243
|
-
email: row.email,
|
|
244
|
-
status: row.status,
|
|
245
|
-
created_at: normalizeDateValue(row.created_at)
|
|
246
|
-
}));
|
|
247
|
-
const orders = (rawTestData.orders ?? []).map(row => ({
|
|
248
|
-
id: row.id,
|
|
249
|
-
user_id: row.user_id,
|
|
250
|
-
product_id: row.product_id,
|
|
251
|
-
quantity: row.quantity,
|
|
252
|
-
total: row.total,
|
|
253
|
-
status: row.status,
|
|
254
|
-
created_at: normalizeDateValue(row.created_at)
|
|
255
|
-
}));
|
|
256
|
-
return { test_table: testTable, users, orders };
|
|
257
|
-
}
|
|
258
|
-
// Test data
|
|
259
|
-
export const TEST_DATA = normalizeTestData();
|
|
105
|
+
export { CLICKHOUSE_CONTAINER_NAME, TEST_CONNECTION_CONFIG, TEST_DATA };
|
|
260
106
|
let hasSetupRun = false;
|
|
261
107
|
// Setup the test database
|
|
262
108
|
export const setupTestDatabase = async () => {
|
|
@@ -267,79 +113,12 @@ export const setupTestDatabase = async () => {
|
|
|
267
113
|
if (hasSetupRun) {
|
|
268
114
|
return;
|
|
269
115
|
}
|
|
270
|
-
// Make sure connection is initialized before getting client
|
|
271
|
-
const client = ensureConnectionInitialized();
|
|
272
116
|
try {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
await client.exec({ query: 'DROP TABLE IF EXISTS test_table' });
|
|
278
|
-
await client.exec({ query: 'DROP TABLE IF EXISTS users' });
|
|
279
|
-
await client.exec({ query: 'DROP TABLE IF EXISTS orders' });
|
|
280
|
-
// Create tables
|
|
281
|
-
await client.exec({
|
|
282
|
-
query: `
|
|
283
|
-
CREATE TABLE test_table (
|
|
284
|
-
id UInt32,
|
|
285
|
-
name String,
|
|
286
|
-
category String,
|
|
287
|
-
price Float64,
|
|
288
|
-
created_at Date,
|
|
289
|
-
is_active Boolean,
|
|
290
|
-
tags Array(String)
|
|
291
|
-
) ENGINE = MergeTree()
|
|
292
|
-
ORDER BY id
|
|
293
|
-
`
|
|
294
|
-
});
|
|
295
|
-
await client.exec({
|
|
296
|
-
query: `
|
|
297
|
-
CREATE TABLE users (
|
|
298
|
-
id UInt32,
|
|
299
|
-
user_name String,
|
|
300
|
-
email String,
|
|
301
|
-
status String,
|
|
302
|
-
created_at Date
|
|
303
|
-
) ENGINE = MergeTree()
|
|
304
|
-
ORDER BY id
|
|
305
|
-
`
|
|
306
|
-
});
|
|
307
|
-
await client.exec({
|
|
308
|
-
query: `
|
|
309
|
-
CREATE TABLE orders (
|
|
310
|
-
id UInt32,
|
|
311
|
-
user_id UInt32,
|
|
312
|
-
product_id UInt32,
|
|
313
|
-
quantity UInt32,
|
|
314
|
-
total Float64,
|
|
315
|
-
status String,
|
|
316
|
-
created_at Date
|
|
317
|
-
) ENGINE = MergeTree()
|
|
318
|
-
ORDER BY id
|
|
319
|
-
`
|
|
117
|
+
await seedClickHouseDatabase({
|
|
118
|
+
config,
|
|
119
|
+
data: TEST_DATA,
|
|
120
|
+
logger: (message) => logger.info(message),
|
|
320
121
|
});
|
|
321
|
-
// Insert test data
|
|
322
|
-
for (const row of TEST_DATA.test_table) {
|
|
323
|
-
await client.insert({
|
|
324
|
-
table: 'test_table',
|
|
325
|
-
values: [row],
|
|
326
|
-
format: 'JSONEachRow'
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
for (const row of TEST_DATA.users) {
|
|
330
|
-
await client.insert({
|
|
331
|
-
table: 'users',
|
|
332
|
-
values: [row],
|
|
333
|
-
format: 'JSONEachRow'
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
for (const row of TEST_DATA.orders) {
|
|
337
|
-
await client.insert({
|
|
338
|
-
table: 'orders',
|
|
339
|
-
values: [row],
|
|
340
|
-
format: 'JSONEachRow'
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
122
|
hasSetupRun = true;
|
|
344
123
|
logger.info('Test database setup complete');
|
|
345
124
|
}
|
package/dist/core/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAc9C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAgBvE"}
|
package/dist/core/utils.js
CHANGED
|
@@ -6,7 +6,8 @@ export function escapeValue(value) {
|
|
|
6
6
|
return value.toString();
|
|
7
7
|
}
|
|
8
8
|
else if (typeof value === 'string') {
|
|
9
|
-
|
|
9
|
+
const escaped = value.replace(/\\/g, '\\\\').replace(/'/g, "''");
|
|
10
|
+
return `'${escaped}'`;
|
|
10
11
|
}
|
|
11
12
|
else if (value instanceof Date) {
|
|
12
13
|
return `'${value.toISOString()}'`;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickHouse Semantic Backend
|
|
3
|
+
*
|
|
4
|
+
* This module implements the SemanticBackend interface from @hypequery/datasets
|
|
5
|
+
* for ClickHouse databases. It translates database-agnostic semantic plans
|
|
6
|
+
* (PlanNode) into ClickHouse-specific SQL and executes them.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - @hypequery/datasets: Owns semantic planning, validation, and execution protocol
|
|
10
|
+
* - @hypequery/clickhouse: Implements SQL translation and execution for ClickHouse
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { createDatasetClient } from '@hypequery/datasets';
|
|
15
|
+
* import { createBackend } from '@hypequery/clickhouse';
|
|
16
|
+
*
|
|
17
|
+
* const analytics = createDatasetClient({
|
|
18
|
+
* backend: createBackend({
|
|
19
|
+
* url: process.env.CLICKHOUSE_URL,
|
|
20
|
+
* username: process.env.CLICKHOUSE_USER,
|
|
21
|
+
* password: process.env.CLICKHOUSE_PASSWORD,
|
|
22
|
+
* database: process.env.CLICKHOUSE_DATABASE,
|
|
23
|
+
* })
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
import { type SemanticBackend } from '@hypequery/datasets';
|
|
28
|
+
import type { CreateQueryBuilderConfig } from './core/query-builder.js';
|
|
29
|
+
import type { SchemaDefinition } from './core/types/builder-state.js';
|
|
30
|
+
export type CreateBackendConfig = CreateQueryBuilderConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Create ClickHouse Semantic Backend
|
|
33
|
+
*
|
|
34
|
+
* Creates a SemanticBackend implementation that translates database-agnostic
|
|
35
|
+
* semantic plans into ClickHouse SQL and executes them.
|
|
36
|
+
*
|
|
37
|
+
* @param config - ClickHouse connection configuration
|
|
38
|
+
* @returns SemanticBackend interface for executing semantic queries
|
|
39
|
+
*/
|
|
40
|
+
export declare function createBackend<Schema extends SchemaDefinition<Schema>>(config: CreateBackendConfig): SemanticBackend;
|
|
41
|
+
//# sourceMappingURL=datasets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../src/datasets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAuW3D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACnE,MAAM,EAAE,mBAAmB,GAC1B,eAAe,CAmDjB"}
|