diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
new file mode 100644
index 0000000000..0535ccd7dc
--- /dev/null
+++ b/.github/workflows/CI.yml
@@ -0,0 +1,33 @@
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+ java-8:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Test
+ run: |
+ cd h2
+ echo $JAVA_OPTS
+ export JAVA_OPTS=-Xmx512m
+ ./build.sh jar testCI
+ java-11:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: Test
+ run: |
+ cd h2
+ echo $JAVA_OPTS
+ export JAVA_OPTS=-Xmx512m
+ ./build.sh jar testCI
diff --git a/.lift.toml b/.lift.toml
new file mode 100644
index 0000000000..3c7beccf52
--- /dev/null
+++ b/.lift.toml
@@ -0,0 +1,8 @@
+# Config file for SonaType Lift analysis tool
+#
+# config reference here: https://help.sonatype.com/lift/configuration-reference
+#
+
+# Tell sonatype where our pom file lives, so it can build it again
+#
+build = "maven -f h2/pom.xml compile"
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 0163cc4f8c..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-language: java
-
-script: ./build.sh jar testTravis
-
-cache:
- directories:
- - $HOME/.m2/repository
-
-matrix:
- include:
- - jdk: openjdk11
- dist: trusty
- group: edge
- sudo: required
- before_script:
- - "cd h2"
- - "echo $JAVA_OPTS"
- - "export JAVA_OPTS=-Xmx512m"
- - jdk: oraclejdk8
- dist: trusty
- group: edge
- sudo: required
- before_script:
- - "cd h2"
- - "echo $JAVA_OPTS"
- - "export JAVA_OPTS=-Xmx512m"
- - jdk: openjdk7
- dist: trusty
- group: edge
- sudo: required
- before_script:
- - "cd h2"
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000000..eed8e4b1a1
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,552 @@
+H2 is dual licensed and available under the MPL 2.0 (Mozilla Public License
+Version 2.0) or under the EPL 1.0 (Eclipse Public License).
+
+-------------------------------------------------------------------------------
+
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+ 1.1. “Contributor”
+ means each individual or legal entity that creates, contributes to the
+ creation of, or owns Covered Software.
+
+ 1.2. “Contributor Version”
+ means the combination of the Contributions of others (if any) used by a
+ Contributor and that particular Contributor’s Contribution.
+
+ 1.3. “Contribution”
+ means Covered Software of a particular Contributor.
+
+ 1.4. “Covered Software”
+ means Source Code Form to which the initial Contributor has attached the
+ notice in Exhibit A, the Executable Form of such Source Code Form,
+ and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+ 1.5. “Incompatible With Secondary Licenses”
+ means
+
+ a. that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ b. that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the terms
+ of a Secondary License.
+
+ 1.6. “Executable Form”
+ means any form of the work other than Source Code Form.
+
+ 1.7. “Larger Work”
+ means a work that combines Covered Software with other material,
+ in a separate file or files, that is not Covered Software.
+
+ 1.8. “License”
+ means this document.
+
+ 1.9. “Licensable”
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently,
+ any and all of the rights conveyed by this License.
+
+ 1.10. “Modifications”
+ means any of the following:
+
+ a. any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered Software; or
+
+ b. any new file in Source Code Form that contains any Covered Software.
+
+ 1.11. “Patent Claims” of a Contributor
+ means any patent claim(s), including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by such Contributor that
+ would be infringed, but for the grant of the License, by the making,
+ using, selling, offering for sale, having made, import, or transfer of
+ either its Contributions or its Contributor Version.
+
+ 1.12. “Secondary License”
+ means either the GNU General Public License, Version 2.0, the
+ GNU Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those licenses.
+
+ 1.13. “Source Code Form”
+ means the form of the work preferred for making modifications.
+
+ 1.14. “You” (or “Your”)
+ means an individual or a legal entity exercising rights under this License.
+ For legal entities, “You” includes any entity that controls,
+ is controlled by, or is under common control with You. For purposes of
+ this definition, “control” means (a) the power, direct or indirect,
+ to cause the direction or management of such entity, whether by contract
+ or otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+
+2. License Grants and Conditions
+
+ 2.1. Grants
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ a. under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications,
+ or as part of a Larger Work; and
+
+ b. under Patent Claims of such Contributor to make, use, sell,
+ offer for sale, have made, import, and otherwise transfer either
+ its Contributions or its Contributor Version.
+
+ 2.2. Effective Date
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor
+ first distributes such Contribution.
+
+ 2.3. Limitations on Grant Scope
+ The licenses granted in this Section 2 are the only rights granted
+ under this License. No additional rights or licenses will be implied
+ from the distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted
+ by a Contributor:
+
+ a. for any code that a Contributor has removed from
+ Covered Software; or
+
+ b. for infringements caused by: (i) Your and any other third party’s
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its
+ Contributor Version); or
+
+ c. under Patent Claims infringed by Covered Software in the
+ absence of its Contributions.
+
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+
+ 2.4. Subsequent Licenses
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License
+ (if permitted under the terms of Section 3.3).
+
+ 2.5. Representation
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights
+ to grant the rights to its Contributions conveyed by this License.
+
+ 2.6. Fair Use
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing,
+ or other equivalents.
+
+ 2.7. Conditions
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the
+ licenses granted in Section 2.1.
+
+3. Responsibilities
+
+ 3.1. Distribution of Source Form
+ All distribution of Covered Software in Source Code Form, including
+ any Modifications that You create or to which You contribute, must be
+ under the terms of this License. You must inform recipients that the
+ Source Code Form of the Covered Software is governed by the terms
+ of this License, and how they can obtain a copy of this License.
+ You may not attempt to alter or restrict the recipients’ rights
+ in the Source Code Form.
+
+ 3.2. Distribution of Executable Form
+ If You distribute Covered Software in Executable Form then:
+
+ a. such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more than
+ the cost of distribution to the recipient; and
+
+ b. You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients’ rights in the Source Code Form under this License.
+
+ 3.3. Distribution of a Larger Work
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of
+ Covered Software with a work governed by one or more Secondary Licenses,
+ and the Covered Software is not Incompatible With Secondary Licenses,
+ this License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the
+ Covered Software under the terms of either this License or such
+ Secondary License(s).
+
+ 3.4. Notices
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty,
+ or limitations of liability) contained within the Source Code Form of
+ the Covered Software, except that You may alter any license notices to
+ the extent required to remedy known factual inaccuracies.
+
+ 3.5. Application of Additional Terms
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of
+ Covered Software. However, You may do so only on Your own behalf,
+ and not on behalf of any Contributor. You must make it absolutely clear
+ that any such warranty, support, indemnity, or liability obligation is
+ offered by You alone, and You hereby agree to indemnify every Contributor
+ for any liability incurred by such Contributor as a result of warranty,
+ support, indemnity or liability terms You offer. You may include
+ additional disclaimers of warranty and limitations of liability
+ specific to any jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+If it is impossible for You to comply with any of the terms of this License
+with respect to some or all of the Covered Software due to statute,
+judicial order, or regulation then You must: (a) comply with the terms of
+this License to the maximum extent possible; and (b) describe the limitations
+and the code they affect. Such description must be placed in a text file
+included with all distributions of the Covered Software under this License.
+Except to the extent prohibited by statute or regulation, such description
+must be sufficiently detailed for a recipient of ordinary skill
+to be able to understand it.
+
+5. Termination
+
+ 5.1. The rights granted under this License will terminate automatically
+ if You fail to comply with any of its terms. However, if You become
+ compliant, then the rights granted under this License from a particular
+ Contributor are reinstated (a) provisionally, unless and until such
+ Contributor explicitly and finally terminates Your grants, and (b) on an
+ ongoing basis, if such Contributor fails to notify You of the
+ non-compliance by some reasonable means prior to 60 days after You have
+ come back into compliance. Moreover, Your grants from a particular
+ Contributor are reinstated on an ongoing basis if such Contributor
+ notifies You of the non-compliance by some reasonable means,
+ this is the first time You have received notice of non-compliance with
+ this License from such Contributor, and You become compliant prior to
+ 30 days after Your receipt of the notice.
+
+ 5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted
+ to You by any and all Contributors for the Covered Software under
+ Section 2.1 of this License shall terminate.
+
+ 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+ end user license agreements (excluding distributors and resellers) which
+ have been validly granted by You or Your distributors under this License
+ prior to termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+Covered Software is provided under this License on an “as is” basis, without
+warranty of any kind, either expressed, implied, or statutory, including,
+without limitation, warranties that the Covered Software is free of defects,
+merchantable, fit for a particular purpose or non-infringing. The entire risk
+as to the quality and performance of the Covered Software is with You.
+Should any Covered Software prove defective in any respect, You
+(not any Contributor) assume the cost of any necessary servicing, repair,
+or correction. This disclaimer of warranty constitutes an essential part of
+this License. No use of any Covered Software is authorized under this
+License except under this disclaimer.
+
+7. Limitation of Liability
+
+Under no circumstances and under no legal theory, whether tort
+(including negligence), contract, or otherwise, shall any Contributor, or
+anyone who distributes Covered Software as permitted above, be liable to
+You for any direct, indirect, special, incidental, or consequential damages
+of any character including, without limitation, damages for lost profits,
+loss of goodwill, work stoppage, computer failure or malfunction, or any and
+all other commercial damages or losses, even if such party shall have been
+informed of the possibility of such damages. This limitation of liability
+shall not apply to liability for death or personal injury resulting from
+such party’s negligence to the extent applicable law prohibits such
+limitation. Some jurisdictions do not allow the exclusion or limitation of
+incidental or consequential damages, so this exclusion and limitation may
+not apply to You.
+
+8. Litigation
+
+Any litigation relating to this License may be brought only in the courts of
+a jurisdiction where the defendant maintains its principal place of business
+and such litigation shall be governed by laws of that jurisdiction, without
+reference to its conflict-of-law provisions. Nothing in this Section shall
+prevent a party’s ability to bring cross-claims or counter-claims.
+
+9. Miscellaneous
+
+This License represents the complete agreement concerning the subject matter
+hereof. If any provision of this License is held to be unenforceable,
+such provision shall be reformed only to the extent necessary to make it
+enforceable. Any law or regulation which provides that the language of a
+contract shall be construed against the drafter shall not be used to construe
+this License against a Contributor.
+
+10. Versions of the License
+
+ 10.1. New Versions
+ Mozilla Foundation is the license steward. Except as provided in
+ Section 10.3, no one other than the license steward has the right to
+ modify or publish new versions of this License. Each version will be
+ given a distinguishing version number.
+
+ 10.2. Effect of New Versions
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published
+ by the license steward.
+
+ 10.3. Modified Versions
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a modified
+ version of this License if you rename the license and remove any
+ references to the name of the license steward (except to note that such
+ modified license differs from this License).
+
+ 10.4. Distributing Source Code Form that is
+ Incompatible With Secondary Licenses
+ If You choose to distribute Source Code Form that is
+ Incompatible With Secondary Licenses under the terms of this version of
+ the License, the notice described in Exhibit B of this
+ License must be attached.
+
+Exhibit A - Source Code Form License Notice
+
+ This Source Code Form is subject to the terms of the
+ Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed
+ with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file,
+then You may include the notice in a location (such as a LICENSE file in a
+relevant directory) where a recipient would be likely to
+look for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - “Incompatible With Secondary Licenses” Notice
+
+ This Source Code Form is “Incompatible With Secondary Licenses”,
+ as defined by the Mozilla Public License, v. 2.0.
+
+-------------------------------------------------------------------------------
+
+Eclipse Public License, Version 1.0 (EPL-1.0)
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and
+ documentation distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+ i) changes to the Program, and
+ ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates'
+from a Contributor if it was added to the Program by such Contributor itself
+or anyone acting on such Contributor's behalf. Contributions do not include
+additions to the Program which: (i) are separate modules of software
+distributed in conjunction with the Program under their own license agreement,
+and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or
+when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with
+this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free copyright license to
+ reproduce, prepare derivative works of, publicly display, publicly
+ perform, distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works,
+ in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free patent license under
+ Licensed Patents to make, use, sell, offer to sell, import and
+ otherwise transfer the Contribution of such Contributor, if any,
+ in source code and object code form. This patent license shall apply
+ to the combination of the Contribution and the Program if, at the time
+ the Contribution is added by the Contributor, such addition of the
+ Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other
+ combinations which include the Contribution.
+ No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby assumes
+ sole responsibility to secure any other intellectual property rights
+ needed, if any. For example, if a third party patent license is
+ required to allow Recipient to distribute the Program, it is
+ Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties
+ and conditions, express and implied, including warranties or
+ conditions of title and non-infringement, and implied warranties or
+ conditions of merchantability and fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability
+ for damages, including direct, indirect, special, incidental and
+ consequential damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are
+ offered by that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if any, in a manner that reasonably allows subsequent Recipients to
+identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore,
+if a Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor") against any
+losses, damages and costs (collectively "Losses") arising from claims,
+lawsuits and other legal actions brought by a third party against the
+Indemnified Contributor to the extent caused by the acts or omissions of
+such Commercial Contributor in connection with its distribution of the Program
+in a commercial product offering. The obligations in this section do not apply
+to any claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim,
+and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor.
+If that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties
+are such Commercial Contributor's responsibility alone. Under this section,
+the Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+Each Recipient is solely responsible for determining the appropriateness of
+using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage to
+or loss of data, programs or equipment, and unavailability
+or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by
+the parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and
+does not cure such failure in a reasonable period of time after becoming
+aware of such noncompliance. If all Recipient's rights under this
+Agreement terminate, Recipient agrees to cease use and distribution of the
+Program as soon as reasonably practicable. However, Recipient's obligations
+under this Agreement and any licenses granted by Recipient relating to the
+Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and may
+only be modified in the following manner. The Agreement Steward reserves
+the right to publish new versions (including revisions) of this Agreement
+from time to time. No one other than the Agreement Steward has the right to
+modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version
+of the Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than one
+year after the cause of action arose. Each party waives its rights to a
+jury trial in any resulting litigation.
diff --git a/README.md b/README.md
index be84c081b8..70de378686 100644
--- a/README.md
+++ b/README.md
@@ -1,23 +1,40 @@
-# Welcome to H2, the Java SQL database. [](https://travis-ci.org/h2database/h2database)
+[](https://github.com/h2database/h2database/actions?query=workflow%3ACI)
+# Welcome to H2, the Java SQL database.
## The main features of H2 are:
-1. Very fast, open source, JDBC API
-2. Embedded and server modes; in-memory databases
-3. Browser based Console application
-4. Small footprint: around 2 MB jar file size
+* Very fast, open source, JDBC API
+* Embedded and server modes; disk-based or in-memory databases
+* Transaction support, multi-version concurrency
+* Browser based Console application
+* Encrypted databases
+* Fulltext search
+* Pure Java with small footprint: around 2.5 MB jar file size
+* ODBC driver
More information: https://h2database.com
-## Features
-
-| | [H2](https://h2database.com/) | [Derby](https://db.apache.org/derby) | [HSQLDB](http://hsqldb.org) | [MySQL](https://www.mysql.com/) | [PostgreSQL](https://www.postgresql.org) |
-|--------------------------------|---------|---------|---------|-------|---------|
-| Pure Java | Yes | Yes | Yes | No | No |
-| Memory Mode | Yes | Yes | Yes | No | No |
-| Encrypted Database | Yes | Yes | Yes | No | No |
-| ODBC Driver | Yes | No | No | Yes | Yes |
-| Fulltext Search | Yes | No | No | Yes | Yes |
-| Multi Version Concurrency | Yes | No | Yes | Yes | Yes |
-| Footprint (embedded database) | ~2 MB | ~3 MB | ~1.5 MB | — | — |
-| Footprint (JDBC client driver) | ~500 KB | ~600 KB | ~1.5 MB | ~1 MB | ~700 KB |
+## Downloads
+
+[Download latest version](https://h2database.com/html/download.html) or add to `pom.xml`:
+
+```XML
+Advanced
Run as Windows Service
ODBC Driver
-
- Using H2 in Microsoft .NET
ACID
@@ -83,12 +81,8 @@ Advanced
Pluggable File System
Split File System
-
- Database Upgrade
Java Objects Serialization
-
- Custom Data Types Handler API
Limits and Limitations
@@ -152,18 +146,6 @@ When to use CLOB/BLOB
that don't involve this column.
-The following feature is only available for the PageStore storage engine.
-For the MVStore engine (the default for H2 version 1.4.x),
-append ;COMPRESS=TRUE
to the database URL instead.
-CLOB and BLOB values can be compressed by using
-SET COMPRESS_LOB.
-The LZF algorithm is faster but needs more disk space. By default compression is disabled, which usually speeds up write
-operations. If you store many large compressible values such as XML, HTML, text, and uncompressed binary files,
-then compressing can save a lot of disk space (sometimes more than 50%), and read operations may even be faster.
-
This database supports linked tables, which means tables that don't exist in the current database but @@ -232,7 +214,7 @@
-The default MVStore engine supports read uncommitted, read committed, repeatable read, snapshot, +H2 supports read uncommitted, read committed, repeatable read, snapshot, and serializable (partially, see below) isolation levels:
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE
-The PageStore engine supports read uncommitted, read committed, and serializable isolation levels: -
-SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
-SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED
-SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE
-If repeatable read isolation level is requested when using a PageStore engine it is replaced -with serializable isolation level.
-With default MVStore engine delete, insert and update operations only issue a shared lock on the table. +Insert and update operations only issue a shared lock on the table. An exclusive lock is still used when adding or removing columns or when dropping the table. Connections only 'see' committed data, and own changes. That means, if connection A updates a row but doesn't commit this change yet, connection B will see the old value. @@ -318,22 +276,6 @@
-With PageStore engine to make sure all connections only see consistent data, table level locking is used. -This mechanism does not allow high concurrency, but is very fast. -Shared locks and exclusive locks are supported. -Before reading from a table, the database tries to add a shared lock to the table -(this is only possible if there is no exclusive lock on the object by another connection). -If the shared lock is added successfully, the table can be read. It is allowed that -other connections also have a shared lock on the same object. If a connection wants -to write to a table (update or delete a row), an exclusive lock is required. To get the -exclusive lock, other connection must not have any locks on the object. After the -connection commits, all locks are released. -This database keeps all locks in memory. -When a lock is released, and multiple connections are waiting for it, one of them is picked at random. -
-If a connection cannot get a lock on an object, the connection waits for some amount @@ -419,7 +361,7 @@
-SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME='CLUSTER' +SELECT SETTING_VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE SETTING_NAME = 'CLUSTER'
If the result is ''
(two single quotes), then the cluster mode is disabled. Otherwise, the list of
@@ -451,7 +393,7 @@
INSERT, UPDATE, MERGE
). However, they can be used
in read-only statements and the result can then be used for modifying statements.
-Using auto-increment and identity columns is currently not supported.
+Identity columns aren't supported.
Instead, sequence values need to be manually requested and then used to insert data (using two statements).
@@ -511,31 +453,42 @@
Keyword | -H2 | -SQL:2016 | -SQL:2011 | -SQL:2008 | -SQL:2003 | -SQL:1999 | -SQL-92 | +Keyword | +H2 | +SQL Standard | +|||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2016 | +2011 | +2008 | +2003 | +1999 | +92 | ||||||||||
ALL | + | + | + | + | + | + | + | ||||||||
AND | -CS | + | + | + | + | + | + | + | + | + | + | + | + | + | +|
ANY | ++ | + | + | + | + | + | + | ||||||||
ARRAY | + | + | + | + | + | + | |||||||||
AS | -CS | + | + | + | + | + | + | + | + | + | + | + | + | + | +|
ASYMMETRIC | ++ | + | + | + | + | NR | |||||||||
AUTHORIZATION | ++ | + | + | + | + | + | + | ||||||||
BETWEEN | -CS | + | + | + | + | NR | + | + | + | + | + | + | NR | + | |
BOTH | CS | + | + | + | + | + | + | ||||||||
CASE | + | + | + | + | + | + | + | ||||||||
CAST | ++ | + | + | + | + | + | + | ||||||||
CHECK | + | + | + | + | + | + | + | ||||||||
CONSTRAINT | @@ -546,6 +499,10 @@+ | + | + | + | |||||||||||
CURRENT_DATE | + | + | + | + | + | + | + | ||||||||
CURRENT_PATH | ++ | + | + | + | + | + | |||||||||
CURRENT_ROLE | ++ | + | + | + | + | + | |||||||||
CURRENT_SCHEMA | + | + | + | + | |||||||||||
CURRENT_TIME | @@ -554,8 +511,16 @@+ | + | + | + | + | + | + | ||||||||
CURRENT_USER | + | + | + | + | + | + | + | ||||||||
DAY | ++ | + | + | + | + | + | + | ||||||||
DEFAULT | ++ | + | + | + | + | + | + | ||||||||
DISTINCT | + | + | + | + | + | + | + | ||||||||
ELSE | ++ | + | + | + | + | + | + | ||||||||
END | ++ | + | + | + | + | + | + | ||||||||
EXCEPT | + | + | + | + | + | + | + | ||||||||
EXISTS | @@ -580,24 +545,26 @@CS | + | + | ||||||||||||
HAVING | + | + | + | + | + | + | + | ||||||||
HOUR | ++ | + | + | + | + | + | + | ||||||||
IF | + | ||||||||||||||
ILIKE | CS | ||||||||||||||
IN | -CS | + | + | + | + | + | + | + | + | + | + | + | + | + | |
INNER | + | + | + | + | + | + | + | ||||||||
INTERSECT | + | + | + | + | + | + | + | ||||||||
INTERSECTS | -+ | ||||||||||||||
INTERVAL | + | + | + | + | + | + | + | ||||||||
IS | + | + | + | + | + | + | + | ||||||||
JOIN | + | + | + | + | + | + | + | ||||||||
KEY | ++ | NR | NR | NR | NR | + | + | ||||||||
LEADING | CS | + | + | + | + | + | + | ||||||||
LEFT | @@ -605,13 +572,17 @@|||||||||||||||
LIKE | + | + | + | + | + | + | + | ||||||||
LIMIT | -+ | + | MS | + | |||||||||||
LOCALTIME | + | + | + | + | + | + | |||||||||
LOCALTIMESTAMP | + | + | + | + | + | + | |||||||||
MINUS | -+ | MS | + | ||||||||||||
MINUTE | ++ | + | + | + | + | + | + | ||||||||
MONTH | ++ | + | + | + | + | + | + | ||||||||
NATURAL | + | + | + | + | + | + | + | ||||||||
NOT | @@ -623,7 +594,7 @@|||||||||||||||
ON | + | + | + | + | + | + | + | ||||||||
OR | -CS | + | + | + | + | + | + | + | + | + | + | + | + | + | |
ORDER | + | + | + | + | + | + | + | ||||||||
OVER | @@ -642,55 +613,90 @@+ | + | + | + | + | + | + | ||||||||
ROW | + | + | + | + | + | + | |||||||||
_ROWID_ | -+ | ||||||||||||||
ROWNUM | + | ||||||||||||||
ROWS | CS | + | + | + | + | + | + | ||||||||
SECOND | ++ | + | + | + | + | + | + | ||||||||
SELECT | + | + | + | + | + | + | + | ||||||||
SYSDATE | -CS | ||||||||||||||
SYSTIME | -CS | ||||||||||||||
SYSTIMESTAMP | -CS | ||||||||||||||
SESSION_USER | ++ | + | + | + | + | + | |||||||||
SET | ++ | + | + | + | + | + | + | ||||||||
SOME | ++ | + | + | + | + | + | + | ||||||||
SYMMETRIC | ++ | + | + | + | + | NR | |||||||||
SYSTEM_USER | ++ | + | + | + | + | + | + | ||||||||
TABLE | + | + | + | + | + | + | + | ||||||||
TODAY | -CS | ||||||||||||||
TO | ++ | + | + | + | + | + | + | ||||||||
TOP | -CS | MS CS | |||||||||||||
TRAILING | CS | + | + | + | + | + | + | ||||||||
TRUE | + | + | + | + | + | + | + | ||||||||
UESCAPE | ++ | + | + | + | + | ||||||||||
UNION | + | + | + | + | + | + | + | ||||||||
UNIQUE | + | + | + | + | + | + | + | ||||||||
UNKNOWN | + | + | + | + | + | + | + | ||||||||
USER | ++ | + | + | + | + | + | + | ||||||||
USING | + | + | + | + | + | + | + | ||||||||
VALUE | ++ | + | + | + | + | + | + | ||||||||
VALUES | + | + | + | + | + | + | + | ||||||||
WHEN | ++ | + | + | + | + | + | + | ||||||||
WHERE | + | + | + | + | + | + | + | ||||||||
WINDOW | + | + | + | + | + | ||||||||||
WITH | + | + | + | + | + | + | + | ||||||||
YEAR | ++ | + | + | + | + | + | + | ||||||||
_ROWID_ | ++ |
-Some keywords in H2 are context-sensitive (CS), such keywords may be used as identifiers in some places, +Mode-sensitive keywords (MS) are keywords only in some compatibility modes. +
++Context-sensitive keywords (CS) can be used as identifiers in some places, but cannot be used as identifiers in others. +Normal keywords (+) are always treated as keywords. +
+Most keywords in H2 are also reserved (+) or non-reserved (NR) words in the SQL Standard. Newer versions of H2 may have more keywords than older ones. +Reserved words from the SQL Standard are potential candidates for keywords in future versions.
+There is a compatibility setting
+SET NON_KEYWORDS
+that can be used as a temporary workaround for applications that use keywords as unquoted identifiers.
This database tries to be as much standard compliant as possible. For the SQL language, ANSI/ISO is the main @@ -897,55 +903,6 @@
-The database can be used from Microsoft .NET even without using Java, by using IKVM.NET. -You can access a H2 database on .NET using the JDBC API, or using the ADO.NET interface. -
- --An implementation of the ADO.NET interface is available in the open source project -H2Sharp. -
- -h2*.jar
file to ikvm/bin
-ikvm -jar h2*.jar
-.exe
file using:
- ikvmc -target:winexe h2*.jar
.
- You may ignore the warnings.
-.dll
file using (change the version accordingly):
- ikvmc.exe -target:library -version:1.0.69.0 h2*.jar
-
-If you want your C# application use H2, you need to add the h2.dll
and the
-IKVM.OpenJDK.ClassLibrary.dll
to your C# solution. Here some sample code:
-
-using System; -using java.sql; - -class Test -{ - static public void Main() - { - org.h2.Driver.load(); - Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "sa"); - Statement stat = conn.createStatement(); - ResultSet rs = stat.executeQuery("SELECT 'Hello World'"); - while (rs.next()) - { - Console.WriteLine(rs.getString(1)); - } - } -} --
In the database world, ACID stands for: @@ -1084,7 +1041,8 @@
RunScript
tool or a
-RUNSCRIPT FROM
SQL statement. The script includes at least one
+RUNSCRIPT
SQL statement.
+The script includes at least one
CREATE USER
statement. If you run the script against a database that was created with the same
user, or if there are conflicting users, running the script will fail. Consider running the script
against a database that was created with a user name that is not in the script.
@@ -1412,9 +1370,10 @@
If you enable remote access using -webAllowOthers
,
please ensure the web server can only be accessed from trusted networks.
+If this option is specified, -webExternalNames
should be also specified with
+comma-separated list of external names or addresses of this server.
The options -baseDir
don't protect
-access to the tools section, prevent remote shutdown of the web server,
-changes to the preferences, the saved connection settings,
+access to the saved connection settings,
or access to other databases accessible from the system.
-CREATE TABLE GEO_TABLE(GID SERIAL, THE_GEOM GEOMETRY); +CREATE TABLE GEO_TABLE( + GID BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + THE_GEOM GEOMETRY); INSERT INTO GEO_TABLE(THE_GEOM) VALUES ('POINT(500 505)'), ('LINESTRING(550 551, 525 512, 565 566)'), @@ -1642,14 +1603,13 @@Spatial Features
'POLYGON ((490 490, 536 490, 536 515, 490 515, 490 490))'; -- Result SELECT - "GEO_TABLE"."GID", - "GEO_TABLE"."THE_GEOM" + "PUBLIC"."GEO_TABLE"."GID", + "PUBLIC"."GEO_TABLE"."THE_GEOM" FROM "PUBLIC"."GEO_TABLE" - /* PUBLIC.GEO_TABLE_SPATIAL_INDEX: - THE_GEOM && - 'POLYGON ((490 490, 536 490, 536 515, 490 515, 490 490))'::Geometry */ -WHERE INTERSECTS("THE_GEOM", - 'POLYGON ((490 490, 536 490, 536 515, 490 515, 490 490))'::Geometry) + /* PUBLIC.GEO_TABLE_SPATIAL_INDEX: THE_GEOM && + GEOMETRY 'POLYGON ((490 490, 536 490, 536 515, 490 515, 490 490))' */ +WHERE "THE_GEOM" && + GEOMETRY 'POLYGON ((490 490, 536 490, 536 515, 490 515, 490 490))'
For persistent databases, the spatial index is stored on disk; @@ -1686,7 +1646,7 @@
This database supports a pluggable file system API. The file system implementation is selected using a file name prefix. -Internally, the interfaces are very similar to the Java 7 NIO2 API, but do not (yet) use or require Java 7. +Internally, the interfaces are very similar to the Java 7 NIO2 API. The following file systems are included:
-zip:
read-only zip-file based file system. Format: zip:~/zipFileName!/fileName
.
+file:
the default file system that uses FileChannel
.
+zip:
read-only zip-file based file system. Format: zip:~/zipFileName!/fileName
.
split:
file system that splits files in 1 GB files (stackable with other file systems).
-nio:
file system that uses FileChannel
instead of RandomAccessFile
(faster in some operating systems).
nioMapped:
file system that uses memory mapped files (faster in some operating systems).
Please note that there currently is a file size limitation of 2 GB when using this file system.
To work around this limitation, combine it with the split file system: split:nioMapped:~/test
.
-async:
experimental file system that uses AsynchronousFileChannel
instead of RandomAccessFile
(faster in some operating systems).
+async:
experimental file system that uses AsynchronousFileChannel
instead of FileChannel
(faster in some operating systems).
memFS:
in-memory file system (slower than mem; experimental; mainly used for testing the database engine itself).
memLZF:
compressing in-memory file system (slower than memFS but uses less memory; experimental; mainly used for testing the database engine itself).
nioMemFS:
stores data outside of the VM's heap - useful for large memory DBs without incurring GC costs.
@@ -1774,9 +1734,8 @@
-As an example, to use the nio
file system with PageStore storage engine,
-use the following database URL: jdbc:h2:nio:~/test;MV_STORE=FALSE
.
-With MVStore storage engine nio file system is used by default.
+As an example, to use the async:
file system
+use the following database URL: jdbc:h2:async:~/test
.
To register a new file system, extend the classes org.h2.store.fs.FilePath, FileBase
,
@@ -1808,43 +1767,6 @@
jdbc:h2:split:20:~/test
.
--In version 1.2, H2 introduced a new file store implementation which is incompatible to the one used in versions < 1.2. -To automatically convert databases to the new file store, it is necessary to include an additional jar file. -The file can be found at https://h2database.com/h2mig_pagestore_addon.jar . -If this file is in the classpath, every connect to an older database will result in a conversion process. -
-
-The conversion itself is done internally via 'script to'
and 'runscript from'
. After the conversion process, the files will be
-renamed from
-
dbName.data.db
to dbName.data.db.backup
-dbName.index.db
to dbName.index.db.backup
--by default. Also, the temporary script will be written to the database directory instead of a temporary directory. -Both defaults can be customized via -
-org.h2.upgrade.DbUpgrade.setDeleteOldDb(boolean)
-org.h2.upgrade.DbUpgrade.setScriptInTmpDir(boolean)
--prior opening a database connection. -
-
-Since version 1.2.140 it is possible to let the old h2 classes (v 1.2.128) connect to the database.
-The automatic upgrade .jar file must be present, and the URL must start with jdbc:h2v1_1:
-(the JDBC driver class is org.h2.upgrade.v1_1.Driver
).
-If the database should automatically connect using the old version if a database with the old format exists
-(without upgrade), and use the new version otherwise, then append ;NO_UPGRADE=TRUE
-to the database URL.
-Please note the old driver did not process the system property "h2.baseDir"
correctly,
-so that using this setting is not supported when upgrading.
-
Java objects serialization is enabled by default for columns of type OTHER
, using standard Java serialization/deserialization semantics.
@@ -1872,30 +1794,6 @@
-It is possible to extend the type system of the database by providing your own implementation -of minimal required API basically consisting of type identification and conversion routines. -
-
-In order to enable this feature, set the system property h2.customDataTypesHandler
(default: null) to the fully qualified name of the class providing
-CustomDataTypesHandler interface implementation.
-The instance of that class will be created by H2 and used to:
-
This is a system-level setting, i.e. affects all the databases.
- -Note: Please keep in mind that this feature may not possibly provide the same ABI stability level as other features as it exposes many of the H2 internals. You may be required to update your code occasionally due to internal changes in H2 if you are going to use this feature. -
- -This database has the following known limitations: @@ -1911,28 +1809,29 @@
jdbc:h2:split:~/test
.
-SELECT * FROM DUAL WHERE X = 1 -OR X = 2 OR X = 2 OR X = 2 OR X = 2 OR X = 2 --- repeat previous line 500 times -- -+Very complex expressions may result in a stack overflow exception.
Working from the top down, the layers look like this: +
@@ -69,6 +69,7 @@
The primary classes of interest are: +
Package | Description |
---|---|
org.h2.engine.Database | the root/global class |
org.h2.engine.SessionRemote | remote session |
@@ -95,14 +95,15 @@
The primary packages of interest are: +
Package | Description |
---|---|
org.h2.command.ddl | Commands that modify schema data structures |
org.h2.command.dml | Commands that modify data |
@@ -110,12 +111,12 @@
The primary packages of interest are: +
Package | Description |
---|---|
org.h2.table | Implementations of different kinds of tables |
org.h2.index | Implementations of different kinds of indices |
diff --git a/h2/src/docsrc/html/build.html b/h2/src/docsrc/html/build.html index 14efb7f089..87a588d72b 100644 --- a/h2/src/docsrc/html/build.html +++ b/h2/src/docsrc/html/build.html @@ -1,6 +1,6 @@ @@ -25,8 +25,6 @@
-To run this database, a Java Runtime Environment (JRE) version 7 or higher is required. +To run this database, a Java Runtime Environment (JRE) version 8 or higher is required.
To create the database executables, the following software stack was used. To use this database, it is not required to install this software however.
-You need to install a JDK, for example the Oracle JDK version 7 or 8.
+You need to install a JDK, for example the Oracle JDK version 8.
Ensure that Java binary directory is included in the PATH
environment variable, and that
the environment variable JAVA_HOME
points to your Java installation.
On the command line, go to the directory h2
and execute the following command:
@@ -95,28 +91,9 @@
-The build system can generate smaller jar files as well. The following targets are currently supported: -
-jarClient
- creates the file h2client.jar
. This only contains the JDBC client.
-jarSmall
- creates the file h2small.jar
.
- This only contains the embedded database. Debug information is disabled.
-javadocImpl
creates the Javadocs of the implementation.
-
-To create the file h2client.jar
, go to the directory h2
and execute the following command:
-
-build jarClient --
-Apache Lucene 5.5.5 is used for testing. -Newer versions up to 8.0.* can also be used. +Apache Lucene 8.5.2 is used for testing.
New versions of this database are first uploaded to http://hsql.sourceforge.net/m2-repo/ and then automatically -synchronized with the main Maven repository; +synchronized with the main Maven repository; however after a new release it may take a few hours before they are available there.
To create an Eclipse project for H2, use the following steps:
-git clone https://github.com/h2database/h2database
If you'd like to contribute bug fixes or new features, please consider the following guidelines to simplify merging them:
-src/installer/checkstyle.xml
.
@@ -223,7 +200,7 @@ build test
.
src/docsrc/html/*
).
-src/docsrc/help/help.csv
+src/main/org/h2/res/help.csv
src/docsrc/html/changelog.html
).
build spellcheck
. If required
add the new words to src/tools/org/h2/build/doc/dictionary.txt
.
@@ -237,7 +214,7 @@ For legal reasons, patches need to be public in the form of an issue report or attachment or in the form of an email - to the group. + to the group. Significant contributions need to include the following statement:
@@ -254,7 +231,8 @@
-XX:+HeapDumpOnOutOfMemoryError
(to create a heap dump file on out of memory)
and a memory analysis tool such as the
- Eclipse Memory Analyzer (MAT).
+ Eclipse Memory Analyzer (MAT).
This build process is automated and runs regularly.
The build process includes running the tests and code coverage, using the command line
-./build.sh jar testTravis
.
-The results are available on Travis CI.
+./build.sh jar testCI
.
+The results are available on CI workflow page.
java -jar h2*.jar
, h2.bat
, or h2.sh
.
jdbc:h2:./test
in the current(!) working directory
In-Memory
-jdbc:h2:mem:test
multiple connections in one process
+jdbc:h2:mem:test
multiple connections in one process,
+database is removed when all connections are closed
+jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
multiple connections in one process,
+database in not removed when all connections are closed
+(may create a memory leak)
jdbc:h2:mem:
unnamed private; one connection
Server Mode
jdbc:h2:tcp://localhost/~/test
user home dir
-jdbc:h2:tcp://localhost//data/test
absolute dir
+jdbc:h2:tcp://localhost//data/test
or jdbc:h2:tcp://localhost/D:/data/test
absolute dir
Server start:java -cp *.jar org.h2.tools.Server
Settings
-jdbc:h2:..;MODE=MySQL
compatibility (or HSQLDB,...)
+jdbc:h2:..;MODE=MySQL;DATABASE_TO_LOWER=TRUE
+compatibility (or HSQLDB,...)
jdbc:h2:..;TRACE_LEVEL_FILE=3
log to *.trace.db
Click on the header to switch between railroad diagram and BNF.
+ +Click on the header of the command to switch between railroad diagram and BNF.
+Non-standard syntax is marked in green. Compatibility-only non-standard syntax is marked in red, +don't use it unless you need it for compatibility with other databases or old versions of H2.
Click on the header to switch between railroad diagram and BNF.
+ +Click on the header of the data type to switch between railroad diagram and BNF.
+Non-standard syntax is marked in green. Compatibility-only non-standard syntax is marked in red, +don't use it unless you need it for compatibility with other databases or old versions of H2.
-Windows Installer
+Windows Installer
-Platform-Independent Zip
+Platform-Independent Zip
-Windows Installer
-Platform-Independent Zip
+Windows Installer
+(SHA1 checksum: 982dff9c88412b00b3ced52b6870753e0133be07)
+Platform-Independent Zip
+(SHA1 checksum: 85d6d8f552661c2f8e1b86c10a12ab4bb6b0d29b)
-Platform-Independent Zip
+Archive Downloads
-Upgrade database from 1.1 to the current version
+Binary JAR
+Javadoc
+Sources
Atom Feed
RSS Feed
-DOAP File (what is this)
+DOAP File (what is this)