diff --git a/h2-1.4.196.pom b/h2-1.4.196.pom
new file mode 100644
index 0000000000000000000000000000000000000000..0122b4c8a80731b81136957829e9c6f31a4744de
--- /dev/null
+++ b/h2-1.4.196.pom
@@ -0,0 +1,30 @@
+
+ 4.0.0
+ com.h2database
+ h2
+ 1.4.196
+ jar
+ H2 Database Engine
+ http://www.h2database.com
+ H2 Database Engine
+
+
+ MPL 2.0 or EPL 1.0
+ http://h2database.com/html/license.html
+ repo
+
+
+
+ scm:git:https://github.com/h2database/h2database
+ https://github.com/h2database/h2database
+
+
+
+ thomas.tom.mueller
+ Thomas Mueller
+ thomas.tom.mueller at gmail dot com
+
+
+
+
+
\ No newline at end of file
diff --git a/h2-2017-06-10.zip b/h2-2017-06-10.zip
new file mode 100644
index 0000000000000000000000000000000000000000..17d1d728802fecc3d568354a8d89972e02844ddd
Binary files /dev/null and b/h2-2017-06-10.zip differ
diff --git a/h2.spec b/h2.spec
new file mode 100644
index 0000000000000000000000000000000000000000..79744d4f18587c14da3ed7d9e948cff5f70a40ba
--- /dev/null
+++ b/h2.spec
@@ -0,0 +1,68 @@
+Name: h2
+Version: 1.4.196
+Release: 1
+Summary: Java SQL database
+License: (EPL or MPLv2.0 or LGPLv3+) and ASL 2.0
+URL: http://www.h2database.com
+Source0: http://www.h2database.com/h2-2017-06-10.zip
+Source1: https://repo1.maven.org/maven2/com/h2database/h2/%{version}/h2-%{version}.pom
+Patch0: port-to-lucene-6.patch
+BuildArch: noarch
+BuildRequires: javapackages-local lucene >= 6.1.0 lucene-analysis >= 6.1.0
+BuildRequires: lucene-queryparser >= 6.1.0 slf4j felix-osgi-core glassfish-servlet-api jts
+%description
+H2 is a the Java SQL database. The main features of H2 are: Very fast, open
+source, JDBC API; Embedded and server modes; In-memory databases; Browser
+based Console application; Small footprint: around 1 MB jar file size.
+
+%package javadoc
+Summary: Javadocs for %{name}
+%description javadoc
+This package contains the API documentation for %{name}.
+
+%prep
+%setup -q -n %{name}
+%patch0 -p2
+rm src/main/org/h2/util/OsgiDataSourceFactory.java
+sed -i -e '/OsgiDataSourceFactory/d' src/main/org/h2/util/DbDriverActivator.java
+sed -i -e '/org.osgi.service.jdbc/d' src/main/META-INF/MANIFEST.MF
+find -name '*.class' -delete
+find -name '*.jar' -delete
+find -name '*.exe' -delete
+find -name '*.dll' -delete
+sed -i -e 's/com\.vividsolutions\.jts/org.locationtech.jts/' $(find -name *.java)
+sed -i -e 's/vividsolutions/vividsolutions locationtech/' src/tools/org/h2/build/doc/dictionary.txt
+sed -i -e '/downloadTest();/d' -e '/download();/d' \
+ src/tools/org/h2/build/Build.java
+sed -i -e '/TestNetUtils/d' \
+ src/test/org/h2/test/TestAll.java
+mkdir ext
+ln -s -T $(build-classpath jts) ext/jts-core-1.14.0.jar
+ln -s -T $(build-classpath glassfish-servlet-api) ext/servlet-api-3.1.0.jar
+ln -s -T $(build-classpath slf4j/api) ext/slf4j-api-1.6.0.jar
+ln -s -T $(build-classpath slf4j/nop) ext/slf4j-nop-1.6.0.jar
+ln -s -T $(build-classpath lucene/lucene-core) ext/lucene-core-6.1.0.jar
+ln -s -T $(build-classpath lucene/lucene-analyzers-common) ext/lucene-analyzers-common-6.1.0.jar
+ln -s -T $(build-classpath lucene/lucene-queryparser) ext/lucene-queryparser-6.1.0.jar
+ln -s -T $(build-classpath felix/org.osgi.core) ext/org.osgi.core-4.2.0.jar
+echo "classic queryparser" >> src/tools/org/h2/build/doc/dictionary.txt
+
+%build
+export JAVA_HOME=%{_jvmdir}/java
+sh build.sh jar docs testFast
+
+%install
+%mvn_artifact %SOURCE1 bin/h2-%{version}.jar
+%mvn_install -J docs/javadoc
+
+%files -f .mfiles
+%doc docs/index.html
+%doc docs/html
+%license src/docsrc/html/license.html
+
+%files javadoc -f .mfiles-javadoc
+%license src/docsrc/html/license.html
+
+%changelog
+* Mon Aug 3 2020 yanan li - 1.4.196-1
+- Package init
diff --git a/h2.yaml b/h2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..00bfc18a7f2961ce6d155ce92b48ce46075f4141
--- /dev/null
+++ b/h2.yaml
@@ -0,0 +1,5 @@
+git_url: https://github.com/h2database/h2database.git
+version_control: github
+src_repo: h2database/h2database
+tag_prefix: "version-"
+seperator: "."
diff --git a/port-to-lucene-6.patch b/port-to-lucene-6.patch
new file mode 100644
index 0000000000000000000000000000000000000000..19be17fc82821331382865ea33fc3dd49742183a
--- /dev/null
+++ b/port-to-lucene-6.patch
@@ -0,0 +1,182 @@
+From 7e707748a5d500c34b2d6350c0093c05c3d2775c Mon Sep 17 00:00:00 2001
+From: Mat Booth
+Date: Mon, 8 Aug 2016 19:48:08 +0100
+Subject: [PATCH 2/2] Update to lucene 5
+
+---
+ h2/pom.xml | 13 ++++++++++++-
+ h2/src/main/META-INF/MANIFEST.MF | 16 ++++++++--------
+ h2/src/main/org/h2/fulltext/FullTextLucene.java | 18 +++++++++---------
+ h2/src/tools/org/h2/build/Build.java | 8 ++++++--
+ 4 files changed, 35 insertions(+), 20 deletions(-)
+
+diff --git a/h2/src/main/META-INF/MANIFEST.MF b/h2/src/main/META-INF/MANIFEST.MF
+index 9f219d1..49dc47d 100644
+--- a/h2/src/main/META-INF/MANIFEST.MF
++++ b/h2/src/main/META-INF/MANIFEST.MF
+@@ -23,14 +23,14 @@ Import-Package: javax.management,
+ javax.sql,
+ javax.tools;resolution:=optional,
+ javax.transaction.xa;resolution:=optional,
+- org.apache.lucene.analysis;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.analysis.standard;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.document;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.index;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.queryParser;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.search;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.store;version="[3.6.2,4.0.0)";resolution:=optional,
+- org.apache.lucene.util;version="[3.6.2,4.0.0)";resolution:=optional,
++ org.apache.lucene.analysis;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.analysis.standard;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.document;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.index;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.queryParser;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.search;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.store;version="[6.1.0,8.0.0)";resolution:=optional,
++ org.apache.lucene.util;version="[6.1.0,8.0.0)";resolution:=optional,
+ com.vividsolutions.jts.geom;version="1.14.0";resolution:=optional,
+ com.vividsolutions.jts.io;version="1.14.0";resolution:=optional,
+ org.h2;version="[${version},1.5.0)",
+diff --git a/h2/src/main/org/h2/fulltext/FullTextLucene.java b/h2/src/main/org/h2/fulltext/FullTextLucene.java
+index f24bcab..d9c5b92 100644
+--- a/h2/src/main/org/h2/fulltext/FullTextLucene.java
++++ b/h2/src/main/org/h2/fulltext/FullTextLucene.java
+@@ -19,10 +19,13 @@
+ import org.apache.lucene.document.DateTools;
+ import org.apache.lucene.document.Document;
+ import org.apache.lucene.document.Field;
++import org.apache.lucene.document.StringField;
++import org.apache.lucene.document.TextField;
++import org.apache.lucene.index.DirectoryReader;
+ import org.apache.lucene.index.IndexReader;
+ import org.apache.lucene.index.IndexWriterConfig;
+ import org.apache.lucene.index.Term;
+-import org.apache.lucene.queryParser.QueryParser;
++import org.apache.lucene.queryparser.classic.QueryParser;
+ import org.apache.lucene.search.IndexSearcher;
+ import org.apache.lucene.search.Query;
+ import org.h2.api.Trigger;
+@@ -303,13 +306,14 @@
+ if (access == null) {
+ try {
+ Directory indexDir = path.startsWith(IN_MEMORY_PREFIX) ?
+- new RAMDirectory() : FSDirectory.open(new File(path));
+- Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
+- IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_30, analyzer);
++ new RAMDirectory() : FSDirectory.open(new File(path).toPath());
++ Analyzer analyzer = new StandardAnalyzer();
++ analyzer.setVersion(Version.LUCENE_6_1_0);
++ IndexWriterConfig conf = new IndexWriterConfig(analyzer);
+ conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
+ IndexWriter writer = new IndexWriter(indexDir, conf);
+ //see http://wiki.apache.org/lucene-java/NearRealtimeSearch
+- IndexReader reader = IndexReader.open(writer, true);
++ IndexReader reader = DirectoryReader.open(writer, true, true);
+ access = new IndexAccess();
+ access.writer = writer;
+ access.reader = reader;
+@@ -394,7 +398,6 @@
+ synchronized (INDEX_ACCESS) {
+ try {
+ INDEX_ACCESS.remove(indexPath);
+- access.searcher.close();
+ access.reader.close();
+ access.writer.close();
+ } catch (Exception e) {
+@@ -430,7 +433,7 @@
+ // reuse the same analyzer; it's thread-safe;
+ // also allows subclasses to control the analyzer used.
+ Analyzer analyzer = access.writer.getAnalyzer();
+- QueryParser parser = new QueryParser(Version.LUCENE_30,
++ QueryParser parser = new QueryParser(
+ LUCENE_FIELD_DATA, analyzer);
+ Query query = parser.parse(text);
+ // Lucene 3 insists on a hard limit and will not provide
+@@ -440,10 +443,10 @@
+ int maxResults = (limit == 0 ? 100 : limit) + offset;
+ TopDocs docs = searcher.search(query, maxResults);
+ if (limit == 0) {
+- limit = docs.totalHits;
++ limit = (int)docs.totalHits;
+ }
+ for (int i = 0, len = docs.scoreDocs.length;
+- i < limit && i + offset < docs.totalHits
++ i < limit && i + offset < (int)docs.totalHits
+ && i + offset < len; i++) {
+ ScoreDoc sd = docs.scoreDocs[i + offset];
+ Document doc = searcher.doc(sd.doc);
+@@ -604,9 +607,8 @@
+ try {
+ indexAccess.writer.commit();
+ // recreate Searcher with the IndexWriter's reader.
+- indexAccess.searcher.close();
+ indexAccess.reader.close();
+- indexAccess.reader = IndexReader.open(indexAccess.writer, true);
++ indexAccess.reader = DirectoryReader.open(indexAccess.writer, true, true);
+ indexAccess.searcher = new IndexSearcher(indexAccess.reader);
+ } catch (IOException e) {
+ throw convertException(e);
+@@ -622,12 +624,12 @@
+ protected void insert(Object[] row, boolean commitIndex) throws SQLException {
+ String query = getQuery(row);
+ Document doc = new Document();
+- doc.add(new Field(LUCENE_FIELD_QUERY, query,
+- Field.Store.YES, Field.Index.NOT_ANALYZED));
++ doc.add(new StringField(LUCENE_FIELD_QUERY, query,
++ Field.Store.YES));
+ long time = System.currentTimeMillis();
+- doc.add(new Field(LUCENE_FIELD_MODIFIED,
++ doc.add(new StringField(LUCENE_FIELD_MODIFIED,
+ DateTools.timeToString(time, DateTools.Resolution.SECOND),
+- Field.Store.YES, Field.Index.NOT_ANALYZED));
++ Field.Store.YES));
+ StatementBuilder buff = new StatementBuilder();
+ for (int index : indexColumns) {
+ String columnName = columns[index];
+@@ -638,15 +640,14 @@
+ if (columnName.startsWith(LUCENE_FIELD_COLUMN_PREFIX)) {
+ columnName = LUCENE_FIELD_COLUMN_PREFIX + columnName;
+ }
+- doc.add(new Field(columnName, data,
+- Field.Store.NO, Field.Index.ANALYZED));
++ doc.add(new TextField(columnName, data,
++ Field.Store.NO));
+ buff.appendExceptFirst(" ");
+ buff.append(data);
+ }
+ Field.Store storeText = STORE_DOCUMENT_TEXT_IN_INDEX ?
+ Field.Store.YES : Field.Store.NO;
+- doc.add(new Field(LUCENE_FIELD_DATA, buff.toString(), storeText,
+- Field.Index.ANALYZED));
++ doc.add(new TextField(LUCENE_FIELD_DATA, buff.toString(), storeText));
+ try {
+ indexAccess.writer.addDocument(doc);
+ if (commitIndex) {
+diff --git a/h2/src/tools/org/h2/build/Build.java b/h2/src/tools/org/h2/build/Build.java
+index a599656..24d97c6 100644
+--- a/h2/src/tools/org/h2/build/Build.java
++++ b/h2/src/tools/org/h2/build/Build.java
+@@ -204,7 +204,9 @@ public class Build extends BuildBase {
+ download();
+ String classpath = "temp" +
+ File.pathSeparator + "ext/servlet-api-3.1.0.jar" +
+- File.pathSeparator + "ext/lucene-core-3.6.2.jar" +
++ File.pathSeparator + "ext/lucene-core-6.1.0.jar" +
++ File.pathSeparator + "ext/lucene-analyzers-common-6.1.0.jar" +
++ File.pathSeparator + "ext/lucene-queryparser-6.1.0.jar" +
+ File.pathSeparator + "ext/slf4j-api-1.6.0.jar" +
+ File.pathSeparator + "ext/org.osgi.core-4.2.0.jar" +
+ File.pathSeparator + "ext/org.osgi.enterprise-4.2.0.jar" +
+@@ -595,7 +597,9 @@ public class Build extends BuildBase {
+ javadoc("-sourcepath", "src/main", "org.h2.jdbc", "org.h2.jdbcx",
+ "org.h2.tools", "org.h2.api", "org.h2.engine", "org.h2.fulltext",
+ "-classpath",
+- "ext/lucene-core-3.6.2.jar" +
++ "ext/lucene-core-6.1.0.jar" + File.pathSeparator +
++ "ext/lucene-analyzers-common-6.1.0.jar" + File.pathSeparator +
++ "ext/lucene-queryparser-6.1.0.jar" +
+ File.pathSeparator + "ext/jts-core-1.14.0.jar",
+ "-docletpath", "bin" + File.pathSeparator + "temp",
+ "-doclet", "org.h2.build.doclet.Doclet");
+--
+2.5.5