Hi, The difference between 1.3.x and 1.4.x is the MVStore. If you manually disable it by appending ";mv_store=false" to the database URL, then the difference is very small.
Regards, Thomas On Mon, Oct 20, 2014 at 3:17 PM, Gili <[email protected]> wrote: > FYI: This is marked as fixed in version 1.4.182 Beta: > http://www.h2database.com/html/changelog.html > > Gili > > > On Tuesday, September 2, 2014 1:17:40 AM UTC-4, Gili wrote: >> >> Hi Thomas, >> >> Will this be fixed in 1.3 in the near future? I am avoiding the beta >> builds because I am under the impression they are less stable than 1.3. >> >> Thanks, >> Gili >> >> On Saturday, August 30, 2014 7:57:14 AM UTC-4, Thomas Mueller wrote: >>> >>> Hi, >>> >>> I know what the problem is. readLong will first try to convert >>> 9223372036854775808 >>> to a long (that doesn't work), and then negate it (that would work, but >>> it's too late). One solution is to first negate it, and then convert to a >>> long. See below for a possible patch (not tested). >>> >>> > It seems any negative number causes the same problem. .. CREATE TABLE >>> connection (id BIGINT AUTO_INCREMENT(-1, 1) PRIMARY KEY) >>> >>> I think that's not the problem. Your statement (with -1) works for me. >>> >>> Patch (it also renames getInt to readInt): >>> >>> ### Eclipse Workspace Patch 1.0 >>> #P h2 >>> Index: src/main/org/h2/command/Parser.java >>> =================================================================== >>> --- src/main/org/h2/command/Parser.java (revision 5847) >>> +++ src/main/org/h2/command/Parser.java (working copy) >>> @@ -536,7 +536,7 @@ >>> private Prepared parseAnalyze() { >>> Analyze command = new Analyze(session); >>> if (readIf("SAMPLE_SIZE")) { >>> - command.setTop(getPositiveInt()); >>> + command.setTop(readPositiveInt()); >>> } >>> return command; >>> } >>> @@ -2966,15 +2966,15 @@ >>> return function; >>> } >>> >>> - private int getPositiveInt() { >>> - int v = getInt(); >>> + private int readPositiveInt() { >>> + int v = readInt(); >>> if (v < 0) { >>> throw DbException.getInvalidValueException("positive >>> integer", v); >>> } >>> return v; >>> } >>> >>> - private int getInt() { >>> + private int readInt() { >>> boolean minus = false; >>> if (currentTokenType == MINUS) { >>> minus = true; >>> @@ -2982,12 +2982,16 @@ >>> } else if (currentTokenType == PLUS) { >>> read(); >>> } >>> - if (currentTokenType != VALUE || currentValue.getType() != >>> Value.INT) { >>> + if (currentTokenType != VALUE) { >>> throw DbException.getSyntaxError(sqlCommand, parseIndex, >>> "integer"); >>> } >>> + if (minus) { >>> + // must do that now, otherwise Integer.MIN_VALUE wouldn't >>> work >>> + currentValue = currentValue.negate(); >>> + } >>> int i = currentValue.getInt(); >>> read(); >>> - return minus ? -i : i; >>> + return i; >>> } >>> >>> private long readLong() { >>> @@ -2995,14 +2999,19 @@ >>> if (currentTokenType == MINUS) { >>> minus = true; >>> read(); >>> + } else if (currentTokenType == PLUS) { >>> + read(); >>> } >>> - if (currentTokenType != VALUE || >>> - (currentValue.getType() != Value.INT && >>> currentValue.getType() != Value.LONG)) { >>> + if (currentTokenType != VALUE) { >>> throw DbException.getSyntaxError(sqlCommand, parseIndex, >>> "long"); >>> } >>> + if (minus) { >>> + // must do that now, otherwise Long.MIN_VALUE wouldn't work >>> + currentValue = currentValue.negate(); >>> + } >>> long i = currentValue.getLong(); >>> read(); >>> - return minus ? -i : i; >>> + return i; >>> } >>> >>> private boolean readBooleanSetting() { >>> @@ -3901,7 +3910,7 @@ >>> column.setSequence(sequence); >>> } >>> if (readIf("SELECTIVITY")) { >>> - int value = getPositiveInt(); >>> + int value = readPositiveInt(); >>> column.setSelectivity(value); >>> } >>> String comment = readCommentIf(); >>> @@ -4005,7 +4014,7 @@ >>> readIf("CHAR"); >>> if (dataType.supportsScale) { >>> if (readIf(",")) { >>> - scale = getInt(); >>> + scale = readInt(); >>> original += ", " + scale; >>> } else { >>> // special case: TIMESTAMP(5) actually means >>> @@ -4027,7 +4036,7 @@ >>> } else if (readIf("(")) { >>> // Support for MySQL: INT(11), MEDIUMINT(8) and so on. >>> // Just ignore the precision. >>> - getPositiveInt(); >>> + readPositiveInt(); >>> read(")"); >>> } >>> if (readIf("FOR")) { >>> @@ -4532,7 +4541,7 @@ >>> command.setRowBased(false); >>> } >>> if (readIf("QUEUE")) { >>> - command.setQueueSize(getPositiveInt()); >>> + command.setQueueSize(readPositiveInt()); >>> } >>> command.setNoWait(readIf("NOWAIT")); >>> read("CALL"); >>> @@ -4940,7 +4949,7 @@ >>> } else if (readIf("NUMBERS")) { >>> command.setInt(Constants.ALLOW_LITERALS_NUMBERS); >>> } else { >>> - command.setInt(getPositiveInt()); >>> + command.setInt(readPositiveInt()); >>> } >>> return command; >>> } else if (readIf("DEFAULT_TABLE_TYPE")) { >>> @@ -4951,7 +4960,7 @@ >>> } else if (readIf("CACHED")) { >>> command.setInt(Table.TYPE_CACHED); >>> } else { >>> - command.setInt(getPositiveInt()); >>> + command.setInt(readPositiveInt()); >>> } >>> return command; >>> } else if (readIf("CREATE")) { >>> >>> >>> Regards, >>> Thomas >>> >>> >>> >>> >>> On Sat, Aug 30, 2014 at 1:31 PM, Steve McLeod <[email protected]> >>> wrote: >>> >>>> It is not your use of Long.MIN_VALUE that is a problem. It seems any >>>> negative number causes the same problem. For instance, this fails with a >>>> syntax exception: >>>> >>>> CREATE TABLE connection (id BIGINT AUTO_INCREMENT(-1, 1) PRIMARY KEY); >>>> >>>> >>>> On Saturday, 30 August 2014 08:21:54 UTC+2, Gili wrote: >>>>> >>>>> Noel, >>>>> >>>>> Both the H2 documentation and java.lang.Long.MIN_VALUE indicate that >>>>> -9223372036854775808 is a legal value, yet H2 rejects it. Isn't this a >>>>> bug? >>>>> >>>>> Gili >>>>> >>>>> On Saturday, August 30, 2014 1:36:15 AM UTC-4, Noel Grandin wrote: >>>>>> >>>>>> Our internal implementation of sequences uses longs for everything, >>>>>> so >>>>>> you will need to use values for start/stop/cycle/increment that fit >>>>>> into a long value. >>>>>> >>>>>> On Fri, Aug 29, 2014 at 11:04 PM, Gili <[email protected]> >>>>>> wrote: >>>>>> > Two clarifications: >>>>>> > >>>>>> > I am using version 1.3.176. >>>>>> > This behavior contradicts the documentation: >>>>>> > http://www.h2database.com/html/datatypes.html#bigint_type >>>>>> > >>>>>> > Please also take this opportunity to clarify the difference between >>>>>> IDENTITY >>>>>> > and BIGINT in the documentation. As far as I understand it, >>>>>> IDENTITY is >>>>>> > equivalent to "BIGINT AUTO_INCREMENT PRIMARY KEY" but it's not >>>>>> clear if >>>>>> > there are any other differences. For example, the documentation >>>>>> reads "Used >>>>>> > values are never re-used, even when the transaction is rolled back" >>>>>> for >>>>>> > IDENTITY but not for BIGINT AUTO_INCREMENT so it's not clear if >>>>>> there is >>>>>> > some magic under the hood. >>>>>> > >>>>>> > Gili >>>>>> > >>>>>> > On Friday, August 29, 2014 4:53:16 PM UTC-4, Gili wrote: >>>>>> >> >>>>>> >> Hi, >>>>>> >> >>>>>> >> If I run: >>>>>> >> >>>>>> >> CREATE TABLE connection (id BIGINT AUTO_INCREMENT(- >>>>>> 9223372036854775808, >>>>>> >> 1) PRIMARY KEY); >>>>>> >> >>>>>> >> I get: >>>>>> >> >>>>>> >> Syntax error in SQL statement "CREATE TABLE CONNECTION (ID >>>>>> BIGINT >>>>>> >> AUTO_INCREMENT(-9223372036854775808[*], 1) PRIMARY KEY)"; >>>>>> expected "long" >>>>>> >> >>>>>> >> I've successfully initialized all other types at their minimum >>>>>> values. >>>>>> >> BIGINT seems to be the only type that has a problem with this. >>>>>> >> >>>>>> >> Gili >>>>>> > >>>>>> > -- >>>>>> > You received this message because you are subscribed to the Google >>>>>> Groups >>>>>> > "H2 Database" group. >>>>>> > To unsubscribe from this group and stop receiving emails from it, >>>>>> send an >>>>>> > email to [email protected]. >>>>>> > To post to this group, send email to [email protected]. >>>>>> > Visit this group at http://groups.google.com/group/h2-database. >>>>>> > For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "H2 Database" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/h2-database. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/h2-database. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.
