druid/integration-tests-ex/tools
Gian Merlino 3d19b748fb
SQL OperatorConversions: Introduce.aggregatorBuilder, allow CAST-as-literal. (#14249)
* SQL OperatorConversions: Introduce.aggregatorBuilder, allow CAST-as-literal.

Four main changes:

1) Provide aggregatorBuilder, a more consistent way of defining the
   SqlAggFunction we need for all of our SQL aggregators. The mechanism
   is analogous to the one we already use for SQL functions
   (OperatorConversions.operatorBuilder).

2) Allow CASTs of constants to be considered as "literalOperands". This
   fixes an issue where various of our operators are defined with
   OperandTypes.LITERAL as part of their checkers, which doesn't allow
   casts. However, in these cases we generally _do_ want to allow casts.
   The important piece is that the value must be reducible to a constant,
   not that the SQL text is literally a literal.

3) Update DataSketches SQL aggregators to use the new aggregatorBuilder
   functionality. The main user-visible effect here is [2]: the aggregators
   would now accept, for example, "CAST(0.99 AS DOUBLE)" as a literal
   argument. Other aggregators could be updated in a future patch.

4) Rename "requiredOperands" to "requiredOperandCount", because the
   old name was confusing. (It rhymes with "literalOperands" but the
   arguments mean different things.)

* Adjust method calls.
2023-06-23 16:25:04 -07:00
..
src/main SQL OperatorConversions: Introduce.aggregatorBuilder, allow CAST-as-literal. (#14249) 2023-06-23 16:25:04 -07:00
README.md Add the new integration test framework (#12368) 2022-08-24 17:03:23 +05:30
pom.xml Bump up the version in pom to 27.0.0 in preparation of release (#14051) 2023-04-10 14:56:59 +05:30

README.md

Testing Tools

it-tools is a copy of extensions-core/testing-tools (module name druid-testing-tools.)

The testing tools are added to the Druid test Docker image. The druid-testing-tools module defines most such additions. However, integration-tests defines a custom node role which also must be added to the image. integration-tests uses a different mechanism to do that addition.

Here, we want a single extension for all the testing gizmos. This is a direct copy of the druid-testing-tools extension, along with a copy of the custom node role from integration-tests.

The reason this is a copy, rather than fixing up druid-testing-tools is that the existing integration-tests must continue to run and it is very difficult to change or test them. (Which is the reason for this parallel approach.) To keep backward compatibility, and to avoid changing integration-tests, we keep the prior approach and make copies here for the new approach.

The names should never clash: it-tools is only ever used within the docker-test project, and the druid-testing-tools is not included as a dependency.

Over time, once integration-tests are converted, then the druid-testing-tools module can be deprecated in favor of this one.