summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZolnai Tamás <zolnaitamas2000@gmail.com>2013-06-13 10:40:31 +0200
committerZolnai Tamás <zolnaitamas2000@gmail.com>2013-06-14 09:49:22 +0200
commite00a04236d999849d850d4f26b7167d5975ecf39 (patch)
tree900f60acbedea500e8a4041edfdfea64bf68dc49
parent4071270f7da800e58027e26f426e6e73f3abe737 (diff)
hsqldb does not support "select * from t limit n"
If limit clause follow from clause directly than the statement parser of hsqldb parses "LIMIT" token like a table alias and that's why the next number is unexpected. The problem was that the limit token was not added to a "keyword" vector in which parser search while working with form clause. If the algorithm find a keyword after table names than it knows it is the end of the form clause. That's why it worked with any other keywords like "ORDER_BY", "WHERE", "GROUP BY" and so on. Change-Id: Iacd3ea3493c85eb0f2579aaad6903537ac65d25a (cherry picked from commit 05d738294025b4a26e7cc3c6180e10ff784555e2)
-rw-r--r--hsqldb/UnpackedTarball_hsqldb.mk1
-rw-r--r--hsqldb/patches/limit_as_table_alias.patch11
2 files changed, 12 insertions, 0 deletions
diff --git a/hsqldb/UnpackedTarball_hsqldb.mk b/hsqldb/UnpackedTarball_hsqldb.mk
index af7883427e10..271f692b9af0 100644
--- a/hsqldb/UnpackedTarball_hsqldb.mk
+++ b/hsqldb/UnpackedTarball_hsqldb.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,hsqldb,\
hsqldb/patches/i103528.patch \
hsqldb/patches/i104901.patch \
hsqldb/patches/fdo36824.patch \
+ hsqldb/patches/limit_as_table_alias.patch \
$(if $(filter YES,$(HSQLDB_USE_JDBC_4_1)),\
hsqldb/patches/jdbc-4.1.patch \
) \
diff --git a/hsqldb/patches/limit_as_table_alias.patch b/hsqldb/patches/limit_as_table_alias.patch
new file mode 100644
index 000000000000..09f49ccd561d
--- /dev/null
+++ b/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,