commit | e193b18ac23cde8bdac41e3864219ff1e9d6e0c5 | [log] [tgz] |
---|---|---|
author | Julian Hyde <jhyde@apache.org> | Thu Apr 29 16:48:34 2021 -0700 |
committer | Julian Hyde <jhyde@apache.org> | Wed May 05 16:51:30 2021 -0700 |
tree | 52f9e3a49ea4dee805b1f3b4838a71e1be3cd85f | |
parent | dfb934aba5ca830066a0d683c888070165283de6 [diff] |
DiffRepository should write a test's resource file only when it is modified Before this change, DiffRepository writes the resource file (to xxx_actual.xml) for every test case, regardless of whether its resources (e.g. SQL or plan) have changed. For large tests with lots of test cases and large resource files, such as RelOptRulesTest, that is a considerable CPU and IO cost. After this change, DiffRepository only writes the resource file if the resources change. So if RelOptRulesTest has 3 failures out of 500 tests, DiffRepository will write RelOptRulesTest_actual.xml 3 times. As a result, such tests run ~10x faster. There are a few test methods in SqlToRelConverter test that run 2 or 3 SQL statements that all produce the same plan. DiffRepository regards each SQL statement as a resource, and marks the resource file 'dirty' even though the final result is always the same. We should fix this, but it's only a minor impact on performance.
Apache Calcite is a dynamic data management framework.
It contains many of the pieces that comprise a typical database management system but omits the storage primitives. It provides an industry standard SQL parser and validator, a customisable optimizer with pluggable rules and cost functions, logical and physical algebraic operators, various transformation algorithms from SQL to algebra (and the opposite), and many adapters for executing SQL queries over Cassandra, Druid, Elasticsearch, MongoDB, Kafka, and others, with minimal configuration.
For more details, see the home page.