Das ist ein Missverständnis. Postgres "ändert das Format nicht". Der ursprüngliche SQL-String wird überhaupt nicht gespeichert .
Die Abfrage wird analysiert und neu geschrieben, und je nach Art der Abfrage werden Maßnahmen ergriffen. Zum Beispiel , wenn Sie Ansicht erstellen , werden die Ergebnisse in Systemkatalogen gespeichert, meistens pg_class
und pg_rewrite
.
Sie müssen sich auch bewusst sein, dass alle Bezeichner zum Zeitpunkt der Erstellung eines Datenbankobjekts aufgelöst werden, wobei der aktuelle search_path
und Sichtbarkeit berücksichtigt (Early Binding). Die gleiche Abfragezeichenfolge kann später etwas anderes bedeuten, wenn sich die Umgebung in irgendeiner Weise ändert.
Was Sie später sehen, ist ein re-engineered Version, die aus diesen Einträgen erstellt wurde. Es gibt einige eingebaute Funktionen um dabei zu helfen, aber es liegt weitgehend beim Kunden, wie er zurückentwickelten SQL-Code formatiert.
Funktionen sind (teilweise) eine Ausnahme. Der Funktionsrumpf wird als String übergeben und wie er ist gespeichert , genau wie bestanden, mit (derzeit) nur oberflächlicher Syntaxprüfung und Validierung von Objekten. Wenn Sie eine Abfrage einschließlich ihres Formats schnell in Postgres "speichern" möchten, können Sie beispielsweise eine PL/pgSQL-Funktion verwenden.
Der allgemeine Ansatz besteht darin, ein unabhängiges Code-Repository wie @Mike bereits vorgeschlagen zu haben - oder sich nicht zu sehr um das Format zu kümmern.