semanticdb-v2 2.0.0-alpha.6 → 2.0.0-alpha.8

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.
Files changed (43) hide show
  1. package/README.md +125 -9
  2. package/dist/cache/index.d.ts +2 -1
  3. package/dist/cache/manager.d.ts +5 -0
  4. package/dist/cache/registry.d.ts +14 -0
  5. package/dist/cache/types.d.ts +15 -0
  6. package/dist/close.d.ts +1 -0
  7. package/dist/executor/connection-registry.d.ts +1 -12
  8. package/dist/executor/types.d.ts +8 -4
  9. package/dist/index.d.ts +6 -7
  10. package/dist/logicform-types.d.ts +1 -12
  11. package/dist/normalizer/core.d.ts +9 -0
  12. package/dist/operators/index.d.ts +1 -1
  13. package/dist/operators/registry.d.ts +4 -2
  14. package/dist/operators/types.d.ts +23 -14
  15. package/dist/physical/clickhouse-provider.d.ts +15 -1
  16. package/dist/physical/connection-registry.d.ts +13 -0
  17. package/dist/physical/dameng-provider.d.ts +6 -1
  18. package/dist/physical/databricks-provider.d.ts +6 -1
  19. package/dist/physical/db-connector.d.ts +23 -0
  20. package/dist/physical/index.d.ts +4 -1
  21. package/dist/physical/maxcompute-provider.d.ts +8 -1
  22. package/dist/physical/mysql-protocol-provider.d.ts +4 -1
  23. package/dist/physical/oracle-provider.d.ts +6 -1
  24. package/dist/physical/postgresql-provider.d.ts +6 -1
  25. package/dist/physical/provider.d.ts +45 -0
  26. package/dist/physical/snowflake-provider.d.ts +5 -1
  27. package/dist/physical/sqlserver-provider.d.ts +5 -1
  28. package/dist/physical/table-description.d.ts +5 -0
  29. package/dist/physical/table-discovery.d.ts +10 -0
  30. package/dist/planner/semantics/registry.d.ts +2 -1
  31. package/dist/plugins/observation/operator-policy.d.ts +2 -2
  32. package/dist/semantic-types/types.d.ts +3 -0
  33. package/dist/semanticdb.esm.js +5 -4
  34. package/dist/semanticdb.js +5 -4
  35. package/package.json +1 -1
  36. package/dist/cache/redis-query-cache.esm.js +0 -1
  37. package/dist/cache/redis-query-cache.js +0 -1
  38. package/dist/calendar/constants.d.ts +0 -7
  39. package/dist/calendar/index.d.ts +0 -6
  40. package/dist/calendar/provider-relation-store.d.ts +0 -9
  41. package/dist/calendar/resolver.d.ts +0 -10
  42. package/dist/calendar/system-schemas.d.ts +0 -3
  43. package/dist/calendar/types.d.ts +0 -31
@@ -1,10 +1,14 @@
1
- import type { CoreComputeProvider, DataRow, DatePart, ProviderExecutionRequest, SqlParameters } from './provider';
1
+ import type { CoreComputeProvider, DataRow, DatePart, ProviderExecutionRequest, SqlParameters, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  /**
3
3
  * Parameterized MaxCompute execution boundary supplied by the application.
4
4
  * Implementations must bind `parameters`; they must not interpolate them into `sql`.
5
5
  */
6
6
  export interface MaxComputeClientLike {
7
7
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
8
+ /** Optional command metadata and project/schema-aware discovery extensions. */
9
+ runSQL?(request: ProviderExecutionRequest): Promise<SQLResult>;
10
+ getTableList?(request: TableListRequest): Promise<DatabaseTable[]>;
11
+ describeTable?(request: DescribeTableRequest): Promise<TableDescription>;
8
12
  close(): Promise<void>;
9
13
  }
10
14
  export interface MaxComputeConnectionOptions {
@@ -33,5 +37,8 @@ export declare class MaxComputeProvider implements CoreComputeProvider {
33
37
  stringLength(expression: string): string;
34
38
  regex(expression: string, pattern: string, options?: string): string;
35
39
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
40
+ runSQL(request: ProviderExecutionRequest): Promise<SQLResult>;
41
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
36
42
  close(): Promise<void>;
43
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
37
44
  }
@@ -1,4 +1,4 @@
1
- import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest, SqlParameters } from './provider';
1
+ import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest, SqlParameters, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  export interface MySQLProtocolPoolLike {
3
3
  execute(sql: string, values: readonly unknown[]): Promise<readonly [unknown, unknown]>;
4
4
  end(): Promise<void>;
@@ -47,5 +47,8 @@ export declare abstract class MySQLProtocolProvider implements CoreComputeProvid
47
47
  readonly valueExpression: string;
48
48
  };
49
49
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
50
+ runSQL(request: ProviderExecutionRequest): Promise<SQLResult>;
51
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
52
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
50
53
  close(): Promise<void>;
51
54
  }
@@ -1,10 +1,12 @@
1
- import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest } from './provider';
1
+ import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  type OracleBind = string | number | boolean | Date | Buffer | null;
3
3
  export interface OracleConnectionLike {
4
4
  execute(sql: string, binds: OracleBind[], options: {
5
5
  readonly outFormat: number;
6
+ readonly autoCommit?: boolean;
6
7
  }): Promise<{
7
8
  readonly rows?: unknown[] | undefined;
9
+ readonly rowsAffected?: number | undefined;
8
10
  }>;
9
11
  break(): Promise<void>;
10
12
  close(): Promise<void>;
@@ -60,6 +62,9 @@ export declare class OracleProvider implements CoreComputeProvider {
60
62
  valueExpression: string;
61
63
  };
62
64
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
65
+ runSQL(request: ProviderExecutionRequest): Promise<SQLResult>;
66
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
67
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
63
68
  close(): Promise<void>;
64
69
  }
65
70
  export {};
@@ -1,7 +1,9 @@
1
- import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest } from './provider';
1
+ import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  export interface PostgreSQLPoolLike {
3
3
  query(sql: string, values: unknown[]): Promise<{
4
4
  readonly rows: unknown;
5
+ readonly rowCount?: number | null;
6
+ readonly command?: string;
5
7
  }>;
6
8
  end(): Promise<void>;
7
9
  }
@@ -48,5 +50,8 @@ export declare class PostgreSQLProvider implements CoreComputeProvider {
48
50
  valueExpression: string;
49
51
  };
50
52
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
53
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
54
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
55
+ runSQL(request: ProviderExecutionRequest): Promise<SQLResult>;
51
56
  close(): Promise<void>;
52
57
  }
@@ -10,6 +10,46 @@ export interface ProviderExecutionRequest {
10
10
  readonly parameters: SqlParameters;
11
11
  readonly signal?: AbortSignal;
12
12
  }
13
+ /** Native SQL results, without semantic hydration or generated row identities. */
14
+ export interface SQLResult {
15
+ readonly rows: DataRow[];
16
+ /** Omitted when the driver does not report an affected-row count. */
17
+ readonly affectedRows?: number;
18
+ }
19
+ export interface DatabaseTable {
20
+ readonly name: string;
21
+ readonly database?: string;
22
+ readonly schema?: string;
23
+ readonly type: 'table' | 'view';
24
+ }
25
+ export interface TableListRequest {
26
+ /** Database/catalog override; unsupported scopes are rejected, not ignored. */
27
+ readonly database?: string;
28
+ readonly schema?: string;
29
+ readonly signal?: AbortSignal;
30
+ }
31
+ export interface DescribeTableRequest extends TableListRequest {
32
+ /** Literal, unqualified physical table name; use database/schema for its namespace. */
33
+ readonly table: string;
34
+ /** Read one example row by default. Disable to inspect metadata only. */
35
+ readonly includeSample?: boolean;
36
+ }
37
+ export interface DatabaseColumn {
38
+ readonly name: string;
39
+ /** Native database type, including size/precision where available. */
40
+ readonly type: string;
41
+ readonly comment: string;
42
+ /** Omitted if the database/adapter cannot report primary-key membership. */
43
+ readonly primaryKey?: boolean;
44
+ /** Omitted for empty tables, disabled sampling, or a failed sample query. */
45
+ readonly exampleValue?: unknown;
46
+ }
47
+ export interface TableDescription {
48
+ readonly columns: DatabaseColumn[];
49
+ readonly tableInfo: DatabaseTable & {
50
+ readonly comment: string;
51
+ };
52
+ }
13
53
  export interface SqlRenderCapabilities {
14
54
  /** Whether HAVING may reference an alias declared in the same SELECT list. */
15
55
  readonly supportsHavingAlias?: boolean;
@@ -53,5 +93,10 @@ export interface CoreComputeProvider extends SqlRenderCapabilities {
53
93
  /** Render bound parameters for diagnostics only; this SQL is never executed by SemanticDB. */
54
94
  displayQuery(sql: string, parameters: SqlParameters): string;
55
95
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
96
+ /** Optional native-SQL capability; execute retains its row-query contract. */
97
+ runSQL?(request: ProviderExecutionRequest): Promise<SQLResult>;
98
+ /** Optional physical metadata capability, independent of semantic Schemas. */
99
+ getTableList?(request: TableListRequest): Promise<DatabaseTable[]>;
100
+ describeTable?(request: DescribeTableRequest): Promise<TableDescription>;
56
101
  close(): Promise<void>;
57
102
  }
@@ -1,7 +1,8 @@
1
- import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest } from './provider';
1
+ import type { CoreComputeProvider, DatePart, DataRow, ProviderExecutionRequest, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  type SnowflakeBind = string | number | boolean | null;
3
3
  export interface SnowflakeStatementLike {
4
4
  cancel(callback?: (error?: Error) => void): void;
5
+ getNumUpdatedRows?(): number | undefined;
5
6
  }
6
7
  export interface SnowflakeConnectionLike {
7
8
  connect(callback: (error?: Error) => void): unknown;
@@ -53,6 +54,9 @@ export declare class SnowflakeProvider implements CoreComputeProvider {
53
54
  valueExpression: string;
54
55
  };
55
56
  execute(request: ProviderExecutionRequest): Promise<DataRow[]>;
57
+ runSQL(request: ProviderExecutionRequest): Promise<SQLResult>;
58
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
59
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
56
60
  close(): Promise<void>;
57
61
  }
58
62
  export {};
@@ -1,9 +1,10 @@
1
- import type { CoreComputeProvider, DataRow, DatePart, ProviderExecutionRequest } from './provider';
1
+ import type { CoreComputeProvider, DataRow, DatePart, ProviderExecutionRequest, SQLResult, DatabaseTable, TableListRequest, DescribeTableRequest, TableDescription } from './provider';
2
2
  type SQLServerBind = string | number | boolean | Date | Buffer | null;
3
3
  export interface SQLServerRequestLike {
4
4
  input(name: string, value: SQLServerBind): this;
5
5
  query(sql: string): Promise<{
6
6
  readonly recordset?: unknown;
7
+ readonly rowsAffected?: readonly number[];
7
8
  }>;
8
9
  cancel(): void;
9
10
  }
@@ -60,6 +61,9 @@ export declare class SQLServerProvider implements CoreComputeProvider {
60
61
  readonly valueExpression: string;
61
62
  };
62
63
  execute(execution: ProviderExecutionRequest): Promise<DataRow[]>;
64
+ runSQL(execution: ProviderExecutionRequest): Promise<SQLResult>;
65
+ getTableList(request: TableListRequest): Promise<DatabaseTable[]>;
66
+ describeTable(request: DescribeTableRequest): Promise<TableDescription>;
63
67
  close(): Promise<void>;
64
68
  }
65
69
  export {};
@@ -0,0 +1,5 @@
1
+ import type { CoreComputeProvider, DataRow, DescribeTableRequest, TableDescription } from './provider';
2
+ export declare const validateDescribeTable: (request: DescribeTableRequest) => void;
3
+ /** INFORMATION_SCHEMA/Oracle expose size separately; PostgreSQL/MySQL already format native types. */
4
+ export declare const columnType: (row: DataRow) => string;
5
+ export declare const describePhysicalTable: (provider: CoreComputeProvider, request: DescribeTableRequest) => Promise<TableDescription>;
@@ -0,0 +1,10 @@
1
+ import type { CoreComputeProvider, DatabaseTable, DataRow, TableListRequest } from './provider';
2
+ export declare const validateTableScope: (request: TableListRequest) => void;
3
+ export declare const rejectTableScope: (provider: CoreComputeProvider, field: "database" | "schema") => never;
4
+ /** Drivers differ in alias casing; never silently discard malformed metadata rows. */
5
+ export declare const metadataValue: (row: DataRow, field: string) => unknown;
6
+ export declare const metadataString: (row: DataRow, field: string) => string;
7
+ export declare const normalizeTableRow: (row: DataRow) => DatabaseTable;
8
+ export declare const normalizeTableMetadata: (rows: DataRow[]) => DatabaseTable[];
9
+ /** Physical metadata SQL only; no semantic Schema resolution belongs here. */
10
+ export declare const discoverTables: (provider: CoreComputeProvider, request: TableListRequest) => Promise<DatabaseTable[]>;
@@ -1,13 +1,14 @@
1
1
  import type { PredItemType } from '../../logicform-types';
2
2
  import type { LogicformType, QueryType } from '../../logicform-types';
3
3
  import type { ResolvedSemanticProperty, ResolvedSemanticSchema } from '../../semantic-types/index';
4
- import type { OperatorDefinition, ResultProperty } from '../../operators/index';
4
+ import type { OperatorDefinition, OperatorExecutionContext, ResultProperty } from '../../operators/index';
5
5
  export interface PlannerSemanticRuleContext {
6
6
  readonly pred: PredItemType;
7
7
  readonly schema: ResolvedSemanticSchema;
8
8
  readonly sourceProperty?: ResolvedSemanticProperty;
9
9
  readonly outputProperty: ResultProperty;
10
10
  readonly operator?: OperatorDefinition;
11
+ readonly executionContext?: OperatorExecutionContext;
11
12
  }
12
13
  export interface PlannerSemanticQueryContext {
13
14
  readonly logicform: LogicformType;
@@ -1,10 +1,10 @@
1
1
  import type { PredItemType } from '../../logicform-types';
2
- import type { OperatorDefinition } from '../../operators/index';
2
+ import type { OperatorDefinition, OperatorExecutionContext } from '../../operators/index';
3
3
  declare const periodBoundaryOperator = "$periodValue";
4
4
  export interface ObservationOperatorPolicy {
5
5
  readonly operator: typeof periodBoundaryOperator;
6
6
  readonly boundary: 'start' | 'end';
7
7
  readonly implicit: boolean;
8
8
  }
9
- export declare const resolveObservationOperatorPolicy: (pred: Pick<PredItemType, "operator" | "args">, operator?: OperatorDefinition) => ObservationOperatorPolicy;
9
+ export declare const resolveObservationOperatorPolicy: (pred: Pick<PredItemType, "operator" | "args">, operator?: OperatorDefinition, executionContext?: OperatorExecutionContext) => ObservationOperatorPolicy;
10
10
  export {};
@@ -50,11 +50,14 @@ export interface ResolvedSemanticProperty extends Omit<SemanticPropertyDraft, 'i
50
50
  export interface SemanticSchemaDraft extends Omit<SchemaTypeDraft, '_id' | 'id' | 'sid' | 'properties' | 'db' | 'from' | 'fromSQL' | 'projections' | keyof SemanticSchemaMetadata | keyof LegacySemanticSchemaMetadata>, SemanticSchemaMetadata {
51
51
  readonly [key: string]: unknown;
52
52
  readonly id: string;
53
+ /** Marks the single Schema whose complete rows are loaded as calendar execution context. */
54
+ readonly is_calendar?: boolean;
53
55
  readonly properties: readonly SemanticPropertyDraft[];
54
56
  }
55
57
  export interface ResolvedSemanticSchema extends Omit<SchemaTypeDraft, '_id' | 'id' | 'sid' | 'properties' | 'db' | 'from' | 'fromSQL' | 'projections' | keyof SemanticSchemaMetadata | keyof LegacySemanticSchemaMetadata>, ResolvedSemanticSchemaMetadata {
56
58
  readonly [key: string]: unknown;
57
59
  readonly id: string;
60
+ readonly is_calendar?: boolean;
58
61
  readonly properties: readonly ResolvedSemanticProperty[];
59
62
  }
60
63
  export interface SemanticTypeNormalizeContext {