base tables only — views are not data */ public function tables(): array; public function createStatement(string $table): string; /** @return list */ public function columns(string $table): array; /** @return list the primary key's columns, in key order */ public function primaryKey(string $table): array; /** * One chunk of rows, values as strings (or null), in the column order asked for. * * With $key set: rows whose $key is greater than $after (null = from the * start), ordered by it. Without: $limit rows from $offset. * * @param list $columns * @return list> */ public function rows(string $table, array $columns, ?string $key, string|int|null $after, bool $numericKey, int $offset, int $limit): array; /** The server's estimate of a row's size in bytes, 0 when it has none. Sizes the first chunk. */ public function averageRowLength(string $table): int; public function charset(): string; /** A consistent read for the whole dump, in UTC so TIMESTAMP values round-trip. */ public function beginSnapshot(): void; public function endSnapshot(): void; }