1<?php23declare(strict_types=1);45namespaceTests\Fake;67useZtdQuery\Rewrite\MultiRewritePlan;8useZtdQuery\Rewrite\RewritePlan;9useZtdQuery\Rewrite\SqlRewriter;10useZtdQuery\Sql\TransactionStatement;1112/**13 * A rewriter that answers the same plan whatever it is given.14 *15 * A test about what the session does with a plan has no interest in how the16 * plan was arrived at.17 */18finalclassFixedRewriterimplementsSqlRewriter19{20/**21 * Transaction statement.22 *23 * @param string $sql24 * @return ?TransactionStatement25 */26publicfunctiontransactionStatement(string$sql): ?TransactionStatement27 {28returnnull;29 }3031/**32 * Predefined plan to return from rewrite().33 *34 * @var RewritePlan35 */36privateRewritePlan$plan;3738/**39 * Binds the instance to what it will work from.40 *41 * @param RewritePlan $plan42 */43publicfunction__construct(RewritePlan$plan)44 {45$this->plan = $plan;46 }4748/**49 * Rewrite.50 *51 * @param string $sql52 * @return RewritePlan53 */54publicfunctionrewrite(string$sql): RewritePlan55 {56return$this->plan;57 }5859/**60 * Split statements.61 *62 * @param string $sql63 */64publicfunctionsplitStatements(string$sql): array65 {66return [$sql];67 }6869/**70 * Rewrite multiple.71 *72 * @param string $sql73 * @return MultiRewritePlan74 */75publicfunctionrewriteMultiple(string$sql): MultiRewritePlan76 {77returnnewMultiRewritePlan([$this->plan]);78 }7980/**81 * Empty result select.82 *83 * @return string84 */85publicfunctionemptyResultSelect(): string86 {87return'SELECT 1 WHERE FALSE';88 }89}90