# Frequently Asked Questions

Are there any known bugs? When is the next release?
Is this Database Engine Open Source?
My query is slow
How to Create a New Database?
How to Connect to a Database?
Where are the Database Files Stored?
What is the Size Limit (maximum size) of a Database?
Is it Reliable?
Is the GCJ version stable? Faster?
How to Translate this Project?

### Are there any known bugs? When is the next release?

Usually, bugs get fixes as they are found. There is a release every few weeks. Here is the list of known and confirmed issues:

- Some problems have been found with right outer join. Internally, it is converted to left outer join, which does not always produce the same results as other databases when used in combination with other joins.

### Is this Database Engine Open Source?

Yes. It is free to use and distribute, and the source code is included. See also under license.

### My query is slow

Slow SELECT (or DELETE, UPDATE, MERGE) statement can have multiple reasons. Follow this checklist:

- Run ANALYSE (see documentation for details).
- Run the query with EXPLAIN and check if indexes are used (see documentation for details).
- If required, create additional indexes and try again using ANALYZE and EXPLAIN.
- If it doesn't help please report the problem.

### How to Create a New Database?

By default, a new database is automatically created if it does not yet exist.

### How to Connect to a Database?

The database driver is `org.h2.Driver`, and the database URL starts with `jdbc:h2:`. To connect to a database using JDBC, use the following code:

    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");

### Where are the Database Files Stored?

When using database URLs like jdbc:h2:~/test, the database is stored in the user directory. For Windows, this is usually C:\Documents and Settings\<userName>. If the base directory is not set (as in jdbc:h2:test), the database files are stored in the directory where the application is started (the current working directory). When using the H2 Console application from the start menu, this is [Installation Directory]/bin. The base directory can be set in the database URL. A fixed or relative path can be used. When using the URL jdbc:h2:file:data/sample, the database is stored in the directory data (relative to the current working directory). The directory must exist. It is also possible to use the fully qualified directory (and for Windows, drive) name. Example: jdbc:h2:file:C:/data/test

### What is the Size Limit (maximum size) of a Database?

The theoretical limit is currently 256 GB for the data. This number is excluding BLOB and CLOB data: Every CLOB or BLOB can be up to 256 GB as well. The size limit of the index data is 256 GB as well.

The maximum file size for FAT or FAT32 file systems is 4 GB. So if you use FAT or FAT32, the limit is 4 GB for the data.

### Is it Reliable?

That is not easy to say. It is still a quite new product. A lot of tests have been written, and the code coverage of these tests is very high. Randomized stress tests are run regularly. But as this is a relatively new product, there are probably some problems that have not yet been found. Areas that are not fully tested:

- Platforms other than Windows XP and the Sun JVM 1.4 and 1.5
- The MVCC (multi version concurrency) mode
- Cluster mode, 2-Phase Commit, Savepoints
- Multi-Threading and using multiple connections
- 24/7 operation and large databases (500 MB and up)
- Updatable result sets
- Referential integrity and check constraints, Triggers
- ALTER TABLE statements, Views, Linked Tables, Schema, UNION
- Not all built-in functions are completely tested
- The Optimizer may not always select the best plan
- Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER
- Server mode (well tested, but not as well as Embedded mode)
- Wide indexes with large VARCHAR or VARBINARY columns and / or with a lot of columns

Areas considered Experimental:

- The PostgreSQL server
- Linear Hash Index
- Compatibility modes for other databases (only some features are implemented)
- The ARRAY data type and related functionality

### Is the GCJ version stable? Faster?

The GCJ version is not as stable as the Java version. When running the regression test with the GCJ version, sometimes the application just stops at what seems to be a random point without error message. Currently, the GCJ version is also slower than when using the Sun VM. However, the startup of the GCJ version is faster than when using a VM.

### How to Translate this Project?

For more information, see Build/Translating.