/** * ClickHouse 数据库适配器 * 使用 @clickhouse/client 驱动实现 DbAdapter 接口 * ClickHouse 是高性能列式 OLAP 数据库 */ import { BaseAdapter } from './base.js'; import type { QueryResult, SchemaInfo, TableInfo } from '../types/adapter.js'; export declare class ClickHouseAdapter extends BaseAdapter { private client; private config; constructor(config: { host: string; port: number; user?: string; password?: string; database?: string; }); /** * 连接到 ClickHouse 数据库 */ connect(): Promise; /** * 断开数据库连接 */ disconnect(): Promise; /** * 执行 SQL 查询 */ executeQuery(query: string, params?: unknown[]): Promise; /** * 转换参数为 ClickHouse 格式 * * v3.2.9 Bug #51 fix: ClickHouse client 只支持命名参数 ({name:Type}) + 对象 * query_params,不支持位置参数数组 + `?`。如果传入数组,我们生成 * {param1, param2, ...} 并把 query 中按出现顺序的 `{:}` 改写 * 为 `{paramN:}` —— 用户用任意命名都能工作。 * * v3.2.9 Bug #54 fix: 如果 params[0] 是对象(整个数组是对象数组,如 executeBatch), * 直接把对象当 query_params 用 —— 用户传 {id: 1, name: 'a'} → query_params {id: 1, name: 'a'}。 */ private rewriteNamedPlaceholders; /** * 获取数据库结构信息 */ getSchema(): Promise; /** * v4.0.3: fast-path single-table metadata. Public to satisfy DbAdapter.getTableInfo. */ getTableInfo(tableName: string): Promise; /** Internal helper. */ private _getTableInfo; /** * 检查是否为写操作 */ isWriteOperation(query: string): boolean; protected getDialect(): import('../utils/adapter-factory.js').DbType; /** * v3.2.9 Bug #53 fix: ClickHouse driver 不支持 BEGIN/COMMIT 事务语法。 * BaseAdapter 默认实现用 BEGIN/COMMIT 包 execute_script/batch → 报 "Expected TRANSACTION"。 * 强制 useTransaction:false 走逐句 autoCommit 路径,放弃原子性保证(CH 反正没有跨语句事务)。 */ executeScript(query: string, options?: { useTransaction?: boolean; maxStatements?: number; }): Promise; executeBatch(sql: string, paramsList: unknown[][], options?: { useTransaction?: boolean; maxBatchSize?: number; }): Promise; } //# sourceMappingURL=clickhouse.d.ts.map