Diese Hinweise beschreiben, wie SQL-Skripte im CDS-HUB gepflegt werden und welche Prüfungen in GitHub Actions laufen.
Die SQL-Dateien unter Postgres-cds_hub/sql/ bleiben im Repository sichtbar und
können in GitHub je Version gelesen und verglichen werden.
Ein Teil dieser Dateien wird jedoch aus Templates erzeugt. Diese Dateien enthalten im Kopf den Hinweis:
-- This file is generated. Changes should only be made by regenerating the file.
Solche Dateien sollen nicht direkt geändert werden. Die fachliche Änderung erfolgt an den Quellen, also an Templates, Excel-Definitionen oder Generator-Code. Danach werden die SQL-Dateien neu erzeugt und mitcommitted.
Postgres-cds_hub/generated/sql/ nach Postgres-cds_hub/sql/ übernehmen und
Quellen plus erzeugte SQL-Dateien gemeinsam committen.Postgres-cds_hub/sql/, nicht das lokale generated/sql/-Verzeichnis.Manuell gepflegte SQL-Dateien sind insbesondere:
Postgres-cds_hub/sql/init/*.sqlPostgres-cds_hub/sql/recalculations/*.sqlPostgres-cds_hub/sql/base/000_stop_semapore_during_run.sqlPostgres-cds_hub/sql/base/020_db_config_tools.sqlPostgres-cds_hub/sql/base/030_db_parameter.sqlPostgres-cds_hub/sql/base/035_db_log_table_structure.sqlPostgres-cds_hub/sql/base/950_cro_job.sqlPostgres-cds_hub/sql/base/980_dev_and_test.sqlPostgres-cds_hub/sql/base/999_start_semapore_after_run.sqlWenn nur eine dieser Dateien geändert wird, muss der SQL-Generator nicht lokal ausgeführt werden.
Generierte Ergebnisdateien liegen vor allem unter:
Postgres-cds_hub/sql/start.sqlPostgres-cds_hub/sql/base/*.sql mit generiertem HeaderDie Quellen für diese Dateien sind:
Postgres-cds_hub/sql/template/User_Schema_Rights_Definition.xlsxPostgres-cds_hub/sql/template/*.sqlR-cds2db/cds2db/inst/extdata/Table_Description.xlsxR-db2frontend/db2frontend/inst/extdata/Frontend_Table_Description.xlsxPostgres-cds_hub/R-initcdstoolchain/initcdstoolchain/R/Init_02_Create_Database_Scripts.RPostgres-cds_hub/sql/ ändern.Wenn die Formatierung nicht passt, kann der Workflow Format SQL in GitHub manuell gestartet werden. Dieser Workflow formatiert die manuell gepflegten SQL-Dateien und committet die Änderungen zurück in den Branch.
Für Entwicklung ohne lokale Formatter-Installation, z.B. unter Windows mit einem einfachen Texteditor, ist das der empfohlene Weg:
Der Workflow muss nur gestartet werden, wenn SQL-Formatierung fehlt oder lokal
kein pg_format verfügbar ist. Bei reinen Template-/Excel-Änderungen ersetzt er
keinen Generatorlauf.
Lokal kann die Formatierung der manuell gepflegten SQL-Dateien ebenfalls
ausgeführt werden, wenn pg_format installiert ist:
tools/format-sql.sh
Der lokale Format-Check ist:
tools/check-sql-format.sh
Dieser Check prüft standardmäßig nur manuell gepflegte SQL-Dateien und ist deshalb schnell.
Wenn Templates, Excel-Definitionen oder Generator-Code geändert werden, müssen die generierten SQL-Dateien aktualisiert und mitcommitted werden.
Mit lokal installierter R-Umgebung und pg_format:
bash Postgres-cds_hub/generate-sql.sh
cp -R Postgres-cds_hub/generated/sql/. Postgres-cds_hub/sql/
Der Generator übernimmt bei unverändertem SQL-Inhalt die bestehenden Header der
versionierten Datei. Reine Änderungen an volatilen Header-Metadaten wie
Create time erzeugen dadurch beim Kopieren keine Git-Diffs.
Danach sollten die Änderungen an Templates, Excel-Dateien und den erzeugten SQL-Dateien gemeinsam committed werden.
Der Drift-Check prüft, ob die versionierten generierten SQL-Dateien zum aktuellen Generatoroutput passen:
tools/check-generated-sql.sh
Dieser Check dauert mehrere Minuten, weil der komplette SQL-Output neu erzeugt, formatiert und verglichen wird.
Der Workflow SQL checks erkennt geänderte Dateien und startet nur die nötigen
Jobs:
sql-format.generated-sql-drift.Der Workflow Format SQL kann manuell gestartet werden, wenn SQL-Dateien auf
GitHub formatiert werden sollen. Er formatiert die manuell gepflegten
SQL-Dateien. Das ist besonders hilfreich, wenn lokal kein Formatter installiert
ist.
Beim Start über Docker Compose verwendet die CDS_HUB-Datenbank die versionierten
SQL-Dateien unter Postgres-cds_hub/sql/. Es wird beim Start kein zusätzlicher
Generatorlauf ausgeführt.
Die versionierten SQL-Dateien bleiben damit die einzige direkt verwendete Installationsfassung für Review, Historie und Docker-Betrieb. Die CI stellt sicher, dass die generierten Dateien nicht vom Generatoroutput abweichen.