驱动 behaviour 契约 / Driver contract — 各数据库驱动实现同一组回调(ensure_table/lock/set_version 等)。
-callback applied_versions(Conn :: term(), HistTable :: binary()) -> {ok, [integer()]} | {error, term()}.
-callback current_version(Conn :: term(), Table :: binary()) -> {ok, integer() | undefined, boolean()} | {error, term()}.
-callback drop_table(Conn :: term(), Table :: binary()) -> ok | {error, term()}.
-callback ensure_table(Conn :: term(), Table :: binary()) -> ok | {error, term()}.
-callback exec_sql(Conn :: term(), SQL :: binary()) -> ok | {error, term()}.
-callback is_dirty(Conn :: term(), Table :: binary()) -> {ok, boolean()} | {error, term()}.
-callback lock(Conn :: term(), LockId :: integer(), TimeoutMs :: integer()) -> ok | {error, lock_timeout} | {error, term()}.
-callback set_version(Conn :: term(), Table :: binary(), Version :: integer() | undefined, Dirty :: boolean()) -> ok | {error, term()}.
-callback unlock(Conn :: term(), LockId :: integer()) -> ok.