From 913692e0b1df1d1b0b27392d398752937be6f0c4 Mon Sep 17 00:00:00 2001 From: Evgenij Ryazanov Date: Sun, 14 Apr 2024 12:09:45 +0800 Subject: [PATCH 1/2] Reverse and incremental index sorting optimizations --- h2/src/docsrc/html/changelog.html | 2 + h2/src/docsrc/html/performance.html | 11 + h2/src/main/org/h2/command/ddl/Analyze.java | 2 +- .../org/h2/command/dml/ScriptCommand.java | 2 +- h2/src/main/org/h2/command/query/Select.java | 303 +++++++++++------- .../h2/constraint/ConstraintReferential.java | 2 +- h2/src/main/org/h2/engine/Database.java | 8 +- .../h2/expression/aggregate/Percentile.java | 4 +- h2/src/main/org/h2/index/DualIndex.java | 2 +- h2/src/main/org/h2/index/Index.java | 3 +- h2/src/main/org/h2/index/IndexCursor.java | 18 +- h2/src/main/org/h2/index/IndexSort.java | 94 ++++++ h2/src/main/org/h2/index/LinkedIndex.java | 3 +- h2/src/main/org/h2/index/MetaIndex.java | 3 +- h2/src/main/org/h2/index/RangeIndex.java | 3 +- h2/src/main/org/h2/index/RecursiveIndex.java | 3 +- .../h2/index/RegularQueryExpressionIndex.java | 6 +- h2/src/main/org/h2/index/SpatialIndex.java | 4 +- .../index/VirtualConstructedTableIndex.java | 3 +- h2/src/main/org/h2/mvstore/MVMap.java | 18 +- .../org/h2/mvstore/db/MVDelegateIndex.java | 4 +- .../org/h2/mvstore/db/MVPrimaryIndex.java | 4 +- .../org/h2/mvstore/db/MVSecondaryIndex.java | 10 +- .../org/h2/mvstore/db/MVSpatialIndex.java | 9 +- h2/src/main/org/h2/mvstore/db/MVTable.java | 4 +- .../org/h2/mvstore/tx/TransactionMap.java | 26 +- h2/src/main/org/h2/res/help.csv | 5 +- h2/src/main/org/h2/result/SortOrder.java | 22 +- h2/src/main/org/h2/table/TableFilter.java | 8 +- h2/src/test/org/h2/samples/optimizations.sql | 5 +- .../org/h2/test/db/TestOptimizations.java | 3 +- .../test/org/h2/test/db/TestTableEngines.java | 22 +- h2/src/test/org/h2/test/scripts/indexes.sql | 92 ++++-- .../org/h2/test/scripts/queries/joins.sql | 2 +- .../org/h2/test/scripts/queries/select.sql | 48 ++- .../test/org/h2/test/scripts/testScript.sql | 2 +- 36 files changed, 552 insertions(+), 208 deletions(-) create mode 100644 h2/src/main/org/h2/index/IndexSort.java diff --git a/h2/src/docsrc/html/changelog.html b/h2/src/docsrc/html/changelog.html index 618e13df7b..3aecab1769 100644 --- a/h2/src/docsrc/html/changelog.html +++ b/h2/src/docsrc/html/changelog.html @@ -21,6 +21,8 @@

Change Log

Next Version (unreleased)