original(); $table = $this->extractTableNameFromShowColumns($sql); return $this->generatePostgresShowColumns($table); } /** * Extracts table name from a "SHOW FULL COLUMNS" SQL statement. * * @param string $sql The SQL statement * @return string|null The table name if found, or null otherwise */ protected function extractTableNameFromShowColumns($sql) { $pattern = "/SHOW FULL COLUMNS FROM ['\"`]?([^'\"`]+)['\"`]?/i"; if (preg_match($pattern, $sql, $matches)) { return $matches[1]; } return null; } /** * Generates a PostgreSQL-compatible SQL query to mimic MySQL's "SHOW FULL COLUMNS". * * @param string $tableName The table name * @param string $schema The schema name * @return string The generated SQL query */ public function generatePostgresShowColumns($tableName, $schema = "public") { $sql = << 0 AND NOT a.attisdropped AND a.attrelid = ( SELECT c.oid FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relname = '$tableName' AND n.nspname = '$schema' ) ORDER BY a.attnum; SQL; return $sql; } }