summaryrefslogtreecommitdiffstats
path: root/external/hsqldb
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--external/hsqldb/ExternalPackage_hsqldb.mk16
-rw-r--r--external/hsqldb/ExternalProject_hsqldb.mk38
-rw-r--r--external/hsqldb/Makefile7
-rw-r--r--external/hsqldb/Module_hsqldb.mk18
-rw-r--r--external/hsqldb/README11
-rw-r--r--external/hsqldb/UnpackedTarball_hsqldb.mk33
-rw-r--r--external/hsqldb/patches/disable-dump-script.patch14
-rw-r--r--external/hsqldb/patches/fdo36824.patch11
-rw-r--r--external/hsqldb/patches/hsqldb-runFinalizersOnExit.patch14
-rw-r--r--external/hsqldb/patches/i103528.patch11
-rw-r--r--external/hsqldb/patches/i104901.patch27
-rw-r--r--external/hsqldb/patches/i96823.patch94
-rw-r--r--external/hsqldb/patches/i97032.patch10
-rw-r--r--external/hsqldb/patches/jdbc-4.1.patch320
-rw-r--r--external/hsqldb/patches/limit_as_table_alias.patch11
-rw-r--r--external/hsqldb/patches/multipleResultSets.patch11
16 files changed, 646 insertions, 0 deletions
diff --git a/external/hsqldb/ExternalPackage_hsqldb.mk b/external/hsqldb/ExternalPackage_hsqldb.mk
new file mode 100644
index 000000000..e4dbb363b
--- /dev/null
+++ b/external/hsqldb/ExternalPackage_hsqldb.mk
@@ -0,0 +1,16 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,hsqldb_project,hsqldb))
+
+$(eval $(call gb_ExternalPackage_use_external_project,hsqldb_project,hsqldb))
+
+$(eval $(call gb_ExternalPackage_add_file,hsqldb_project,$(LIBO_SHARE_JAVA_FOLDER)/hsqldb.jar,lib/hsqldb.jar))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/hsqldb/ExternalProject_hsqldb.mk b/external/hsqldb/ExternalProject_hsqldb.mk
new file mode 100644
index 000000000..67ae75106
--- /dev/null
+++ b/external/hsqldb/ExternalProject_hsqldb.mk
@@ -0,0 +1,38 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# 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/.
+#
+
+$(eval $(call gb_ExternalProject_ExternalProject,hsqldb))
+
+$(eval $(call gb_ExternalProject_register_targets,hsqldb,\
+ build \
+))
+
+# ANT_OPTS -Djava.security.manager=allow allows latest Apache Ant 1.10.12 to still run under
+# Java 18, where java.lang.System.setSecurityManager (as called from
+# org.apache.tools.ant.types.Permissions.setSecurityManager) would otherwise throw an
+# UnsupportedOperationException (see <https://openjdk.java.net/jeps/411> "Deprecate the Security
+# Manager for Removal"):
+$(call gb_ExternalProject_get_state_target,hsqldb,build) :
+ $(call gb_Trace_StartRange,hsqldb,EXTERNAL)
+ $(call gb_ExternalProject_run,build,\
+ JAVA_HOME=$(JAVA_HOME_FOR_BUILD) \
+ $(if $(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD), \
+ ANT_OPTS="$$ANT_OPTS -Djava.security.manager=allow") \
+ $(ICECREAM_RUN) "$(ANT)" \
+ $(if $(verbose),-v,-q) \
+ -f build/build.xml \
+ -Dbuild.label="build-$(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)" \
+ -Dant.build.javac.source=$(JAVA_SOURCE_VER) \
+ -Dant.build.javac.target=$(JAVA_TARGET_VER) \
+ $(if $(debug),-Dbuild.debug="on") \
+ jar \
+ )
+ $(call gb_Trace_EndRange,hsqldb,EXTERNAL)
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/hsqldb/Makefile b/external/hsqldb/Makefile
new file mode 100644
index 000000000..e4968cf85
--- /dev/null
+++ b/external/hsqldb/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/hsqldb/Module_hsqldb.mk b/external/hsqldb/Module_hsqldb.mk
new file mode 100644
index 000000000..d748faa2e
--- /dev/null
+++ b/external/hsqldb/Module_hsqldb.mk
@@ -0,0 +1,18 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# 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/.
+#
+
+$(eval $(call gb_Module_Module,hsqldb))
+
+$(eval $(call gb_Module_add_targets,hsqldb,\
+ ExternalPackage_hsqldb \
+ ExternalProject_hsqldb \
+ UnpackedTarball_hsqldb \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/hsqldb/README b/external/hsqldb/README
new file mode 100644
index 000000000..7d7f89f04
--- /dev/null
+++ b/external/hsqldb/README
@@ -0,0 +1,11 @@
+Java database engine from [http://hsqldb.org/].
+
+Default database format for LibreOffice.
+
+At some point the plan was to replace it as default by Firebird, but
+that seems increasingly unlikely to happen.
+
+See:
+https://bugs.freedesktop.org/show_bug.cgi?id=51781
+http://www.firebirdsql.org
+
diff --git a/external/hsqldb/UnpackedTarball_hsqldb.mk b/external/hsqldb/UnpackedTarball_hsqldb.mk
new file mode 100644
index 000000000..0b05b45ba
--- /dev/null
+++ b/external/hsqldb/UnpackedTarball_hsqldb.mk
@@ -0,0 +1,33 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# 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/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,hsqldb))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,hsqldb,$(HSQLDB_TARBALL),,hsqldb))
+
+$(eval $(call gb_UnpackedTarball_fix_end_of_line,hsqldb,\
+ build/build.xml \
+ src/org/hsqldb/Library.java \
+ src/org/hsqldb/persist/HsqlDatabaseProperties.java \
+))
+
+$(eval $(call gb_UnpackedTarball_add_patches,hsqldb,\
+ external/hsqldb/patches/i96823.patch \
+ external/hsqldb/patches/i97032.patch \
+ external/hsqldb/patches/i103528.patch \
+ external/hsqldb/patches/i104901.patch \
+ external/hsqldb/patches/fdo36824.patch \
+ external/hsqldb/patches/limit_as_table_alias.patch \
+ external/hsqldb/patches/hsqldb-runFinalizersOnExit.patch \
+ external/hsqldb/patches/jdbc-4.1.patch \
+ external/hsqldb/patches/multipleResultSets.patch \
+ external/hsqldb/patches/disable-dump-script.patch \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/hsqldb/patches/disable-dump-script.patch b/external/hsqldb/patches/disable-dump-script.patch
new file mode 100644
index 000000000..401dd38ab
--- /dev/null
+++ b/external/hsqldb/patches/disable-dump-script.patch
@@ -0,0 +1,14 @@
+--- a/hsqldb/src/org/hsqldb/DatabaseCommandInterpreter.java 2023-02-13 11:08:11.297243034 +0000
++++ b/hsqldb/src/org/hsqldb/DatabaseCommandInterpreter.java 2023-02-13 13:49:17.973089433 +0000
+@@ -403,6 +403,11 @@
+ throw Trace.error(Trace.INVALID_IDENTIFIER);
+ }
+
++ // added condition to avoid execution of spurious command in .script or .log file
++ if (session.isProcessingScript() || session.isProcessingLog()) {
++ return new Result(ResultConstants.UPDATECOUNT);
++ }
++
+ dsw = new ScriptWriterText(database, token, true, true, true);
+
+ dsw.writeAll();
diff --git a/external/hsqldb/patches/fdo36824.patch b/external/hsqldb/patches/fdo36824.patch
new file mode 100644
index 000000000..ad753e335
--- /dev/null
+++ b/external/hsqldb/patches/fdo36824.patch
@@ -0,0 +1,11 @@
+--- misc/hsqldb/src/org/hsqldb/Expression.java 2012-07-03 19:49:00.000000000 +0200
++++ misc/build/hsqldb/src/org/hsqldb/Expression.java 2012-07-03 19:39:00.000000000 +0200
+@@ -1552,7 +1552,7 @@
+ return columnQuoted;
+ }
+
+- return false;
++ return true;
+ }
+
+ /**
diff --git a/external/hsqldb/patches/hsqldb-runFinalizersOnExit.patch b/external/hsqldb/patches/hsqldb-runFinalizersOnExit.patch
new file mode 100644
index 000000000..214dc2c2b
--- /dev/null
+++ b/external/hsqldb/patches/hsqldb-runFinalizersOnExit.patch
@@ -0,0 +1,14 @@
+--- misc/hsqldb/src/org/hsqldb/lib/java/JavaSystem.java 2008-03-16 23:51:35.000000000 +0100
++++ misc/build/hsqldb/src/org/hsqldb/lib/java/JavaSystem.java 2018-07-12 11:46:57.997837180 +0200
+@@ -160,8 +160,9 @@
+ public static void runFinalizers() {
+
+ //#ifdef JAVA2FULL
+- System.runFinalizersOnExit(true);
+-
++ try {
++ System.class.getMethod("runFinalizersOnExit", boolean.class).invoke(null, true);
++ } catch (Exception e) {}
+ //#endif
+ }
+
diff --git a/external/hsqldb/patches/i103528.patch b/external/hsqldb/patches/i103528.patch
new file mode 100644
index 000000000..3cc7d2f1d
--- /dev/null
+++ b/external/hsqldb/patches/i103528.patch
@@ -0,0 +1,11 @@
+--- misc/hsqldb/src/org/hsqldb/Library.java
++++ misc/build/hsqldb/src/org/hsqldb/Library.java
+@@ -1957,7 +1957,7 @@
+ functionMap.put("bitand", bitand);
+ functionMap.put("bitlength", bitLength);
+ functionMap.put("bitor", bitor);
+- functionMap.put("bitxor", bitor);
++ functionMap.put("bitxor", bitxor);
+ functionMap.put("character", character);
+ functionMap.put("concat", concat);
+ functionMap.put("cot", cot);
diff --git a/external/hsqldb/patches/i104901.patch b/external/hsqldb/patches/i104901.patch
new file mode 100644
index 000000000..a38773f4b
--- /dev/null
+++ b/external/hsqldb/patches/i104901.patch
@@ -0,0 +1,27 @@
+--- misc/hsqldb/src/org/hsqldb/Table.java 2007-10-19 23:59:07.000000000 +0200
++++ misc/build/hsqldb/src/org/hsqldb/Table.java 2009-09-11 13:45:42.939231519 +0200
+@@ -149,10 +149,10 @@
+ Constraint[] constraintList; // constrainst for the table
+ HsqlArrayList[] triggerLists; // array of trigger lists
+ private int[] colTypes; // fredt - types of columns
+- private int[] colSizes; // fredt - copy of SIZE values for columns
++ int[] colSizes; // fredt - copy of SIZE values for columns
+ private int[] colScales; // fredt - copy of SCALE values for columns
+ private boolean[] colNullable; // fredt - modified copy of isNullable() values
+- private Expression[] colDefaults; // fredt - expressions of DEFAULT values
++ Expression[] colDefaults; // fredt - expressions of DEFAULT values
+ private int[] defaultColumnMap; // fred - holding 0,1,2,3,...
+ private boolean hasDefaultValues; //fredt - shortcut for above
+ boolean sqlEnforceSize; // inherited from the database -
+--- misc/hsqldb/src/org/hsqldb/TableWorks.java 2007-01-14 06:48:16.000000000 +0100
++++ misc/build/hsqldb/src/org/hsqldb/TableWorks.java 2009-09-11 13:47:50.328667463 +0200
+@@ -670,7 +670,8 @@
+ // default expressions can change
+ oldCol.setType(newCol);
+ oldCol.setDefaultExpression(newCol.getDefaultExpression());
+- table.setColumnTypeVars(colIndex);
++ table.colSizes[colIndex] = oldCol.getSize();
++ table.colDefaults[colIndex] = oldCol.getDefaultExpression();
+ table.resetDefaultsFlag();
+
+ return;
diff --git a/external/hsqldb/patches/i96823.patch b/external/hsqldb/patches/i96823.patch
new file mode 100644
index 000000000..bea4a2b7e
--- /dev/null
+++ b/external/hsqldb/patches/i96823.patch
@@ -0,0 +1,94 @@
+--- misc/hsqldb/src/org/hsqldb/Expression.java 2008-05-27 17:15:05.000000000 +0200
++++ misc/build/hsqldb/src/org/hsqldb/Expression.java 2009-01-27 11:42:16.890625000 +0100
+@@ -803,61 +803,62 @@
+
+ case EXISTS :
+ buf.append(' ').append(Token.T_EXISTS).append(' ');
+- break;
++
++ return buf.toString();
+
+ case COUNT :
+ buf.append(' ').append(Token.T_COUNT).append('(');
+- break;
++ if ( "(*)".equals(left))buf.append('*');else buf.append(left); buf.append(')'); return buf.toString();
+
+ case SUM :
+ buf.append(' ').append(Token.T_SUM).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case MIN :
+ buf.append(' ').append(Token.T_MIN).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case MAX :
+ buf.append(' ').append(Token.T_MAX).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case AVG :
+ buf.append(' ').append(Token.T_AVG).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case EVERY :
+ buf.append(' ').append(Token.T_EVERY).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case SOME :
+ buf.append(' ').append(Token.T_SOME).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case STDDEV_POP :
+ buf.append(' ').append(Token.T_STDDEV_POP).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case STDDEV_SAMP :
+ buf.append(' ').append(Token.T_STDDEV_SAMP).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case VAR_POP :
+ buf.append(' ').append(Token.T_VAR_POP).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+
+ case VAR_SAMP :
+ buf.append(' ').append(Token.T_VAR_SAMP).append('(');
+ buf.append(left).append(')');
+- break;
++ return buf.toString();
+ }
+
+ throw Trace.error(Trace.EXPRESSION_NOT_SUPPORTED);
+@@ -1522,6 +1523,16 @@
+ if (exprType == COLUMN) {
+ return columnName;
+ }
++ if ( isAggregate(exprType) )
++ {
++ try
++ {
++ return getDDL();
++ }
++ catch(Exception e)
++ {
++ }
++ }
+
+ return "";
+ }
diff --git a/external/hsqldb/patches/i97032.patch b/external/hsqldb/patches/i97032.patch
new file mode 100644
index 000000000..9703b8961
--- /dev/null
+++ b/external/hsqldb/patches/i97032.patch
@@ -0,0 +1,10 @@
+--- misc/hsqldb/src/org/hsqldb/persist/HsqlDatabaseProperties.java 2008-03-17 17:05:41.000000000 +0100
++++ misc/build/hsqldb/src/org/hsqldb/persist/HsqlDatabaseProperties.java 2009-01-21 13:09:24.493470142 +0100
+@@ -429,6 +429,7 @@
+ setProperty(hsqldb_log_size, 10);
+ setProperty(sql_enforce_strict_size, true);
+ setProperty(hsqldb_nio_data_file, false);
++ setProperty(hsqldb_lock_file, true);
+ }
+
+ // OOo end
diff --git a/external/hsqldb/patches/jdbc-4.1.patch b/external/hsqldb/patches/jdbc-4.1.patch
new file mode 100644
index 000000000..7884148c5
--- /dev/null
+++ b/external/hsqldb/patches/jdbc-4.1.patch
@@ -0,0 +1,320 @@
+--- misc/hsqldb/build/build.xml 2012-07-12 10:58:11.000000000 +0200
++++ misc/build/hsqldb/build/build.xml 2012-07-12 10:49:28.000000000 +0200
+@@ -98,16 +98,24 @@
+ <echo message="ant.java.hasjsse=${ant.java.hasjsse}" />
+ </target>
+
+- <target name="javaversion6">
++ <target name="javaversion7" unless="ant.java.iscjavaset">
++ <available classname="java.util.Objects" property="ant.java.iscjava17"/>
++ <available classname="java.util.Objects" property="ant.java.iscjavaset"/>
++ </target>
++
++ <target name="javaversion6" depends="javaversion7" unless="ant.java.iscjavaset">
+ <available classname="java.net.IDN" property="ant.java.iscjava16"/>
++ <available classname="java.net.IDN" property="ant.java.iscjavaset"/>
+ </target>
+
+- <target name="javaversion4" depends="javaversion6" unless="ant.java.iscjava16">
++ <target name="javaversion4" depends="javaversion6" unless="ant.java.iscjavaset">
+ <available classname="java.nio.Buffer" property="ant.java.iscjava14"/>
++ <available classname="java.nio.Buffer" property="ant.java.iscjavaset"/>
+ </target>
+
+- <target name="javaversion2" depends="javaversion4" unless="ant.java.iscjava14">
++ <target name="javaversion2" depends="javaversion4" unless="ant.java.iscjavaset">
+ <available classname="java.lang.ref.Reference" property="ant.java.iscjava12"/>
++ <available classname="java.lang.ref.Reference" property="ant.java.iscjavaset"/>
+ </target>
+
+ <target name="-prepare" depends="init,javaversion2">
+@@ -166,6 +177,7 @@
+ <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
+ <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
+ <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++ <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcStatement.java"/>
+ <arg file="${src}/org/hsqldb/persist/LockFile.java"/>
+ <arg file="${src}/org/hsqldb/persist/Logger.java"/>
+@@ -183,6 +195,7 @@
+ <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
+ <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
+ <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++ <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcBlob.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDatabaseMetaData.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDataSource.java"/>
+@@ -210,6 +223,7 @@
+ <arg value="+JAVA2FULL"/>
+ <arg value="-JAVA4"/>
+ <arg value="-JAVA6"/>
++ <arg value="-JAVA7"/>
+ </java>
+ </target>
+
+@@ -218,6 +232,7 @@
+ <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
+ <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
+ <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++ <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcBlob.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDatabaseMetaData.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDataSource.java"/>
+@@ -244,6 +259,7 @@
+ <arg value="+JAVA2FULL"/>
+ <arg value="+JAVA4"/>
+ <arg value="-JAVA6"/>
++ <arg value="-JAVA7"/>
+ </java>
+ </target>
+
+@@ -253,6 +269,43 @@
+ <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
+ <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
+ <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++ <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcBlob.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcDatabaseMetaData.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcDataSource.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcCallableStatement.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcClob.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcConnection.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcParameterMetaData.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcPreparedStatement.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcResultSet.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcResultSetMetaData.java"/>
++ <arg file="${src}/org/hsqldb/jdbc/jdbcStatement.java"/>
++ <arg file="${src}/org/hsqldb/persist/LockFile.java"/>
++ <arg file="${src}/org/hsqldb/persist/Logger.java"/>
++ <arg file="${src}/org/hsqldb/persist/ScaledRAFile.java"/>
++ <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++ <arg file="${src}/org/hsqldb/util/DatabaseManager.java"/>
++ <arg file="${src}/org/hsqldb/util/ConnectionDialogCommon.java"/>
++ <arg file="${src}/org/hsqldb/lib/SimpleLog.java"/>
++ <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++ <arg file="${src}/org/hsqldb/lib/SimpleLog.java"/>
++ <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++ <arg file="${src}/org/hsqldb/HsqlDateTime.java"/>
++ <arg value="+JAVA2"/>
++ <arg value="+JAVA2FULL"/>
++ <arg value="+JAVA4"/>
++ <arg value="+JAVA6"/>
++ <arg value="-JAVA7"/>
++ </java>
++ </target>
++
++ <target name="switchtojdk17" depends="switchtojdk16"
++ description="self explanatory" if="ant.java.iscjava17">
++ <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
++ <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
++ <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++ <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcBlob.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDatabaseMetaData.java"/>
+ <arg file="${src}/org/hsqldb/jdbc/jdbcDataSource.java"/>
+@@ -279,10 +332,11 @@
+ <arg value="+JAVA2FULL"/>
+ <arg value="+JAVA4"/>
+ <arg value="+JAVA6"/>
++ <arg value="+JAVA7"/>
+ </java>
+ </target>
+
+- <target name="store" depends="switchtojdk16"
++ <target name="store" depends="switchtojdk17"
+ description="compiles the /store folder">
+ <javac srcdir="${src}"
+ destdir="classes"
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcCallableStatement.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcCallableStatement.java 2012-02-08 15:47:35.842635642 +0000
+@@ -3375,4 +3375,18 @@
+ */
+
+ //#endif JAVA6
++
++//#ifdef JAVA7
++ public <T> T getObject(String columnLabel, Class<T> type) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public <T> T getObject(int ColumnIndex, Class<T> type) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcConnection.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcConnection.java 2012-02-08 15:47:35.851635628 +0000
+@@ -48,6 +48,12 @@
+ */
+
+ //#endif JAVA6
++
++//#ifdef JAVA7
++import java.util.concurrent.Executor;
++
++//#endif JAVA7
++
+ import java.sql.PreparedStatement;
+ import java.sql.SQLException;
+ import java.sql.SQLWarning;
+@@ -2793,4 +2799,31 @@
+ */
+
+ //#endif JAVA6
++
++//#ifdef JAVA7
++ public int getNetworkTimeout() throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public void setNetworkTimeout(Executor executor, int millis) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public void abort(Executor executor) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public String getSchema() throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public void setSchema(String schema) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java 2012-02-08 15:47:35.835635654 +0000
+@@ -5693,4 +5693,21 @@
+ */
+
+ //#endif JAVA6
++
++
++//#ifdef JAVA7
++ public boolean generatedKeyAlwaysReturned() throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public ResultSet getPseudoColumns(String catalog, String schemaPattern,
++ String tableNamePattern, String columnNamePattern) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++
++//#endif JAVA7
++
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcDataSource.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcDataSource.java 2012-02-08 15:47:35.836635653 +0000
+@@ -47,6 +47,11 @@
+ //#endif JAVA4
+ import org.hsqldb.jdbcDriver;
+
++//#ifdef JAVA7
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
++//#endif JAVA7
++
+ // boucherb@users 20040411 - doc 1.7.2 - javadoc updates toward 1.7.2 final
+
+ /**
+@@ -323,4 +328,15 @@
+ */
+
+ //#endif JAVA6
++
++//#ifdef JAVA7
++ public Logger getParentLogger() throws SQLFeatureNotSupportedException
++ {
++ throw new AbstractMethodError(
++ "org.hsqldb.jdbc.jdbcDataSource.getParentLogger should throw" +
++ " SQLFeatureNotSupportedException, but that is not yet available" +
++ " in Java 5");
++ }
++
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcResultSet.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcResultSet.java 2012-02-08 15:47:35.866635606 +0000
+@@ -5324,4 +5324,19 @@
+ */
+
+ //#endif JAVA6
++
++//#ifdef JAVA7
++
++ public <T> T getObject(String columnLabel, Class<T> type) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public <T> T getObject(int columnNum, Class<T> type) throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++//#endif JAVA7
++
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcStatement.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcStatement.java 2012-02-08 15:47:35.872635595 +0000
+@@ -1608,4 +1608,16 @@
+ }
+ */
+ //#endif JAVA6
++
++//#ifdef JAVA7
++ public boolean isCloseOnCompletion() throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++
++ public void closeOnCompletion() throws SQLException
++ {
++ throw new UnsupportedOperationException("Not supported yet.");
++ }
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbcDriver.java 2012-02-08 15:14:42.800123566 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbcDriver.java 2012-02-08 15:47:35.826635667 +0000
+@@ -42,6 +42,11 @@
+ import org.hsqldb.persist.HsqlDatabaseProperties;
+ import org.hsqldb.persist.HsqlProperties;
+
++//#ifdef JAVA7
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
++//#endif JAVA7
++
+ // fredt@users 20011220 - patch 1.7.0 by fredt
+ // new version numbering scheme
+ // fredt@users 20020320 - patch 1.7.0 - JDBC 2 support and error trapping
+@@ -321,4 +326,15 @@
+ DriverManager.registerDriver(new jdbcDriver());
+ } catch (Exception e) {}
+ }
++
++//#ifdef JAVA7
++ public Logger getParentLogger() throws SQLFeatureNotSupportedException
++ {
++ throw new AbstractMethodError(
++ "org.hsqldb.jdbcDriver.getParentLogger should throw" +
++ " SQLFeatureNotSupportedException, but that is not yet available" +
++ " in Java 5");
++ }
++
++//#endif JAVA7
+ }
diff --git a/external/hsqldb/patches/limit_as_table_alias.patch b/external/hsqldb/patches/limit_as_table_alias.patch
new file mode 100644
index 000000000..09f49ccd5
--- /dev/null
+++ b/external/hsqldb/patches/limit_as_table_alias.patch
@@ -0,0 +1,11 @@
+--- misc/hsqldb/src/org/hsqldb/Token.java 2013-06-13 10:04:28.975934479 +0200
++++ misc/build/hsqldb/src/org/hsqldb/Token.java 2013-06-13 10:06:09.915931966 +0200
+@@ -819,7 +819,7 @@
+ Token.T_EXTRACT, Token.T_FOR, Token.T_FROM, Token.T_GROUP,
+ Token.T_HAVING, Token.T_IF, Token.T_INTO, Token.T_IFNULL,
+ Token.T_IS, Token.T_IN, Token.T_INTERSECT, Token.T_JOIN,
+- Token.T_INNER, Token.T_LEADING, Token.T_LIKE, Token.T_MAX,
++ Token.T_INNER, Token.T_LEADING, Token.T_LIKE, Token.T_LIMIT, Token.T_MAX,
+ Token.T_MIN, Token.T_NEXT, Token.T_NULLIF, Token.T_NOT,
+ Token.T_NVL, Token.T_MINUS, Token.T_ON, Token.T_ORDER, Token.T_OR,
+ Token.T_OUTER, Token.T_POSITION, Token.T_PRIMARY, Token.T_SELECT,
diff --git a/external/hsqldb/patches/multipleResultSets.patch b/external/hsqldb/patches/multipleResultSets.patch
new file mode 100644
index 000000000..56ddb13b4
--- /dev/null
+++ b/external/hsqldb/patches/multipleResultSets.patch
@@ -0,0 +1,11 @@
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java 2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java 2012-02-08 15:47:35.835635654 +0000
+@@ -1347,7 +1347,7 @@
+ * @exception SQLException if a database access error occurs
+ */
+ public boolean supportsMultipleResultSets() throws SQLException {
+- return false;
++ return true;
+ }
+
+ /**