H2 1.3.173 を使用しています。
次の表があります。
CREATE TABLE Flights (
FlightId INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY HASH,
AircraftId INTEGER NOT NULL,
DepartureDate TIMESTAMP NOT NULL,
DepartureAirport VARCHAR(3) NOT NULL,
ArrivalDate TIMESTAMP NOT NULL,
ArrivalAirport VARCHAR(3) NOT NULL,
);
CREATE HASH INDEX idxFlightAircraftId ON Flights (AircraftId);
次のクエリを使用して、各航空機の最初の出発空港を探しています。
SELECT * FROM Flights A INNER JOIN (SELECT AircraftId,
MIN(DepartureDate) AS DepDate FROM Flights
GROUP BY AircraftId) B
ON A.AircraftId = B.AircraftId
AND A.DepartureDate = B.DepDate
ORDER BY A.AircraftId ASC;
クエリはファイル モードで正しく実行されます。つまり、次の URL を使用します。
jdbc:h2:file:~/db
ただし、メモリ モードではありません。つまり、次の URL を使用します。
jdbc:h2:mem:db
この場合、次の例外が発生します。
org.h2.jdbc.JdbcSQLException: General error:
"java.lang.RuntimeException: Unexpected code path"
編集:例外メッセージとエラーコード:
org.h2.jdbc.JdbcSQLException: General error: "java.lang.RuntimeException: Unexpected code path"; SQL statement:
SELECT * FROM Flights A INNER JOIN (SELECT AircraftId, MIN(DepartureDate) AS DepDate FROM Flights GROUP BY AircraftId) B ON A.AircraftId = B.AircraftId AND A.DepartureDate = B.DepDate ORDER BY A.AircraftId ASC [50000-173]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:331) ~[h2-1.3.173.jar:1.3.173]
at org.h2.message.DbException.get(DbException.java:160) ~[h2-1.3.173.jar:1.3.173]
at org.h2.message.DbException.convert(DbException.java:283) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.Command.executeQuery(Command.java:199) ~[h2-1.3.173.jar:1.3.173]
at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78) ~[h2-1.3.173.jar:1.3.173]
...
Caused by: java.lang.RuntimeException: Unexpected code path
at org.h2.message.DbException.throwInternalError(DbException.java:230) ~[h2-1.3.173.jar:1.3.173]
at org.h2.message.DbException.throwInternalError(DbException.java:243) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.NonUniqueHashIndex.find(NonUniqueHashIndex.java:80) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.BaseIndex.find(BaseIndex.java:126) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.IndexCursor.find(IndexCursor.java:155) ~[h2-1.3.173.jar:1.3.173]
at org.h2.table.TableFilter.next(TableFilter.java:328) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Select.queryGroupSorted(Select.java:164) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Select.queryWithoutCache(Select.java:618) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Query.query(Query.java:314) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Query.query(Query.java:284) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.ViewIndex.find(ViewIndex.java:253) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.BaseIndex.find(BaseIndex.java:126) ~[h2-1.3.173.jar:1.3.173]
at org.h2.index.IndexCursor.find(IndexCursor.java:155) ~[h2-1.3.173.jar:1.3.173]
at org.h2.table.TableFilter.next(TableFilter.java:328) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Select.queryFlat(Select.java:518) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Select.queryWithoutCache(Select.java:625) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Query.query(Query.java:314) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Query.query(Query.java:284) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.dml.Query.query(Query.java:36) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.CommandContainer.query(CommandContainer.java:91) ~[h2-1.3.173.jar:1.3.173]
at org.h2.command.Command.executeQuery(Command.java:195) ~[h2-1.3.173.jar:1.3.173]
何か案が?ありがとう。ローラン