testcontainers / testcontainers/testcontainers-java
[Enhancement]: Support running init script against a specific database
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 9
Description
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';
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner le comportement existant du script d'initialisation du conteneur PostgreSQL ainsi que les issues associées #7680, #2578, #1997 et #2232. Définissez comment les scripts ciblent des bases de données nommées malgré l'absence de prise en charge des méta-commandes psql par le pilote JDBC ; le travail sera considéré comme terminé lorsque l'API proposée pourra créer des bases de données et exécuter chaque script de schéma sur la base de données spécifiée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, postgresql
- Domaine
- databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 30/100