0) { return $callback(); } $result = null; $exception = null; \Swoole\Coroutine\run(static function () use ($callback, &$result, &$exception): void { try { $result = $callback(); } catch (\Throwable $e) { $exception = $e; } }); if ($exception !== null) { throw $exception; } return $result; } public function test_orders_daily_by_paid_matview_exists(): void { $rows = $this->runInCoroutine(static fn () => Db::select( "SELECT matviewname FROM pg_matviews WHERE matviewname = 'orders_daily_by_paid'" )); $this->assertCount(1, $rows); } public function test_orders_daily_by_paid_has_six_indexes(): void { $rows = $this->runInCoroutine(static fn () => Db::select( "SELECT indexname FROM pg_indexes WHERE tablename = 'orders_daily_by_paid'" )); $this->assertCount(6, $rows, '应有 1 UNIQUE + 5 复合 = 6 个索引'); } public function test_orders_daily_by_created_refresh_policy_registered(): void { $rows = $this->runInCoroutine(static fn () => Db::select( "SELECT job_id FROM timescaledb_information.jobs WHERE proc_name = 'policy_refresh_continuous_aggregate' AND hypertable_name = 'orders_daily_by_created'" )); $this->assertCount(1, $rows); } }