25
25
import org .apache .flink .connector .redshift .internal .statement .FieldNamedRedshiftPreparedStatement ;
26
26
import org .apache .flink .connector .redshift .internal .statement .RedshiftStatement ;
27
27
import org .apache .flink .connector .redshift .options .InternalRedshiftConfigOptions ;
28
+ import org .apache .flink .connector .redshift .options .RedshiftConnectionConfigOptions ;
29
+ import org .apache .flink .connector .redshift .options .RedshiftCopyModeConfigOptions ;
30
+ import org .apache .flink .connector .redshift .options .RedshiftExecutionConfigOptions ;
28
31
import org .apache .flink .table .data .GenericRowData ;
29
32
import org .apache .flink .table .data .RowData ;
30
33
import org .apache .flink .table .types .logical .LogicalType ;
@@ -96,6 +99,9 @@ default void attemptExecuteBatch(
96
99
97
100
static RedshiftExecutor createRedshiftExecutor (
98
101
InternalRedshiftConfigOptions redshiftConfigOptions ,
102
+ RedshiftConnectionConfigOptions connectionConfigOptions ,
103
+ RedshiftExecutionConfigOptions executionConfigOptions ,
104
+ RedshiftCopyModeConfigOptions copyModeConfigOptions ,
99
105
String [] fieldNames ,
100
106
String [] primaryKeyFields ,
101
107
LogicalType [] fieldTypes ) {
@@ -104,23 +110,40 @@ static RedshiftExecutor createRedshiftExecutor(
104
110
case COPY :
105
111
LOG .info ("Create Upload Copy UPSERT Executor." );
106
112
return createCopyModeUpsertExecutor (
107
- fieldNames , primaryKeyFields , fieldTypes , redshiftConfigOptions );
113
+ fieldNames ,
114
+ primaryKeyFields ,
115
+ fieldTypes ,
116
+ connectionConfigOptions ,
117
+ executionConfigOptions ,
118
+ copyModeConfigOptions );
108
119
case JDBC :
109
120
LOG .info ("Create pure JDBC UPSERT Executor." );
110
121
return createJdbcModeUpsertExecutor (
111
- fieldNames , primaryKeyFields , fieldTypes , redshiftConfigOptions );
122
+ fieldNames ,
123
+ primaryKeyFields ,
124
+ fieldTypes ,
125
+ connectionConfigOptions ,
126
+ executionConfigOptions );
112
127
}
113
128
114
129
} else {
115
130
switch (redshiftConfigOptions .getSinkMode ()) {
116
131
case JDBC :
117
132
LOG .info ("Create pure JDBC batch Executor." );
118
133
return createJdbcModeBatchExecutor (
119
- fieldNames , fieldTypes , redshiftConfigOptions );
134
+ fieldNames ,
135
+ fieldTypes ,
136
+ connectionConfigOptions ,
137
+ executionConfigOptions );
120
138
case COPY :
121
139
LOG .info ("Create Upload Copy batch Executor." );
122
140
return createCopyModeBatchExecutor (
123
- fieldNames , fieldTypes , redshiftConfigOptions );
141
+ fieldNames ,
142
+ fieldTypes ,
143
+ redshiftConfigOptions ,
144
+ connectionConfigOptions ,
145
+ executionConfigOptions ,
146
+ copyModeConfigOptions );
124
147
}
125
148
}
126
149
throw new FlinkRuntimeException ("No correct Executor found" );
@@ -129,15 +152,26 @@ static RedshiftExecutor createRedshiftExecutor(
129
152
static RedshiftCopyModeBatchExecutor createCopyModeBatchExecutor (
130
153
String [] fieldNames ,
131
154
LogicalType [] fieldTypes ,
132
- InternalRedshiftConfigOptions redshiftConfigOptions ) {
133
- return new RedshiftCopyModeBatchExecutor (fieldNames , fieldTypes , redshiftConfigOptions );
155
+ InternalRedshiftConfigOptions redshiftConfigOptions ,
156
+ RedshiftConnectionConfigOptions connectionConfigOptions ,
157
+ RedshiftExecutionConfigOptions executionConfigOptions ,
158
+ RedshiftCopyModeConfigOptions copyModeConfigOptions ) {
159
+ return new RedshiftCopyModeBatchExecutor (
160
+ fieldNames ,
161
+ fieldTypes ,
162
+ redshiftConfigOptions ,
163
+ connectionConfigOptions ,
164
+ executionConfigOptions ,
165
+ copyModeConfigOptions );
134
166
}
135
167
136
168
static RedshiftCopyModeUpsertExecutor createCopyModeUpsertExecutor (
137
169
String [] fieldNames ,
138
170
String [] keyFields ,
139
171
LogicalType [] fieldTypes ,
140
- InternalRedshiftConfigOptions options ) {
172
+ RedshiftConnectionConfigOptions connectionConfigOptions ,
173
+ RedshiftExecutionConfigOptions executionConfigOptions ,
174
+ RedshiftCopyModeConfigOptions copyModeConfigOptions ) {
141
175
142
176
int [] delFields =
143
177
Arrays .stream (keyFields )
@@ -153,24 +187,30 @@ static RedshiftCopyModeUpsertExecutor createCopyModeUpsertExecutor(
153
187
fieldTypes ,
154
188
new RedshiftCopyModeRowConverter (delTypes ),
155
189
createExtractor (fieldTypes , delFields ),
156
- options );
190
+ connectionConfigOptions ,
191
+ executionConfigOptions ,
192
+ copyModeConfigOptions );
157
193
}
158
194
159
195
static RedshiftJdbcModeBatchExecutor createJdbcModeBatchExecutor (
160
- String [] fieldNames , LogicalType [] fieldTypes , InternalRedshiftConfigOptions options ) {
196
+ String [] fieldNames ,
197
+ LogicalType [] fieldTypes ,
198
+ RedshiftConnectionConfigOptions connectionConfigOptions ,
199
+ RedshiftExecutionConfigOptions executionConfigOptions ) {
161
200
String insertSql =
162
201
RedshiftStatement .getInsertIntoStatement (
163
- options . getConnectionConfigOptions () .getTableName (), fieldNames );
202
+ connectionConfigOptions .getTableName (), fieldNames );
164
203
RedshiftRowConverter converter = new RedshiftJdbcModeRowConverter (RowType .of (fieldTypes ));
165
- return new RedshiftJdbcModeBatchExecutor (insertSql , converter , options );
204
+ return new RedshiftJdbcModeBatchExecutor (insertSql , converter , executionConfigOptions );
166
205
}
167
206
168
207
static RedshiftJdbcModeUpsertExecutor createJdbcModeUpsertExecutor (
169
208
String [] fieldNames ,
170
209
String [] keyFields ,
171
210
LogicalType [] fieldTypes ,
172
- InternalRedshiftConfigOptions options ) {
173
- String tableName = options .getConnectionConfigOptions ().getTableName ();
211
+ RedshiftConnectionConfigOptions connectionConfigOptions ,
212
+ RedshiftExecutionConfigOptions executionConfigOptions ) {
213
+ String tableName = connectionConfigOptions .getTableName ();
174
214
String insertSql = RedshiftStatement .getInsertIntoStatement (tableName , fieldNames );
175
215
String updateSql = RedshiftStatement .getUpdateStatement (tableName , fieldNames , keyFields );
176
216
String deleteSql = RedshiftStatement .getDeleteStatement (tableName , keyFields );
@@ -200,7 +240,7 @@ static RedshiftJdbcModeUpsertExecutor createJdbcModeUpsertExecutor(
200
240
new RedshiftJdbcModeRowConverter (RowType .of (delTypes )),
201
241
createExtractor (fieldTypes , updFields ),
202
242
createExtractor (fieldTypes , delFields ),
203
- options ,
243
+ executionConfigOptions ,
204
244
fieldNames );
205
245
}
206
246
0 commit comments