Merge fails for OffsetDateTime when offset is UTC (+00:00)
Lance Java via Hsqldb-user <[email protected]> Fri, 9 Jun 2023 16:42:47 +0100
| Newsgroups | gmane.comp.java.hsqldb.user |
|---|---|
| Message-ID | <CAN7Z0vSPLz==upCyxYeNmGXh0vNSY8BWykgNRFUy_AbF1rCovg@mail.gmail.com> |
--0000000000002f93fa05fdb43951
Content-Type: multipart/alternative; boundary="0000000000002f93f805fdb4394f"
--0000000000002f93f805fdb4394f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
I=E2=80=99m having an issue with the following merge logic if I use an
OffsetDateTime with offset +00:00
private static final String MERGE_SQL =3D
"merge into sample t " +
"using (select ? as code, ? as updated from dual) val " +
"on (t.code =3D val.code) " +
"when matched then update set t.updated =3D val.updated " +
"when not matched then insert(code, updated) values (val.code,
val.updated)";
private int merge(String code, OffsetDateTime updated) throws
SQLException {
try (PreparedStatement statement =3D
connection.prepareStatement(MERGE_SQL)) {
statement.setString(1, code);
statement.setObject(2, updated, Types.TIMESTAMP_WITH_TIMEZONE);
return statement.executeUpdate();
}
}
The merge statement works fine for all offsets except UTC (eg offset +01:00
works)
I think this is caused by the fact that toString() of an OffsetDateTime at
UTC has the Z suffix instead of +00:00
It seems that an INSERT statement does not have the same problem as MERGE
As a workaround I can do the following
private static final DateTimeFormatter FORMATTER =3D new
DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd HH:mm:ss.SSS")
.appendOffset("+HH:MM", "+00:00")
.toFormatter();
private int merge(String code, OffsetDateTime updated) throws
SQLException {
try (PreparedStatement statement =3D
connection.prepareStatement(MERGE_SQL)) {
statement.setString(1, code);
statement.setString(2, FORMATTER.format(updated));
return statement.executeUpdate();
}
}
Failing test attached, output below
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
2023-06-09 15:18:15.020 1 INSERT INTO SYSTEM_LOBS.BLOCKS VALUES(:0 ,:1 ,:2
) (0,2147483647,0)
2023-06-09 15:18:15.022 1 COMMIT
2023-06-09 15:18:15.024 2 COMMIT
2023-06-09 15:18:15.025 2 create table sample (code varchar2(50), updated
timestamp with time zone)
2023-06-09 15:18:15.025 2 COMMIT
2023-06-09 15:18:15.040 2 merge into sample t using (select :0 as code,
:1 as updated from dual) val on (t.code =3D val.code) when matched then
update set t.updated =3D val.updated when not matched then insert(code,
updated) values (val.code, val.updated) ('code1','2007-12-03
10:15:30+01:00')
2023-06-09 15:18:15.040 2 COMMIT
2023-06-09 15:18:15.041 2 merge into sample t using (select :0 as code,
:1 as updated from dual) val on (t.code =3D val.code) when matched then
update set t.updated =3D val.updated when not matched then insert(code,
updated) values (val.code, val.updated) ('code2','2007-12-03 10:15:30Z')
2023-06-09 15:18:15.041 2 ROLLBACK
2023-06-09 15:18:15.046 2 ROLLBACK
java.sql.SQLDataException: data exception: invalid datetime format
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown
Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown
Source)
at
com.sample.DeletemeHsqlBugTest.merge(DeletemeHsqlBugTest.java:79)
at
com.sample.DeletemeHsqlBugTest.testMerge(DeletemeHsqlBugTest.java:58)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
=E2=80=A6
Caused by: org.hsqldb.HsqlException: data exception: invalid datetime forma=
t
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at
org.hsqldb.types.DateTimeType.convertToDatetimeSpecial(Unknown Source)
at org.hsqldb.types.DateTimeType.convertToType(Unknown Source)
at org.hsqldb.ExpressionOp.getValue(Unknown Source)
at org.hsqldb.StatementDML.getInsertData(Unknown Source)
at org.hsqldb.StatementDML.executeMergeStatement(Unknown Source=
)
at org.hsqldb.StatementDML.getResult(Unknown Source)
at org.hsqldb.StatementDMQL.execute(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 73 more
--0000000000002f93f805fdb4394f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto"><div class=3D"gmail_quote" dir=3D"auto"><div dir=3D"ltr" =
class=3D"gmail_attr"><span style=3D"font-family:Arial,sans-serif;font-size:=
10pt">I=E2=80=99m having an issue with the following merge logic if I use a=
n OffsetDateTime with offset +00:00</span><br></div><div lang=3D"EN-GB" lin=
k=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:break-word"><div class=
=3D"m_-2110861338389721347WordSection1">
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 private static final String MERGE_=
SQL =3D<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 "merge into sample t " +<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 "using (select ? as code, ? as updated from dual) val =
" +<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0
</span><span lang=3D"FR" style=3D"font-size:10.0pt;font-family:"Arial&=
quot;,sans-serif">"on (t.code =3D val.code) " +<u></u><u></u></sp=
an></p>
<p class=3D"MsoNormal"><span lang=3D"FR" style=3D"font-size:10.0pt;font-fam=
ily:"Arial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span><span style=3D"font-size:10.0pt;font-family:"Arial",sans-s=
erif">"when matched then update set t.updated =3D val.updated " +=
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 "when not matched then insert(code, updated) values (v=
al.code, val.updated)";<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 private int merge(String code, Off=
setDateTime updated) throws SQLException {<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 try (Prepa=
redStatement statement =3D connection.prepareStatement(MERGE_SQL)) {<u></u>=
<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 statement.setString(1, code);<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 statement.setObject(2, updated, Types.TIMESTAMP_WITH_TIMEZO=
NE);<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 return statement.executeUpdate();<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u=
></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">The merge statement works fine for all offsets except=
UTC (eg offset +01:00 works)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">I think this is caused by the fact that toString() of=
an OffsetDateTime at UTC has the Z suffix instead of +00:00<u></u><u></u><=
/span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">It seems that an INSERT statement does not have the s=
ame problem as MERGE<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">As a workaround I can do the following<u></u><u></u><=
/span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 private static final DateTimeForma=
tter FORMATTER =3D new DateTimeFormatterBuilder()<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 .appendPattern("yyyy-MM-dd HH:mm:ss.SSS")<u></u><=
u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 .appendOffset("+HH:MM", "+00:00")<u></u=
><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 .toFormatter();<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 private int merge(String code, Off=
setDateTime updated) throws SQLException {<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 try (Prepa=
redStatement statement =3D connection.prepareStatement(MERGE_SQL)) {<u></u>=
<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 statement.setString(1, code);<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 statement.setString(2, FORMATTER.format(updated));<u></u><u=
></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 return statement.executeUpdate();<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }<u></u><u=
></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0 }<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">Failing test attached, output below<u></u><u></u></sp=
an></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.020 1 INSERT INTO SYSTEM_LOBS.BLO=
CKS VALUES(:0 ,:1 ,:2 ) (0,2147483647,0)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.022 1 COMMIT
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.024 2 COMMIT
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.025 2 create table sample (code v=
archar2(50), updated timestamp with time zone)
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.025 2 COMMIT
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.040 2 merge into sample t using (=
select :0=C2=A0 as code, :1=C2=A0 as updated from dual) val on (t.code =3D =
val.code) when matched then update set t.updated =3D val.updated
when not matched then insert(code, updated) values (val.code, val.updated)=
('code1','2007-12-03 10:15:30+01:00')<u></u><u></u></span>=
</p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.040 2 COMMIT
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.041 2 merge into sample t using (=
select :0=C2=A0 as code, :1=C2=A0 as updated from dual) val on (t.code =3D =
val.code) when matched then update set t.updated =3D val.updated
when not matched then insert(code, updated) values (val.code, val.updated)=
('code2','2007-12-03 10:15:30Z')<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.041 2 ROLLBACK
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">2023-06-09 15:18:15.046 2 ROLLBACK
<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">java.sql.SQLDataException: data exception: invalid da=
tetime format<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)<u>=
</u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)<u>=
</u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknow=
n Source)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unkn=
own Source)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at com.sample.DeletemeHsqlBugTest.merge(DeletemeHsqlBugTest=
.java:79)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at com.sample.DeletemeHsqlBugTest.testMerge(DeletemeHsqlBug=
Test.java:58)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.=
invoke0(Native Method)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 =E2=80=A6</span><span style=3D"font-size:10.0pt;font-family=
:"Arial",sans-serif"><u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">Caused by: org.hsqldb.HsqlException: data exception: =
invalid datetime format<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.error.Error.error(Unknown Source)<u></u><u></=
u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.error.Error.error(Unknown Source)<u></u><u></=
u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.types.DateTimeType.convertToDatetimeSpecial(U=
nknown Source)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.types.DateTimeType.convertToType(Unknown Sour=
ce)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.ExpressionOp.getValue(Unknown Source)<u></u><=
u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.StatementDML.getInsertData(Unknown Source)<u>=
</u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.StatementDML.executeMergeStatement(Unknown So=
urce)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.StatementDML.getResult(Unknown Source)<u></u>=
<u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.StatementDMQL.execute(Unknown Source)<u></u><=
u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.Session.executeCompiledStatement(Unknown Sour=
ce)<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 at org.hsqldb.Session.execute(Unknown Source)<u></u><u></u>=
</span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 ... 73 more<u></u><u></u></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ar=
ial",sans-serif"><u></u>=C2=A0<u></u></span></p>
</div>
<p><br></p>
</div>
</div></div>
--0000000000002f93f805fdb4394f--
--0000000000002f93fa05fdb43951
Content-Type: application/ms-java; name="DeletemeHsqlBugTest.java"
Content-Disposition: attachment; filename="DeletemeHsqlBugTest.java"
Content-Transfer-Encoding: base64
Content-ID: <188a0d2575a2e7514331>
X-Attachment-Id: 188a0d2575a2e7514331
cGFja2FnZSBjb20uc2FtcGxlOw0KDQppbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLkFmdGVy
RWFjaDsNCmltcG9ydCBvcmcuanVuaXQuanVwaXRlci5hcGkuQmVmb3JlRWFjaDsNCmltcG9ydCBv
cmcuanVuaXQuanVwaXRlci5hcGkuVGVzdDsNCg0KaW1wb3J0IGphdmEuc3FsLio7DQppbXBvcnQg
amF2YS50aW1lLk9mZnNldERhdGVUaW1lOw0KaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQpp
bXBvcnQgamF2YS51dGlsLkxpc3Q7DQoNCmltcG9ydCBzdGF0aWMgb3JnLmFzc2VydGouY29yZS5h
cGkuQXNzZXJ0aW9ucy5hc3NlcnRUaGF0Ow0KDQpwdWJsaWMgY2xhc3MgRGVsZXRlbWVIc3FsQnVn
VGVzdCB7DQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENSRUFURV9UQUJMRV9TUUwg
PSAiY3JlYXRlIHRhYmxlIHNhbXBsZSAoY29kZSB2YXJjaGFyMig1MCksIHVwZGF0ZWQgdGltZXN0
YW1wIHdpdGggdGltZSB6b25lKSI7DQogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNF
TEVDVF9BTExfU1FMID0gInNlbGVjdCAqIGZyb20gc2FtcGxlIG9yZGVyIGJ5IGNvZGUiOw0KICAg
IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlNFUlRfU1FMID0gImluc2VydCBpbnRvIHNh
bXBsZSAoY29kZSwgdXBkYXRlZCkgdmFsdWVzID8sID8iOw0KICAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIFN0cmluZyBNRVJHRV9TUUwgPQ0KICAgICAgICAgICAgIm1lcmdlIGludG8gc2FtcGxlIHQg
IiArDQogICAgICAgICAgICAidXNpbmcgKHNlbGVjdCA/IGFzIGNvZGUsID8gYXMgdXBkYXRlZCBm
cm9tIGR1YWwpIHZhbCAiICsNCiAgICAgICAgICAgICJvbiAodC5jb2RlID0gdmFsLmNvZGUpICIg
Kw0KICAgICAgICAgICAgIndoZW4gbWF0Y2hlZCB0aGVuIHVwZGF0ZSBzZXQgdC51cGRhdGVkID0g
dmFsLnVwZGF0ZWQgIiArDQogICAgICAgICAgICAid2hlbiBub3QgbWF0Y2hlZCB0aGVuIGluc2Vy
dChjb2RlLCB1cGRhdGVkKSB2YWx1ZXMgKHZhbC5jb2RlLCB2YWwudXBkYXRlZCkiOw0KICAgIHBy
aXZhdGUgQ29ubmVjdGlvbiBjb25uZWN0aW9uOw0KDQogICAgQEJlZm9yZUVhY2gNCiAgICBwdWJs
aWMgdm9pZCBiZWZvcmVFYWNoKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQogICAgICAgIGNvbm5lY3Rp
b24gPSBEcml2ZXJNYW5hZ2VyLmdldENvbm5lY3Rpb24oImpkYmM6aHNxbGRiOm1lbTp0ZXN0O3Nx
bC5zeW50YXhfb3JhPXRydWU7aHNxbGRiLnNxbGxvZz0zIik7DQogICAgICAgIGNvbm5lY3Rpb24u
Y3JlYXRlU3RhdGVtZW50KCkuZXhlY3V0ZShDUkVBVEVfVEFCTEVfU1FMKTsNCiAgICB9DQoNCiAg
ICBAQWZ0ZXJFYWNoDQogICAgcHVibGljIHZvaWQgYWZ0ZXJFYWNoKCkgdGhyb3dzIEV4Y2VwdGlv
biB7DQogICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTsNCiAgICB9DQoNCiAgICBAVGVzdA0KICAg
IHB1YmxpYyB2b2lkIHRlc3RJbnNlcnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCiAgICAgICAgT2Zm
c2V0RGF0ZVRpbWUgZGF0ZTEgPSBPZmZzZXREYXRlVGltZS5wYXJzZSgiMjAwNy0xMi0wM1QxMDox
NTozMCswMDowMCIpOw0KICAgICAgICBPZmZzZXREYXRlVGltZSBkYXRlMiA9IGRhdGUxLnBsdXNI
b3Vycyg1KTsNCg0KICAgICAgICBpbnNlcnQobmV3IFNhbXBsZSgiY29kZTEiLCBkYXRlMSkpOw0K
ICAgICAgICBpbnNlcnQobmV3IFNhbXBsZSgiY29kZTIiLCBkYXRlMikpOw0KDQogICAgICAgIExp
c3Q8U2FtcGxlPiByb3dzID0gc2VsZWN0QWxsKCk7DQoNCiAgICAgICAgYXNzZXJ0VGhhdChyb3dz
KS5leHRyYWN0aW5nKFNhbXBsZTo6Z2V0Q29kZSkuY29udGFpbnNFeGFjdGx5KCJjb2RlMSIsICJj
b2RlMiIpOw0KICAgICAgICBhc3NlcnRUaGF0KHJvd3MpLmV4dHJhY3RpbmcoU2FtcGxlOjpnZXRV
cGRhdGVkKS5jb250YWluc0V4YWN0bHkoZGF0ZTEsIGRhdGUyKTsNCiAgICB9DQoNCiAgICBAVGVz
dA0KICAgIHB1YmxpYyB2b2lkIHRlc3RNZXJnZSgpIHRocm93cyBFeGNlcHRpb24gew0KICAgICAg
ICBPZmZzZXREYXRlVGltZSBkYXRlMSA9IE9mZnNldERhdGVUaW1lLnBhcnNlKCIyMDA3LTEyLTAz
VDEwOjE1OjMwKzAxOjAwIik7DQogICAgICAgIE9mZnNldERhdGVUaW1lIGRhdGUyID0gT2Zmc2V0
RGF0ZVRpbWUucGFyc2UoIjIwMDctMTItMDNUMTA6MTU6MzArMDA6MDAiKTsNCiAgICAgICAgT2Zm
c2V0RGF0ZVRpbWUgZGF0ZTMgPSBkYXRlMS5wbHVzSG91cnMoNik7DQoNCiAgICAgICAgbWVyZ2Uo
bmV3IFNhbXBsZSgiY29kZTEiLCBkYXRlMSkpOw0KICAgICAgICBtZXJnZShuZXcgU2FtcGxlKCJj
b2RlMiIsIGRhdGUyKSk7DQogICAgICAgIG1lcmdlKG5ldyBTYW1wbGUoImNvZGUyIiwgZGF0ZTMp
KTsNCg0KICAgICAgICBMaXN0PFNhbXBsZT4gcm93cyA9IHNlbGVjdEFsbCgpOw0KDQogICAgICAg
IGFzc2VydFRoYXQocm93cykuZXh0cmFjdGluZyhTYW1wbGU6OmdldENvZGUpLmNvbnRhaW5zRXhh
Y3RseSgiY29kZTEiLCAiY29kZTIiKTsNCiAgICAgICAgYXNzZXJ0VGhhdChyb3dzKS5leHRyYWN0
aW5nKFNhbXBsZTo6Z2V0VXBkYXRlZCkuY29udGFpbnNFeGFjdGx5KGRhdGUxLCBkYXRlMyk7DQog
ICAgfQ0KDQogICAgcHJpdmF0ZSBpbnQgaW5zZXJ0KFNhbXBsZSBzYW1wbGUpIHRocm93cyBTUUxF
eGNlcHRpb24gew0KICAgICAgICB0cnkgKFByZXBhcmVkU3RhdGVtZW50IHN0YXRlbWVudCA9IGNv
bm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChJTlNFUlRfU1FMKSkgew0KICAgICAgICAgICAgc3Rh
dGVtZW50LnNldFN0cmluZygxLCBzYW1wbGUuZ2V0Q29kZSgpKTsNCiAgICAgICAgICAgIHN0YXRl
bWVudC5zZXRPYmplY3QoMiwgc2FtcGxlLmdldFVwZGF0ZWQoKSwgVHlwZXMuVElNRVNUQU1QX1dJ
VEhfVElNRVpPTkUpOw0KICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudC5leGVjdXRlVXBkYXRl
KCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwcml2YXRlIGludCBtZXJnZShTYW1wbGUgc2Ft
cGxlKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsNCiAgICAgICAgdHJ5IChQcmVwYXJlZFN0YXRlbWVu
dCBzdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoTUVSR0VfU1FMKSkgew0K
ICAgICAgICAgICAgc3RhdGVtZW50LnNldFN0cmluZygxLCBzYW1wbGUuZ2V0Q29kZSgpKTsNCiAg
ICAgICAgICAgIHN0YXRlbWVudC5zZXRPYmplY3QoMiwgc2FtcGxlLmdldFVwZGF0ZWQoKSwgVHlw
ZXMuVElNRVNUQU1QX1dJVEhfVElNRVpPTkUpOw0KICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVu
dC5leGVjdXRlVXBkYXRlKCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwcml2YXRlIExpc3Q8
U2FtcGxlPiBzZWxlY3RBbGwoKSB0aHJvd3MgU1FMRXhjZXB0aW9uIHsNCiAgICAgICAgdHJ5IChT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gY29ubmVjdGlvbi5jcmVhdGVTdGF0ZW1lbnQoKSkgew0KICAg
ICAgICAgICAgUmVzdWx0U2V0IHJzID0gc3RhdGVtZW50LmV4ZWN1dGVRdWVyeShTRUxFQ1RfQUxM
X1NRTCk7DQogICAgICAgICAgICBMaXN0PFNhbXBsZT4gcm93cyA9IG5ldyBBcnJheUxpc3Q8Pigp
Ow0KICAgICAgICAgICAgd2hpbGUgKHJzLm5leHQoKSkgew0KICAgICAgICAgICAgICAgIHJvd3Mu
YWRkKG5ldyBTYW1wbGUocnMuZ2V0U3RyaW5nKCJjb2RlIiksIHJzLmdldE9iamVjdCgidXBkYXRl
ZCIsIE9mZnNldERhdGVUaW1lLmNsYXNzKSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
cmV0dXJuIHJvd3M7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgc3RhdGljIGNsYXNz
IFNhbXBsZSB7DQogICAgICAgIHByaXZhdGUgU3RyaW5nIGNvZGU7DQogICAgICAgIHByaXZhdGUg
T2Zmc2V0RGF0ZVRpbWUgdXBkYXRlZDsNCg0KICAgICAgICBwdWJsaWMgU2FtcGxlKFN0cmluZyBj
b2RlLCBPZmZzZXREYXRlVGltZSB1cGRhdGVkKSB7DQogICAgICAgICAgICB0aGlzLmNvZGUgPSBj
b2RlOw0KICAgICAgICAgICAgdGhpcy51cGRhdGVkID0gdXBkYXRlZDsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29kZSgpIHsNCiAgICAgICAgICAgIHJldHVybiBjb2Rl
Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIE9mZnNldERhdGVUaW1lIGdldFVwZGF0ZWQo
KSB7DQogICAgICAgICAgICByZXR1cm4gdXBkYXRlZDsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg==
--0000000000002f93fa05fdb43951
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--0000000000002f93fa05fdb43951
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Hsqldb-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hsqldb-user
--0000000000002f93fa05fdb43951--