Hi spring team

I would like to propose a new feature : expanding the embedded database support with Firebird database.

I think embedded database support is amazing for testing. For now it only supports HSQL, H2 and Derby. Maybe it could be expanded though.

Firebird has a kind of embedded mode, and is open source. It also has a procedural SQL extension, which make it closer to oracle than the other supported types (from my limited understanding). A few years ago i worked on a project which had a large oracle PL/SQL code base, and some kind of embedded support could have been useful. So i thought Firebird could be a candidate for inclusion in embedded database support.

Looking into how to use Firebird in embedded mode from a java program, i found an example : https://github.com/mrotteveel/jaybird-embedded-example

It basically requires to embed the required binaries in a jar. The database itself is not really in memory, it needs a file on the filesystem. That would be the two major challenges for such a feature, especially the binary part. As for the file part i guess it would need to be configurable.

I have a basic EmbeddedDatabaseConfigurer implementation working, largely inspired by the previous example, and does not seem too complicated.

Would such a feature be considered useful? And considered for inclusion in the framework?

Thank you for your feedback

Comment From: snicoll

Firebird has a kind of embedded mode

Kind of, as you say indeed. I don't think having to use JNA qualifies Firebird as a valid candidate for the core framework. I am flagging this issue for team attention to see what the rest of the team thinks.

Comment From: jmaniquet

My wording may have been ambiguous. By 'inclusion in the framework', i never meant that : - the firebird binaries should be included directly in the core framework - or that the core framework should have a direct dependency on JNA

I meant that : - The spring-jdbc module would only provide a new implementation of EmbeddedDatabaseConfigurer - The handling of the firebird binaries would be delegated to another library, which does not exist for now. That is what i meant by 'major challenge'. JNA dependency could be delared in that library. - The spring-jdbc module would declare an optional dependency on it, for testing purposes only - It would be up to client projects to add it to their own dependencies should they want to use Firebird embedded support

At least that was the implementation that came to my mind. Would that make sense ?

Edit : typo

Comment From: snicoll

I got that from the beginning, none of those two options would have been acceptable anyway.

Comment From: sbrannen

Firebird has a kind of embedded mode

Kind of, as you say indeed. I don't think having to use JNA qualifies Firebird as a valid candidate for the core framework. I am flagging this issue for team attention to see what the rest of the team thinks.

If there is not a truly embedded mode available (e.g., in Maven Central) that works out of the box across all platforms supported by Java (and Spring), I also don't consider this a valid candidate for inclusion in core Spring.

Comment From: bclozel

I agree with Sam and Stephane here, so I'll decline this issue. Sorry this took so long to get a final answer on this.