To je nedorozumění. Postgres „nemění formát“. Původní řetězec SQL prostě není vůbec uložen .
Dotaz je analyzován a přepsán a v závislosti na druhu dotazu je provedena akce. Například , když vytvoříte zobrazení , výsledky jsou uloženy v systémových katalozích, většinou pg_class
a pg_rewrite
.
Musíte si také uvědomit, že všechny identifikátory jsou vyřešeny v době vytvoření databázového objektu, přičemž se bere aktuální search_path
a viditelnost v úvahu (včasná vazba). Stejný řetězec dotazu může později znamenat něco jiného, pokud se prostředí nějak změní.
To, co uvidíte později, je přepracováno verze vytvořená z těchto záznamů. Existují některé vestavěné funkce pomoci s tím, ale je do značné míry na klientovi, jak naformátovat reverzně vyvinutý kód SQL.
Funkce jsou výjimkou (částečně). Tělo funkce je předáno jako řetězec a uloženo tak jak je , přesně tak, jak bylo předáno, s (aktuálně) pouze povrchním testováním syntaxe a ověřováním objektů. Pokud chcete rychlý způsob, jak „uložit“ dotaz včetně jeho formátu v Postgresu, můžete použít například funkci PL/pgSQL.
Obecným přístupem je mít nezávislé úložiště kódu, jako je @Mike již navrhl - nebo se o formát příliš nestarat.