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.

Reply via email to