Details
-
New Feature
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
-
All
-
-
GreenHopper Ranking:0|i0vwqj:
-
9223372036854775807
-
Small
Description
Issue description
This issue is related to problem Wang Wei met while porting tJDBCRow component to new framework.
See comment https://jira.talendforge.org/browse/TDI-36958?focusedCommentId=432623&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-432623
tJDBCRow is a kind of hybrid component:
it could work as InputComponent or OutputComponent or MiddleComponent (maybe Virtual) depending on job design and what flows are connected to this component.
Details:
1. If there is no flows, tJDBCRow can just execute SQL query specified in Properties. For example, it could be query to create database, table.
2. If there is only input flow, tJDBCRow plays as OutputComponent. It could execute prepared statements with arguments from incoming records. For example, it could insert several records into table.
3. If there is only output flow, tJDBCRow plays as InputComponent. It could execute SQL statement and provide result set as outgoing records. For example, it could execute select query and output resulting records.
4. If there are both input and output flow, tJDBCRow plays as MiddleComponent or VirtualComponent.
Issue reason
For now, Component Framework doesn't support hybrid components. Component Framework assumes component can be either InputComponent or OutputComponent, but not both simultaneously.
Possible solutions
As for me there are 2 conceptual ways:
- Support compatibility with old components and change Component Framework to support old kind of old components (even broken one)
- Break compatibility with old components and change components according to Framework architecture
With regard to this problem 1st way means to add support of hybrid components in Component Framework.
2nd way means to split tJDBCRow to several components of different type: tJDBCRowInput, tJDBCRowOutput, tJDBCRowMiddle