/** * pg_restore 二进制解析:显式 BACKUPDRILL_PG_RESTORE 最高优先;否则从 * BACKUPDRILL_PG_DUMP 同目录推导。推导未命中(结果仍含 pg_dump 或与原值相同, * 如指向包装脚本/带版本后缀的路径)时回退到 PATH 上的 pg_restore—— * 绝不能把 pg_dump 当恢复器执行。 */ export declare function resolvePgRestoreBin(): string; /** * psql 二进制(带 Auth 的恢复由它执行单事务):显式 BACKUPDRILL_PSQL 最高优先;否则和 pg_restore 同目录 * (resolvePgRestoreBin 以 pg_restore 结尾时换成 psql),它们是同一个客户端包;推不出来就用 PATH 上的 psql */ export declare function resolvePsqlBin(): string; /** `<工具> --version` 里的完整版本号(17.6 → [17, 6]);拿不到 → null */ export declare function localToolVersion(bin: string): Promise<[number, number] | null>; /** * Parse the major version out of `pg_dump --version` output. * * MUST tolerate a trailing vendor suffix: Homebrew/macOS prints `pg_dump (PostgreSQL) 17.2`, but * Debian/PGDG (what the deployed worker image uses) prints * `pg_dump (PostgreSQL) 17.10 (Debian 17.10-1.pgdg120+1)`. Anchoring the match to end-of-string * therefore breaks in production while passing on a dev Mac. Anchor on the `(PostgreSQL)` marker * instead, falling back to the first dotted version token for non-standard builds. */ export declare function parsePgDumpMajor(raw: string): number | null; /** 本地 pg_restore 主版本(拿不到 → null,由调用方决定 fail-open 还是 fail-closed)。 */ export declare function localPgRestoreMajor(): Promise; /** * pg_restore 17 起每次恢复都先发 `SET transaction_timeout = 0`,这个参数 PostgreSQL 17 * 才有,恢复进 16 及更老的服务端第一句就报 unrecognized configuration parameter。 * 上游定性为设计如此(pgsql-bugs 2024-10),不会修,只能绕开。 */ export declare function restoreToolBreaksOnTarget(toolMajor: number, targetMajor: number): boolean; /** * 恢复前的工具/目标版本闸:返回拒绝理由,可放行时返回 null。dry-run 与正式恢复共用, * 保证两条路径的判定和给用户的出路一字不差。出路有两条:目标升到 17+;或当归档 * 本身只需要 ≤16 的 pg_restore(旧版 pg_dump 写的)时,换一个与目标同版本的旧客户端。 */ export declare function restoreToolTargetBlocker(toolMajor: number, targetMajor: number, requiredMajor: number): string | null; /** * 演练沙箱的主版本:源库与本机 pg_restore 取大者。pg_dump/pg_restore 的输出只保证能进 * 与工具同版本或更新的服务端(官方文档原话:不保证能载入更老的主版本)——除了 * restoreToolBreaksOnTarget 这条已知的,还有新版 pg_dump 生成旧服务端不认识的语法 * (交叉审查实测:pg_dump 18 导 PG17 的继承表)。往更新的主版本恢复是官方支持的方向, * 反过来要求用户装与源库同版本的旧工具行不通(旧 pg_restore 读不了新 pg_dump 的归档)。 * 拿不到工具版本时退回源版本。 */ export declare function sandboxMajorFor(sourceMajor: number, toolMajor: number | null): number;