NIFI-14129 Add Database Dialect Service #9640
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
NIFI-14129 Adds a
DatabaseDialectService
Controller Service interface in a newnifi-database-dialect-service-api
as a migration path the existing internalDatabaseAdapter
interface and associated implementations.The new
nifi-database-dialect-service-nar
includes aStandardDatabaseDialectService
implementation that provides a generic implementation for the minimum Statement Types of ALTER, CREATE, and SELECT.The introduction of the
DatabaseDialectService
applies to the following Processors:The service also applies to the
DatabaseParameterProvider
.This pull request provides an interim transitional strategy for moving away from the
DatabaseAdapter
to the newDatabaseDialectService
. The initial set of changes preserve existingDatabase Type
properties that useDatabaseAdapter
implementations and wraps interacts with theDatabaseAdapter
in a newDatabaseAdapterDatabaseDialectService
.Existing
Database Type
properties include a new value namedDatabase Dialect Service
that enables the dependentDatabase Dialect Service
property for Controller Service implementations.This wrapping approach avoids the need to convert existing
DatabaseAdapter
implementations as part of this change, allowing existing Processor configurations to work without changes, while also support incremental migration ofDatabaseAdapter
implementations to newDatabaseDialectService
implementations.The
DatabaseDialectService
interface has a simplified contract method namedgetStatement()
which takes aStatementRequest
and returns aStatementResponse
containing rendered SQL. TheStatementRequest
interface has standard implementations, and aQueryStatementRequest
extended interface for describing queries. ThegetSupportedStatementTypes()
provides a concise method for implementations to indicate supported statements.Changes include modifications to existing unit tests that involved direct access to Processor methods using the
DatabaseAdapter
. Existing unit and integration tests against public methods and behaviors remain in place to validate implementation changes.Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking
Pull Request Tracking
NIFI-00000
NIFI-00000
Pull Request Formatting
main
branchVerification
Please indicate the verification steps performed prior to pull request creation.
Build
mvn clean install -P contrib-check
Licensing
LICENSE
andNOTICE
filesDocumentation