testcontainers / testcontainers/testcontainers-java
[Enhancement]: Support running init script against a specific database
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 8.7k
- Forks
- 1.9k
- Merge medio
- 2 d 17 h
- PR fusionados (30 d)
- 9
Descripción
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';
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comience revisando el comportamiento existente del script de inicialización del contenedor de PostgreSQL y los issues relacionados #7680, #2578, #1997 y #2232. Defina cómo los scripts pueden dirigirse a bases de datos con nombre a pesar de que el controlador JDBC no admite los metacomandos de psql; se considerará completado cuando la API propuesta pueda crear bases de datos y ejecutar cada script de esquema contra la base de datos especificada.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java, postgresql
- Área
- databases
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 30/100