To nieporozumienie. Postgres nie „zmienia formatu”. Oryginalny ciąg SQL po prostu nie jest przechowywany w ogóle .
Zapytanie jest analizowane i przepisywane iw zależności od rodzaju zapytania podejmowane są działania. Na przykład , podczas tworzenia widoku , wyniki są przechowywane w katalogach systemowych, głównie pg_class
i pg_rewrite
.
Musisz również mieć świadomość, że wszystkie identyfikatory są rozwiązywane w czasie tworzenia obiektu bazy danych, biorąc bieżące search_path
i widoczność pod uwagę (wczesne wiązanie). Ten sam ciąg zapytania może później oznaczać coś innego, jeśli środowisko zmieni się w jakikolwiek sposób.
To, co zobaczysz później, to przeprojektowany wersja zbudowana z tych wpisów. Istnieje kilka funkcje wbudowane aby w tym pomóc, ale w dużej mierze od klienta zależy, jak sformatować kod SQL poddany inżynierii wstecznej.
Funkcje są wyjątkiem (częściowo). Treść funkcji jest przekazywana jako ciąg znaków i zapisywana tak jak jest , dokładnie tak, jak przeszło, z (obecnie) tylko powierzchownym testowaniem składni i walidacją obiektów. Jeśli chcesz w szybki sposób "zapisać" zapytanie, w tym jego format w Postgresie, możesz na przykład użyć funkcji PL/pgSQL.
Ogólnym podejściem jest posiadanie niezależnego repozytorium kodu, takiego jak @Mike już sugerował - lub nie dbać zbytnio o format.