testcontainers / testcontainers/testcontainers-java

[Enhancement]: Support running init script against a specific database

Offen
#8,634 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

type/enhancement
Vorherrschende Sprache
Java
Sterne
8.7k
Forks
1.9k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
9

Beschreibung

Module

PostgreSQL

Proposal
  new PostgreSQLContainer<>("postgres").withInitScript("init.sql");

init.sql

CREATE DATABASE example;

\c example

CREATE SCHEMA example;

does not work because the Postgres JDBC driver does not support the \c psql meta-command to switch databases.

This is similar to #7680 and its predecessors #2578, #1997, and #2232.

But in this use case one would would need to specify the database in addition to the init script path.

Something along the lines of:

      new PostgreSQLContainer<>("postgres")
          .withInitScript("createDatabase.sql") // CREATE DATABASE example;
          .withInitScriptForDatabase("example", "createSchema.sql"); // CREATE SCHEMA example;

      new PostgreSQLContainer<>("postgres")
          .withInitScript("createDatabases.sql") // CREATE DATABASE example1; CREATE DATABASE example2;
          .withInitScriptForDatabase("example1", "createExample1Schema.sql"); // CREATE SCHEMA example1;
          .withInitScriptForDatabase("example2", "createExample2Schema.sql"); // CREATE SCHEMA example2;

Note:

new PostgreSQLContainer<>("postgres")
          .withDatabaseName("example")
          ...;

will auto-create the example database but the DDL above would be in reality more complex like:

CREATE DATABASE example WITH OWNER example_admin TEMPLATE template0
  ENCODING UTF8 LC_COLLATE 'de_DE.UTF8' LC_CTYPE 'de_DE.UTF8';

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit der Überprüfung des bestehenden Init-Skript-Verhaltens des PostgreSQL-Containers und der zugehörigen Issues #7680, #2578, #1997 und #2232. Definieren Sie, wie Skripte trotz der fehlenden Unterstützung des JDBC-Treibers für psql-Metabefehle auf benannte Datenbanken zielen; als erledigt gilt die Aufgabe, wenn die vorgeschlagene API Datenbanken erstellen und jedes Schema-Skript für die angegebene Datenbank ausführen kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, postgresql
Bereich
databases
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.